From 3fadfe1246a962b0ff3d61d28fd7732d6679c494 Mon Sep 17 00:00:00 2001 From: liuchen864 <23082234@qq.com> Date: Sun, 24 Sep 2023 12:19:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=97=A0=E7=94=A8=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +- pom.xml | 2 +- sql/dm/ruoyi-vue-pro-dm8.sql | 16 +- sql/mysql/ruoyi-vue-pro.sql | 18 +- sql/oracle/ruoyi-vue-pro.sql | 14 +- sql/postgresql/ruoyi-vue-pro.sql | 16 +- sql/sqlserver/ruoyi-vue-pro.sql | 18 +- .../dto/oauth2/OAuth2CheckTokenRespDTO.java | 2 +- .../win/ssodemo/framework/core/LoginUser.java | 2 +- .../filter/TokenAuthenticationFilter.java | 2 +- .../core/handler/AccessDeniedHandlerImpl.java | 2 +- .../framework/core/util/SecurityUtils.java | 2 +- .../framework/core/util/ServletUtils.java | 2 +- .../dto/oauth2/OAuth2CheckTokenRespDTO.java | 2 +- .../win/ssodemo/framework/core/LoginUser.java | 2 +- .../filter/TokenAuthenticationFilter.java | 2 +- .../core/handler/AccessDeniedHandlerImpl.java | 2 +- .../framework/core/util/SecurityUtils.java | 2 +- .../framework/core/util/ServletUtils.java | 2 +- .../common/core/IntArrayValuable.java | 2 +- .../win/framework/common/core/KeyValue.java | 2 +- .../common/enums/CommonStatusEnum.java | 2 +- .../framework/common/enums/DocumentEnum.java | 2 +- .../framework/common/enums/TerminalEnum.java | 2 +- .../common/enums/WebFilterOrderEnum.java | 2 +- .../enums/GlobalErrorCodeConstants.java | 2 +- .../enums/ServiceErrorCodeRange.java | 2 +- .../common/util/cache/CacheUtils.java | 2 +- .../common/util/collection/ArrayUtils.java | 2 +- .../util/collection/CollectionUtils.java | 2 +- .../common/util/collection/MapUtils.java | 2 +- .../common/util/collection/SetUtils.java | 2 +- .../framework/common/util/date/DateUtils.java | 2 +- .../common/util/date/LocalDateTimeUtils.java | 2 +- .../framework/common/util/http/HttpUtils.java | 2 +- .../framework/common/util/io/FileUtils.java | 2 +- .../win/framework/common/util/io/IoUtils.java | 2 +- .../framework/common/util/json/JsonUtils.java | 2 +- .../common/util/monitor/TracerUtils.java | 2 +- .../common/util/number/MoneyUtils.java | 2 +- .../common/util/number/NumberUtils.java | 2 +- .../common/util/object/ObjectUtils.java | 2 +- .../common/util/object/PageUtils.java | 2 +- .../common/util/servlet/ServletUtils.java | 2 +- .../common/util/string/StrUtils.java | 2 +- .../util/validation/ValidationUtils.java | 2 +- .../util/collection/CollectionUtilsTest.java | 64 -- ... Boot 参数校验 Validation 入门》.md | 1 - .../config/WinBannerAutoConfiguration.java | 2 +- .../banner/core/BannerApplicationRunner.java | 2 +- .../win/framework/banner/package-info.java | 2 +- .../src/main/resources/banner.txt | 2 +- .../WinDataPermissionAutoConfiguration.java | 2 +- ...inDeptDataPermissionAutoConfiguration.java | 2 +- .../core/annotation/DataPermission.java | 2 +- .../aop/DataPermissionAnnotationAdvisor.java | 2 +- .../DataPermissionAnnotationInterceptor.java | 2 +- .../core/aop/DataPermissionContextHolder.java | 2 +- .../db/DataPermissionDatabaseInterceptor.java | 6 +- .../core/rule/DataPermissionRule.java | 2 +- .../core/rule/DataPermissionRuleFactory.java | 2 +- .../rule/DataPermissionRuleFactoryImpl.java | 2 +- .../rule/dept/DeptDataPermissionRule.java | 2 +- .../DeptDataPermissionRuleCustomizer.java | 2 +- .../core/rule/dept/package-info.java | 2 +- .../core/util/DataPermissionUtils.java | 2 +- ...taPermissionAnnotationInterceptorTest.java | 108 --- .../aop/DataPermissionContextHolderTest.java | 66 -- ...DataPermissionDatabaseInterceptorTest.java | 190 ----- ...ataPermissionDatabaseInterceptorTest2.java | 533 ------------ .../DataPermissionRuleFactoryImplTest.java | 145 ---- .../rule/dept/DeptDataPermissionRuleTest.java | 238 ------ .../core/util/DataPermissionUtilsTest.java | 15 - .../dict/core/util/DictFrameworkUtils.java | 2 +- .../core/util/DictFrameworkUtilsTest.java | 48 -- .../config/WinErrorCodeConfiguration.java | 2 +- .../win/framework/errorcode/package-info.java | 2 +- .../java/com/win/framework/ip/core/Area.java | 2 +- .../framework/ip/core/enums/AreaTypeEnum.java | 2 +- .../framework/ip/core/utils/AreaUtils.java | 2 +- .../com/win/framework/ip/package-info.java | 2 +- .../ip/core/utils/AreaUtilsTest.java | 36 - .../framework/ip/core/utils/IPUtilsTest.java | 47 -- .../core/annotations/OperateLog.java | 2 +- .../operatelog/core/aop/OperateLogAspect.java | 2 +- .../operatelog/core/service/OperateLog.java | 2 +- .../service/OperateLogFrameworkService.java | 2 +- .../OperateLogFrameworkServiceImpl.java | 2 +- .../operatelog/core/util/OperateLogUtils.java | 2 +- .../framework/operatelog/package-info.java | 2 +- .../sms/config/WinSmsAutoConfiguration.java | 2 +- .../sms/core/client/SmsCodeMapping.java | 2 +- .../sms/core/client/SmsCommonResult.java | 2 +- .../core/client/dto/SmsReceiveRespDTO.java | 2 +- .../sms/core/client/dto/SmsSendRespDTO.java | 2 +- .../core/client/dto/SmsTemplateRespDTO.java | 2 +- .../client/impl/aliyun/AliyunSmsClient.java | 2 +- .../impl/aliyun/AliyunSmsCodeMapping.java | 2 +- .../impl/debug/DebugDingTalkCodeMapping.java | 2 +- .../impl/debug/DebugDingTalkSmsClient.java | 2 +- .../enums/SmsFrameworkErrorCodeConstants.java | 2 +- .../enums/SmsTemplateAuditStatusEnum.java | 2 +- .../AliyunSmsClientIntegrationTest.java | 55 -- ...DebugDingTalkSmsClientIntegrationTest.java | 46 - .../impl/aliyun/AliyunSmsClientTest.java | 225 ----- .../impl/aliyun/AliyunSmsCodeMappingTest.java | 43 - .../impl/tencent/TencentSmsClientTest.java | 222 ----- .../tencent/TencentSmsCodeMappingTest.java | 50 -- .../tenant/config/TenantProperties.java | 2 +- .../tenant/core/aop/TenantIgnore.java | 2 +- .../tenant/core/aop/TenantIgnoreAspect.java | 2 +- .../core/context/TenantContextHolder.java | 2 +- .../tenant/core/db/TenantBaseDO.java | 2 +- .../core/db/TenantDatabaseInterceptor.java | 2 +- .../tenant/core/job/TenantJobAspect.java | 2 +- .../mq/TenantRedisMessageInterceptor.java | 2 +- .../security/TenantSecurityWebFilter.java | 2 +- .../core/service/TenantFrameworkService.java | 2 +- .../service/TenantFrameworkServiceImpl.java | 2 +- .../tenant/core/util/TenantUtils.java | 2 +- .../core/web/TenantContextWebFilter.java | 2 +- .../framework/tenant/core/job/TestJob.java | 28 - .../win/framework/weixin/WxMpServiceTest.java | 34 - .../resources/application.yml | 11 - .../core/enums/CaptchaRedisKeyConstants.java | 2 +- .../desensitize/core/DesensitizeTest.java | 98 --- .../desensitize/core/annotation/Address.java | 30 - .../core/handler/AddressHandler.java | 19 - .../excel/core/convert/DictConvert.java | 2 +- .../excel/core/convert/JsonConvert.java | 2 +- .../excel/core/convert/MoneyConvert.java | 2 +- .../framework/excel/core/util/ExcelUtils.java | 2 +- .../file/config/WinFileAutoConfiguration.java | 2 +- .../file/core/client/AbstractFileClient.java | 2 +- .../file/core/client/FileClient.java | 2 +- .../file/core/client/FileClientConfig.java | 2 +- .../core/client/FileClientFactoryImpl.java | 2 +- .../file/core/client/db/DBFileClient.java | 2 +- .../core/client/db/DBFileClientConfig.java | 2 +- .../client/db/DBFileContentFrameworkDAO.java | 2 +- .../file/core/client/ftp/FtpFileClient.java | 2 +- .../core/client/ftp/FtpFileClientConfig.java | 2 +- .../core/client/local/LocalFileClient.java | 2 +- .../client/local/LocalFileClientConfig.java | 2 +- .../file/core/client/s3/S3FileClient.java | 2 +- .../core/client/s3/S3FileClientConfig.java | 2 +- .../file/core/client/sftp/SftpFileClient.java | 2 +- .../client/sftp/SftpFileClientConfig.java | 2 +- .../file/core/enums/FileStorageEnum.java | 2 +- .../file/core/utils/FileTypeUtils.java | 2 +- .../framework/file/config/package-info.java | 4 - .../core/client/ftp/FtpFileClientTest.java | 39 - .../client/local/LocalFileClientTest.java | 27 - .../file/core/client/s3/S3FileClientTest.java | 117 --- .../core/client/sftp/SftpFileClientTest.java | 37 - .../file/core/enums/package-info.java | 4 - .../flowable/core/util/FlowableUtils.java | 2 +- .../quartz/core/handler/JobHandler.java | 2 +- .../core/handler/JobHandlerInvoker.java | 2 +- .../core/scheduler/SchedulerManager.java | 2 +- .../core/service/JobLogFrameworkService.java | 2 +- .../framework/quartz/core/util/CronUtils.java | 2 +- ...道 Spring Boot 定时任务入门》.md | 1 - ...道 Spring Boot 异步任务入门》.md | 1 - .../config/WinMetricsAutoConfiguration.java | 2 +- .../tracer/core/filter/TraceFilter.java | 2 +- .../core/util/TracerFrameworkUtils.java | 2 +- .../win/framework/tracer/package-info.java | 2 +- ...pring Boot 监控工具 Admin 入门》.md | 1 - ...ng Boot 监控端点 Actuator 入门》.md | 1 - ... Boot 链路追踪 SkyWalking 入门》.md | 1 - .../mq/config/WinMQAutoConfiguration.java | 2 +- .../framework/mq/core/RedisMQTemplate.java | 2 +- .../interceptor/RedisMessageInterceptor.java | 2 +- .../mq/core/message/AbstractRedisMessage.java | 2 +- .../core/pubsub/AbstractChannelMessage.java | 2 +- .../AbstractChannelMessageListener.java | 2 +- .../mq/core/stream/AbstractStreamMessage.java | 2 +- .../stream/AbstractStreamMessageListener.java | 2 +- ...efaultStreamMessageListenerContainerX.java | 2 +- .../WinDataSourceAutoConfiguration.java | 2 +- .../core/filter/DruidAdRemoveFilter.java | 2 +- .../IdTypeEnvironmentPostProcessor.java | 2 +- .../config/WinMybatisAutoConfiguration.java | 2 +- .../mybatis/core/dataobject/BaseDO.java | 2 +- .../mybatis/core/enums/SqlConstants.java | 2 +- .../mybatis/core/type/EncryptTypeHandler.java | 2 +- .../core/type/JsonLongSetTypeHandler.java | 2 +- .../core/type/LongListTypeHandler.java | 2 +- .../mybatis/core/util/JdbcUtils.java | 2 +- ...《芋道 Spring Boot MyBatis 入门》.md | 1 - ...多数据源(读写分离)入门》.md | 1 - ...Spring Boot 数据库连接池入门》.md | 1 - .../core/annotation/Idempotent.java | 2 +- .../idempotent/core/aop/IdempotentAspect.java | 2 +- .../keyresolver/IdempotentKeyResolver.java | 2 +- .../impl/DefaultIdempotentKeyResolver.java | 2 +- .../impl/ExpressionIdempotentKeyResolver.java | 2 +- .../core/redis/IdempotentRedisDAO.java | 2 +- .../lock4j/core/Lock4jRedisKeyConstants.java | 2 +- .../redis/core/TimeoutRedisCacheManager.java | 2 +- .../《芋道 Spring Boot Cache 入门》.md | 1 - .../《芋道 Spring Boot Redis 入门》.md | 1 - .../config/AuthorizeRequestsCustomizer.java | 2 +- .../config/WinSecurityAutoConfiguration.java | 2 +- .../WinWebSecurityConfigurerAdapter.java | 2 +- .../framework/security/core/LoginUser.java | 2 +- .../core/annotations/PreAuthenticated.java | 2 +- ...eadLocalSecurityContextHolderStrategy.java | 2 +- .../filter/TokenAuthenticationFilter.java | 2 +- .../core/handler/AccessDeniedHandlerImpl.java | 2 +- .../service/SecurityFrameworkService.java | 2 +- .../service/SecurityFrameworkServiceImpl.java | 2 +- .../core/util/SecurityFrameworkUtils.java | 2 +- .../win/framework/security/package-info.java | 2 +- ... 安全框架 Spring Security 入门》.md | 2 - .../test/config/RedisTestConfiguration.java | 2 +- .../SqlInitializationTestConfiguration.java | 2 +- .../test/core/ut/BaseDbAndRedisUnitTest.java | 2 +- .../test/core/ut/BaseDbUnitTest.java | 2 +- .../test/core/ut/BaseMockitoUnitTest.java | 2 +- .../test/core/ut/BaseRedisUnitTest.java | 2 +- .../framework/test/core/util/AssertUtils.java | 2 +- .../framework/test/core/util/RandomUtils.java | 2 +- ...Spring Boot 单元测试 Test 入门》.md | 1 - .../core/filter/ApiAccessLogFilter.java | 2 +- .../apilog/core/service/ApiAccessLog.java | 2 +- .../service/ApiAccessLogFrameworkService.java | 2 +- .../ApiAccessLogFrameworkServiceImpl.java | 2 +- .../apilog/core/service/ApiErrorLog.java | 2 +- .../service/ApiErrorLogFrameworkService.java | 2 +- .../ApiErrorLogFrameworkServiceImpl.java | 2 +- .../win/framework/apilog/package-info.java | 2 +- .../swagger/config/SwaggerProperties.java | 2 +- .../config/WinSwaggerAutoConfiguration.java | 2 +- .../win/framework/swagger/package-info.java | 2 +- .../web/core/filter/ApiRequestFilter.java | 2 +- .../core/filter/CacheRequestBodyFilter.java | 2 +- .../core/filter/CacheRequestBodyWrapper.java | 2 +- .../framework/web/core/filter/DemoFilter.java | 2 +- .../core/handler/GlobalExceptionHandler.java | 2 +- .../web/core/util/WebFrameworkUtils.java | 2 +- .../framework/xss/config/XssProperties.java | 2 +- .../framework/xss/core/filter/XssFilter.java | 2 +- .../xss/core/filter/XssRequestWrapper.java | 2 +- ...Boot API 接口文档 Swagger 入门》.md | 1 - ...芋道 Spring Boot SpringMVC 入门》.md | 1 - .../bpm/api/task/BpmProcessInstanceApi.java | 2 +- .../dto/BpmProcessInstanceCreateReqDTO.java | 2 +- .../module/bpm/enums/DictTypeConstants.java | 2 +- .../definition/BpmModelFormTypeEnum.java | 2 +- .../definition/BpmTaskAssignRuleTypeEnum.java | 2 +- .../definition/BpmTaskRuleScriptEnum.java | 2 +- .../bpm/enums/message/BpmMessageEnum.java | 2 +- .../BpmProcessInstanceDeleteReasonEnum.java | 2 +- .../task/BpmProcessInstanceStatusEnum.java | 2 +- .../api/task/BpmProcessInstanceApiImpl.java | 2 +- .../definition/vo/form/BpmFormBaseVO.java | 2 +- .../definition/vo/form/BpmFormPageReqVO.java | 2 +- .../vo/form/BpmFormSimpleRespVO.java | 2 +- .../vo/group/BpmUserGroupBaseVO.java | 4 +- .../vo/group/BpmUserGroupPageReqVO.java | 2 +- .../vo/group/BpmUserGroupSimpleRespVO.java | 2 +- .../definition/vo/model/BpmModelBaseVO.java | 2 +- .../vo/model/BpmModelCreateReqVO.java | 2 +- .../vo/model/BpmModelPageReqVO.java | 2 +- .../vo/model/BpmModelUpdateReqVO.java | 2 +- .../process/BpmProcessDefinitionRespVO.java | 2 +- .../vo/rule/BpmTaskAssignRuleRespVO.java | 2 +- .../admin/oa/BpmOALeaveController.java | 2 +- .../admin/oa/vo/BpmOALeaveBaseVO.java | 2 +- .../admin/oa/vo/BpmOALeavePageReqVO.java | 2 +- .../BpmProcessInstanceMyPageReqVO.java | 2 +- .../BpmProcessInstancePageItemRespVO.java | 4 +- .../vo/instance/BpmProcessInstanceRespVO.java | 2 +- .../task/vo/task/BpmTaskDonePageReqVO.java | 2 +- .../vo/task/BpmTaskTodoPageItemRespVO.java | 4 +- .../task/vo/task/BpmTaskTodoPageReqVO.java | 2 +- .../definition/BpmUserGroupConvert.java | 2 +- .../bpm/convert/task/BpmActivityConvert.java | 2 +- .../task/BpmProcessInstanceConvert.java | 2 +- .../bpm/convert/task/BpmTaskConvert.java | 2 +- .../dal/dataobject/definition/BpmFormDO.java | 2 +- .../definition/BpmProcessDefinitionExtDO.java | 2 +- .../definition/BpmTaskAssignRuleDO.java | 2 +- .../dataobject/definition/BpmUserGroupDO.java | 2 +- .../bpm/dal/dataobject/oa/BpmOALeaveDO.java | 2 +- .../task/BpmProcessInstanceExtDO.java | 2 +- .../bpm/dal/dataobject/task/BpmTaskExtDO.java | 2 +- .../mysql/definition/BpmUserGroupMapper.java | 2 +- .../bpm/dal/mysql/oa/BpmOALeaveMapper.java | 2 +- .../event/BpmProcessInstanceResultEvent.java | 2 +- ...BpmProcessInstanceResultEventListener.java | 2 +- ...pmProcessInstanceResultEventPublisher.java | 2 +- .../bpm/core/event/package-info.java | 2 +- .../bpm/framework/bpm/package-info.java | 2 +- .../behavior/BpmActivityBehaviorFactory.java | 2 +- .../behavior/BpmUserTaskActivityBehavior.java | 2 +- .../behavior/script/BpmTaskAssignScript.java | 2 +- .../BpmTaskAssignLeaderAbstractScript.java | 2 +- .../impl/BpmTaskAssignLeaderX1Script.java | 2 +- .../impl/BpmTaskAssignLeaderX2Script.java | 2 +- .../impl/BpmTaskAssignStartUserScript.java | 2 +- .../module/bpm/framework/package-info.java | 2 +- .../web/config/BpmWebConfiguration.java | 2 +- .../definition/BpmModelServiceImpl.java | 2 +- .../BpmProcessDefinitionService.java | 2 +- .../BpmProcessDefinitionServiceImpl.java | 2 +- .../definition/BpmTaskAssignRuleService.java | 2 +- .../definition/BpmUserGroupService.java | 2 +- .../definition/BpmUserGroupServiceImpl.java | 2 +- .../definition/dto/BpmFormFieldRespDTO.java | 2 +- .../dto/BpmModelMetaInfoRespDTO.java | 2 +- .../service/message/BpmMessageService.java | 2 +- .../message/BpmMessageServiceImpl.java | 2 +- .../bpm/service/oa/BpmOALeaveService.java | 2 +- .../bpm/service/oa/BpmOALeaveServiceImpl.java | 2 +- .../oa/listener/BpmOALeaveResultListener.java | 2 +- .../bpm/service/task/BpmActivityService.java | 2 +- .../service/task/BpmActivityServiceImpl.java | 2 +- .../task/BpmProcessInstanceService.java | 2 +- .../task/BpmProcessInstanceServiceImpl.java | 2 +- .../bpm/service/task/BpmTaskService.java | 2 +- .../bpm/service/task/BpmTaskServiceImpl.java | 2 +- .../impl/BpmTaskAssignLeaderX2ScriptTest.java | 104 --- .../definition/BpmFormServiceTest.java | 145 ---- .../BpmTaskAssignRuleServiceImplTest.java | 227 ----- .../definition/BpmUserGroupServiceTest.java | 131 --- .../test/resources/application-unit-test.yaml | 4 +- .../win/module/infra/api/file/FileApi.java | 2 +- .../infra/api/logger/ApiAccessLogApi.java | 2 +- .../infra/api/logger/ApiErrorLogApi.java | 2 +- .../logger/dto/ApiAccessLogCreateReqDTO.java | 2 +- .../logger/dto/ApiErrorLogCreateReqDTO.java | 2 +- .../module/infra/enums/DictTypeConstants.java | 2 +- .../module/infra/api/file/FileApiImpl.java | 2 +- .../infra/api/logger/ApiAccessLogApiImpl.java | 2 +- .../infra/api/logger/ApiErrorLogApiImpl.java | 2 +- .../admin/codegen/CodegenController.java | 2 +- .../codegen/vo/table/CodegenTableBaseVO.java | 4 +- .../vo/table/CodegenTablePageReqVO.java | 2 +- .../codegen/vo/table/DatabaseTableRespVO.java | 2 +- .../admin/job/vo/job/JobExcelVO.java | 2 +- .../vo/apiaccesslog/ApiAccessLogBaseVO.java | 2 +- .../vo/apiaccesslog/ApiAccessLogExcelVO.java | 2 +- .../vo/apierrorlog/ApiErrorLogExcelVO.java | 2 +- .../admin/test/vo/TestDemoExcelVO.java | 2 +- .../convert/db/DataSourceConfigConvert.java | 2 +- .../infra/convert/file/FileConfigConvert.java | 2 +- .../module/infra/convert/job/JobConvert.java | 2 +- .../convert/logger/ApiAccessLogConvert.java | 2 +- .../convert/logger/ApiErrorLogConvert.java | 2 +- .../infra/convert/test/TestDemoConvert.java | 2 +- .../dataobject/codegen/CodegenColumnDO.java | 2 +- .../dataobject/codegen/CodegenTableDO.java | 2 +- .../infra/dal/dataobject/config/ConfigDO.java | 2 +- .../dal/dataobject/db/DataSourceConfigDO.java | 2 +- .../dal/dataobject/file/FileConfigDO.java | 2 +- .../dal/dataobject/file/FileContentDO.java | 2 +- .../infra/dal/dataobject/file/FileDO.java | 2 +- .../infra/dal/dataobject/job/JobDO.java | 2 +- .../infra/dal/dataobject/job/JobLogDO.java | 2 +- .../dal/dataobject/logger/ApiAccessLogDO.java | 2 +- .../dal/dataobject/logger/ApiErrorLogDO.java | 2 +- .../infra/dal/dataobject/test/TestDemoDO.java | 2 +- .../dal/mysql/db/DataSourceConfigMapper.java | 2 +- .../infra/dal/mysql/file/FileMapper.java | 2 +- .../infra/dal/mysql/job/JobLogMapper.java | 2 +- .../module/infra/dal/mysql/job/JobMapper.java | 2 +- .../dal/mysql/logger/ApiAccessLogMapper.java | 2 +- .../dal/mysql/logger/ApiErrorLogMapper.java | 2 +- .../infra/dal/mysql/test/TestDemoMapper.java | 2 +- .../enums/codegen/CodegenFrontTypeEnum.java | 2 +- .../infra/enums/codegen/CodegenSceneEnum.java | 2 +- .../codegen/CodegenTemplateTypeEnum.java | 2 +- .../infra/enums/job/JobLogStatusEnum.java | 2 +- .../module/infra/enums/job/JobStatusEnum.java | 2 +- .../logger/ApiErrorLogProcessStatusEnum.java | 2 +- .../module/infra/framework/package-info.java | 2 +- .../web/config/InfraWebConfiguration.java | 2 +- .../infra/service/codegen/CodegenService.java | 2 +- .../service/codegen/CodegenServiceImpl.java | 2 +- .../service/codegen/inner/CodegenEngine.java | 2 +- .../infra/service/config/ConfigService.java | 2 +- .../service/db/DataSourceConfigService.java | 2 +- .../db/DataSourceConfigServiceImpl.java | 2 +- .../service/db/DatabaseTableService.java | 2 +- .../service/db/DatabaseTableServiceImpl.java | 2 +- .../infra/service/file/FileConfigService.java | 2 +- .../service/file/FileConfigServiceImpl.java | 2 +- .../infra/service/file/FileService.java | 2 +- .../infra/service/file/FileServiceImpl.java | 2 +- .../infra/service/job/JobLogService.java | 2 +- .../infra/service/job/JobLogServiceImpl.java | 2 +- .../module/infra/service/job/JobService.java | 2 +- .../infra/service/job/JobServiceImpl.java | 2 +- .../service/logger/ApiAccessLogService.java | 2 +- .../logger/ApiAccessLogServiceImpl.java | 2 +- .../service/logger/ApiErrorLogService.java | 2 +- .../logger/ApiErrorLogServiceImpl.java | 2 +- .../infra/service/test/TestDemoService.java | 2 +- .../service/test/TestDemoServiceImpl.java | 2 +- .../mysql/codegen/SchemaColumnMapperTest.java | 23 - .../module/infra/dal/mysql/package-info.java | 4 - .../win/module/infra/dal/package-info.java | 4 - .../service/codegen/CodegenEngineTest.java | 34 - .../service/codegen/CodegenSQLParserTest.java | 29 - .../codegen/CodegenServiceImplTest.java | 20 - .../module/infra/service/package-info.java | 4 - .../test/BaseDbAndRedisIntegrationTest.java | 38 - .../infra/test/BaseRedisIntegrationTest.java | 23 - .../service/DefaultDatabaseQueryTest.java | 37 - .../service/config/ConfigServiceImplTest.java | 253 ------ .../db/DataSourceConfigServiceImplTest.java | 205 ----- .../db/DatabaseTableServiceImplTest.java | 89 -- .../file/FileConfigServiceImplTest.java | 280 ------- .../service/file/FileServiceImplTest.java | 143 ---- .../service/job/JobLogServiceImplTest.java | 203 ----- .../infra/service/job/JobServiceImplTest.java | 290 ------- .../logger/ApiAccessLogServiceImplTest.java | 133 --- .../logger/ApiErrorLogServiceImplTest.java | 184 ---- .../service/test/TestDemoServiceImplTest.java | 186 ----- .../test/resources/application-unit-test.yaml | 4 +- .../dataobject/goview/GoViewProjectDO.java | 2 +- .../config/JmReportConfiguration.java | 2 +- .../module/report/framework/package-info.java | 2 +- .../service/goview/GoViewDataService.java | 2 +- .../service/goview/GoViewDataServiceImpl.java | 2 +- .../service/goview/GoViewProjectService.java | 2 +- .../goview/GoViewProjectServiceImpl.java | 2 +- .../goview/GoViewDataServiceImplTest.java | 58 -- .../goview/GoViewProjectServiceImplTest.java | 135 --- .../test/resources/application-unit-test.yaml | 4 +- .../win/module/system/api/dept/DeptApi.java | 2 +- .../win/module/system/api/dept/PostApi.java | 2 +- .../system/api/dept/dto/DeptRespDTO.java | 2 +- .../module/system/api/dict/DictDataApi.java | 2 +- .../system/api/dict/dto/DictDataRespDTO.java | 2 +- .../system/api/errorcode/ErrorCodeApi.java | 2 +- .../api/errorcode/dto/ErrorCodeRespDTO.java | 2 +- .../module/system/api/logger/LoginLogApi.java | 2 +- .../system/api/logger/OperateLogApi.java | 2 +- .../api/logger/dto/LoginLogCreateReqDTO.java | 2 +- .../module/system/api/mail/MailSendApi.java | 2 +- .../system/api/oauth2/OAuth2TokenApi.java | 2 +- .../dto/OAuth2AccessTokenCheckRespDTO.java | 2 +- .../dto/OAuth2AccessTokenCreateReqDTO.java | 2 +- .../oauth2/dto/OAuth2AccessTokenRespDTO.java | 2 +- .../system/api/permission/PermissionApi.java | 2 +- .../module/system/api/permission/RoleApi.java | 2 +- .../dto/DeptDataPermissionRespDTO.java | 2 +- .../win/module/system/api/sms/SmsCodeApi.java | 2 +- .../win/module/system/api/sms/SmsSendApi.java | 2 +- .../api/sms/dto/code/SmsCodeSendReqDTO.java | 2 +- .../api/sms/dto/code/SmsCodeUseReqDTO.java | 2 +- .../sms/dto/code/SmsCodeValidateReqDTO.java | 2 +- .../dto/send/SmsSendSingleToUserReqDTO.java | 2 +- .../system/api/social/SocialUserApi.java | 2 +- .../api/social/dto/SocialUserBindReqDTO.java | 2 +- .../api/social/dto/SocialUserRespDTO.java | 2 +- .../social/dto/SocialUserUnbindReqDTO.java | 2 +- .../module/system/api/tenant/TenantApi.java | 2 +- .../module/system/api/user/AdminUserApi.java | 2 +- .../system/api/user/dto/AdminUserRespDTO.java | 2 +- .../system/enums/DictTypeConstants.java | 2 +- .../module/system/enums/common/SexEnum.java | 2 +- .../system/enums/notice/NoticeTypeEnum.java | 2 +- .../enums/oauth2/OAuth2ClientConstants.java | 2 +- .../enums/oauth2/OAuth2GrantTypeEnum.java | 2 +- .../enums/permission/DataScopeEnum.java | 2 +- .../system/enums/permission/MenuTypeEnum.java | 2 +- .../enums/sms/SmsReceiveStatusEnum.java | 2 +- .../module/system/enums/sms/SmsSceneEnum.java | 2 +- .../system/enums/sms/SmsTemplateTypeEnum.java | 2 +- .../system/enums/social/SocialTypeEnum.java | 2 +- .../module/system/api/dept/DeptApiImpl.java | 2 +- .../module/system/api/dept/PostApiImpl.java | 2 +- .../system/api/dict/DictDataApiImpl.java | 2 +- .../api/errorcode/ErrorCodeApiImpl.java | 2 +- .../system/api/logger/LoginLogApiImpl.java | 2 +- .../system/api/logger/OperateLogApiImpl.java | 2 +- .../system/api/oauth2/OAuth2TokenApiImpl.java | 2 +- .../api/permission/PermissionApiImpl.java | 2 +- .../system/api/permission/RoleApiImpl.java | 2 +- .../module/system/api/sms/SmsCodeApiImpl.java | 2 +- .../module/system/api/sms/SmsSendApiImpl.java | 2 +- .../system/api/social/SocialUserApiImpl.java | 2 +- .../system/api/tenant/TenantApiImpl.java | 2 +- .../system/api/user/AdminUserApiImpl.java | 2 +- .../admin/auth/vo/AuthMenuRespVO.java | 4 +- .../auth/vo/AuthPermissionInfoRespVO.java | 6 +- .../admin/captcha/CaptchaController.java | 2 +- .../admin/dept/vo/dept/DeptBaseVO.java | 2 +- .../admin/dept/vo/dept/DeptListReqVO.java | 2 +- .../admin/dept/vo/dept/DeptSimpleRespVO.java | 2 +- .../admin/dept/vo/post/PostExportReqVO.java | 2 +- .../admin/dept/vo/post/PostListReqVO.java | 2 +- .../admin/dept/vo/post/PostPageReqVO.java | 2 +- .../admin/dept/vo/post/PostSimpleRespVO.java | 2 +- .../admin/dict/vo/data/DictDataBaseVO.java | 2 +- .../dict/vo/data/DictDataExportReqVO.java | 2 +- .../admin/dict/vo/data/DictDataPageReqVO.java | 2 +- .../dict/vo/type/DictTypeExportReqVO.java | 2 +- .../admin/dict/vo/type/DictTypePageReqVO.java | 2 +- .../dict/vo/type/DictTypeSimpleRespVO.java | 2 +- .../admin/errorcode/vo/ErrorCodeExcelVO.java | 2 +- .../vo/loginlog/LoginLogExportReqVO.java | 2 +- .../logger/vo/loginlog/LoginLogPageReqVO.java | 2 +- .../vo/operatelog/OperateLogBaseVO.java | 2 +- .../vo/operatelog/OperateLogExportReqVO.java | 2 +- .../vo/operatelog/OperateLogPageReqVO.java | 2 +- .../admin/notice/vo/NoticePageReqVO.java | 2 +- .../admin/oauth2/OAuth2ClientController.http | 2 +- .../admin/oauth2/OAuth2OpenController.java | 2 +- .../admin/oauth2/OAuth2UserController.http | 2 +- .../admin/oauth2/OAuth2UserController.java | 2 +- .../oauth2/vo/user/OAuth2UserInfoRespVO.java | 2 +- .../permission/PermissionController.java | 2 +- .../admin/permission/vo/menu/MenuBaseVO.java | 2 +- .../permission/vo/menu/MenuListReqVO.java | 2 +- .../permission/vo/menu/MenuSimpleRespVO.java | 2 +- .../permission/vo/role/RoleExportReqVO.java | 2 +- .../permission/vo/role/RolePageReqVO.java | 2 +- .../permission/vo/role/RoleSimpleRespVO.java | 2 +- .../sms/vo/channel/SmsChannelBaseVO.java | 2 +- .../sms/vo/channel/SmsChannelPageReqVO.java | 2 +- .../vo/channel/SmsChannelSimpleRespVO.java | 2 +- .../admin/sms/vo/log/SmsLogExcelVO.java | 2 +- .../sms/vo/template/SmsTemplateExcelVO.java | 2 +- .../admin/tenant/TenantController.http | 4 +- .../admin/tenant/vo/tenant/TenantBaseVO.java | 2 +- .../admin/tenant/vo/tenant/TenantExcelVO.java | 2 +- .../tenant/vo/tenant/TenantExportReqVO.java | 2 +- .../tenant/vo/tenant/TenantPageReqVO.java | 2 +- .../controller/admin/user/UserController.java | 2 +- .../admin/user/vo/user/UserSimpleRespVO.java | 2 +- .../convert/auth/OAuth2ClientConvert.java | 2 +- .../convert/errorcode/ErrorCodeConvert.java | 2 +- .../system/convert/sms/SmsChannelConvert.java | 2 +- .../system/convert/sms/SmsLogConvert.java | 2 +- .../system/convert/tenant/TenantConvert.java | 2 +- .../convert/tenant/TenantPackageConvert.java | 2 +- .../system/dal/dataobject/dept/DeptDO.java | 2 +- .../dal/dataobject/errorcode/ErrorCodeDO.java | 2 +- .../dal/dataobject/logger/LoginLogDO.java | 2 +- .../dal/dataobject/logger/OperateLogDO.java | 4 +- .../oauth2/OAuth2AccessTokenDO.java | 2 +- .../dataobject/oauth2/OAuth2ApproveDO.java | 2 +- .../dal/dataobject/oauth2/OAuth2ClientDO.java | 2 +- .../dal/dataobject/oauth2/OAuth2CodeDO.java | 2 +- .../oauth2/OAuth2RefreshTokenDO.java | 2 +- .../system/dal/dataobject/sms/SmsCodeDO.java | 2 +- .../dataobject/social/SocialUserBindDO.java | 2 +- .../dal/dataobject/tenant/TenantDO.java | 2 +- .../dataobject/tenant/TenantPackageDO.java | 2 +- .../dal/dataobject/user/AdminUserDO.java | 2 +- .../dal/mysql/oauth2/OAuth2ClientMapper.java | 2 +- .../system/dal/mysql/tenant/TenantMapper.java | 2 +- .../dal/mysql/tenant/TenantPackageMapper.java | 2 +- .../system/dal/redis/RedisKeyConstants.java | 2 +- .../oauth2/OAuth2AccessTokenRedisDAO.java | 2 +- .../config/DataPermissionConfiguration.java | 2 +- .../module/system/framework/package-info.java | 2 +- .../web/config/SystemWebConfiguration.java | 2 +- .../mq/consumer/mail/MailSendConsumer.java | 2 +- .../mq/message/mail/MailSendMessage.java | 2 +- .../system/mq/message/sms/SmsSendMessage.java | 2 +- .../system/service/auth/AdminAuthService.java | 2 +- .../service/auth/AdminAuthServiceImpl.java | 2 +- .../system/service/dept/DeptService.java | 2 +- .../system/service/dept/DeptServiceImpl.java | 2 +- .../system/service/dept/PostService.java | 2 +- .../system/service/dept/PostServiceImpl.java | 2 +- .../system/service/dict/DictTypeService.java | 2 +- .../service/dict/DictTypeServiceImpl.java | 2 +- .../service/errorcode/ErrorCodeService.java | 2 +- .../service/logger/OperateLogService.java | 2 +- .../system/service/member/MemberService.java | 2 +- .../service/member/MemberServiceImpl.java | 2 +- .../service/notice/NoticeServiceImpl.java | 2 +- .../service/oauth2/OAuth2ApproveService.java | 2 +- .../oauth2/OAuth2ApproveServiceImpl.java | 2 +- .../service/oauth2/OAuth2ClientService.java | 2 +- .../oauth2/OAuth2ClientServiceImpl.java | 2 +- .../service/oauth2/OAuth2CodeService.java | 2 +- .../service/oauth2/OAuth2CodeServiceImpl.java | 2 +- .../service/oauth2/OAuth2GrantService.java | 2 +- .../oauth2/OAuth2GrantServiceImpl.java | 2 +- .../service/oauth2/OAuth2TokenService.java | 2 +- .../oauth2/OAuth2TokenServiceImpl.java | 2 +- .../service/permission/MenuService.java | 2 +- .../service/permission/MenuServiceImpl.java | 2 +- .../service/permission/PermissionService.java | 2 +- .../permission/PermissionServiceImpl.java | 2 +- .../service/permission/RoleService.java | 2 +- .../service/permission/RoleServiceImpl.java | 2 +- .../permission/bo/RoleCreateReqBO.java | 2 +- .../system/service/sms/SmsCodeService.java | 2 +- .../service/sms/SmsCodeServiceImpl.java | 2 +- .../system/service/sms/SmsSendService.java | 2 +- .../service/sms/SmsSendServiceImpl.java | 2 +- .../service/social/SocialUserService.java | 2 +- .../service/social/SocialUserServiceImpl.java | 2 +- .../service/tenant/TenantPackageService.java | 2 +- .../tenant/TenantPackageServiceImpl.java | 2 +- .../system/service/tenant/TenantService.java | 2 +- .../service/tenant/TenantServiceImpl.java | 2 +- .../tenant/handler/TenantInfoHandler.java | 2 +- .../tenant/handler/TenantMenuHandler.java | 2 +- .../system/service/user/AdminUserService.java | 2 +- .../service/user/AdminUserServiceImpl.java | 2 +- .../system/util/collection/SimpleTrie.java | 2 +- .../system/util/oauth2/OAuth2Utils.java | 2 +- .../system/job/SchedulerManagerTest.java | 53 -- .../win/module/system/mq/RedisStreamTest.java | 62 -- .../module/system/service/package-info.java | 4 - .../sms/SmsServiceIntegrationTest.java | 55 -- .../test/BaseDbAndRedisIntegrationTest.java | 38 - .../system/test/BaseRedisIntegrationTest.java | 23 - .../application-integration-test.yaml | 108 --- .../oauth2/OAuth2OpenControllerTest.java | 337 -------- .../auth/AdminAuthServiceImplTest.java | 372 --------- .../service/dept/DeptServiceImplTest.java | 297 ------- .../service/dept/PostServiceImplTest.java | 254 ------ .../service/dict/DictDataServiceImplTest.java | 371 --------- .../service/dict/DictTypeServiceImplTest.java | 304 ------- .../errorcode/ErrorCodeServiceTest.java | 328 -------- .../logger/LoginLogServiceImplTest.java | 110 --- .../logger/OperateLogServiceImplTest.java | 155 ---- .../mail/MailAccountServiceImplTest.java | 179 ---- .../service/mail/MailLogServiceImplTest.java | 183 ---- .../service/mail/MailSendServiceImplTest.java | 332 -------- .../mail/MailTemplateServiceImplTest.java | 215 ----- .../service/notice/NoticeServiceImplTest.java | 130 --- .../notify/NotifyMessageServiceImplTest.java | 280 ------- .../notify/NotifySendServiceImplTest.java | 176 ---- .../notify/NotifyTemplateServiceImplTest.java | 178 ---- .../oauth2/OAuth2ApproveServiceImplTest.java | 269 ------ .../oauth2/OAuth2ClientServiceImplTest.java | 220 ----- .../oauth2/OAuth2CodeServiceImplTest.java | 99 --- .../oauth2/OAuth2GrantServiceImplTest.java | 173 ---- .../oauth2/OAuth2TokenServiceImplTest.java | 289 ------- .../permission/MenuServiceImplTest.java | 295 ------- .../permission/PermissionServiceTest.java | 527 ------------ .../permission/RoleServiceImplTest.java | 386 --------- .../SensitiveWordServiceImplTest.java | 267 ------ .../service/sms/SmsChannelServiceTest.java | 236 ------ .../service/sms/SmsCodeServiceImplTest.java | 209 ----- .../service/sms/SmsLogServiceImplTest.java | 239 ------ .../service/sms/SmsSendServiceImplTest.java | 285 ------- .../sms/SmsTemplateServiceImplTest.java | 339 -------- .../social/SocialUserServiceImplTest.java | 259 ------ .../tenant/TenantPackageServiceImplTest.java | 235 ------ .../service/tenant/TenantServiceImplTest.java | 484 ----------- .../user/AdminUserServiceImplTest.java | 784 ------------------ .../test/resources/application-unit-test.yaml | 4 +- .../com/win/server/WinServerApplication.java | 2 +- .../server/controller/DefaultController.java | 2 +- .../src/main/resources/application-dev.yaml | 4 +- .../src/main/resources/application-prod.yaml | 4 +- .../src/main/resources/application-test.yaml | 4 +- .../src/main/resources/application.yaml | 6 +- .../src/test/java/com/win/ProjectReactor.java | 2 +- 663 files changed, 608 insertions(+), 16324 deletions(-) delete mode 100644 win-framework/win-common/src/test/java/com/win/framework/common/util/collection/CollectionUtilsTest.java delete mode 100644 win-framework/win-common/《芋道 Spring Boot 参数校验 Validation 入门》.md delete mode 100644 win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/aop/DataPermissionAnnotationInterceptorTest.java delete mode 100644 win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/aop/DataPermissionContextHolderTest.java delete mode 100644 win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/db/DataPermissionDatabaseInterceptorTest.java delete mode 100644 win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/db/DataPermissionDatabaseInterceptorTest2.java delete mode 100644 win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/rule/DataPermissionRuleFactoryImplTest.java delete mode 100644 win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/rule/dept/DeptDataPermissionRuleTest.java delete mode 100644 win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/util/DataPermissionUtilsTest.java delete mode 100644 win-framework/win-spring-boot-starter-biz-dict/src/test/java/com/win/framework/dict/core/util/DictFrameworkUtilsTest.java delete mode 100644 win-framework/win-spring-boot-starter-biz-ip/src/test/java/com/win/framework/ip/core/utils/AreaUtilsTest.java delete mode 100644 win-framework/win-spring-boot-starter-biz-ip/src/test/java/com/win/framework/ip/core/utils/IPUtilsTest.java delete mode 100644 win-framework/win-spring-boot-starter-biz-sms/src/test-integration/java/com/win/framework/sms/core/client/impl/aliyun/AliyunSmsClientIntegrationTest.java delete mode 100644 win-framework/win-spring-boot-starter-biz-sms/src/test-integration/java/com/win/framework/sms/core/client/impl/debug/DebugDingTalkSmsClientIntegrationTest.java delete mode 100644 win-framework/win-spring-boot-starter-biz-sms/src/test/java/com/win/framework/sms/core/client/impl/aliyun/AliyunSmsClientTest.java delete mode 100644 win-framework/win-spring-boot-starter-biz-sms/src/test/java/com/win/framework/sms/core/client/impl/aliyun/AliyunSmsCodeMappingTest.java delete mode 100644 win-framework/win-spring-boot-starter-biz-sms/src/test/java/com/win/framework/sms/core/client/impl/tencent/TencentSmsClientTest.java delete mode 100644 win-framework/win-spring-boot-starter-biz-sms/src/test/java/com/win/framework/sms/core/client/impl/tencent/TencentSmsCodeMappingTest.java delete mode 100644 win-framework/win-spring-boot-starter-biz-tenant/src/test/java/com/win/framework/tenant/core/job/TestJob.java delete mode 100644 win-framework/win-spring-boot-starter-biz-weixin/src/test-integration/java/com/win/framework/weixin/WxMpServiceTest.java delete mode 100644 win-framework/win-spring-boot-starter-biz-weixin/src/test-integration/resources/application.yml delete mode 100644 win-framework/win-spring-boot-starter-desensitize/src/test/java/com/win/framework/desensitize/core/DesensitizeTest.java delete mode 100644 win-framework/win-spring-boot-starter-desensitize/src/test/java/com/win/framework/desensitize/core/annotation/Address.java delete mode 100644 win-framework/win-spring-boot-starter-desensitize/src/test/java/com/win/framework/desensitize/core/handler/AddressHandler.java delete mode 100644 win-framework/win-spring-boot-starter-file/src/test/java/com/win/framework/file/config/package-info.java delete mode 100644 win-framework/win-spring-boot-starter-file/src/test/java/com/win/framework/file/core/client/ftp/FtpFileClientTest.java delete mode 100644 win-framework/win-spring-boot-starter-file/src/test/java/com/win/framework/file/core/client/local/LocalFileClientTest.java delete mode 100644 win-framework/win-spring-boot-starter-file/src/test/java/com/win/framework/file/core/client/s3/S3FileClientTest.java delete mode 100644 win-framework/win-spring-boot-starter-file/src/test/java/com/win/framework/file/core/client/sftp/SftpFileClientTest.java delete mode 100644 win-framework/win-spring-boot-starter-file/src/test/java/com/win/framework/file/core/enums/package-info.java delete mode 100644 win-framework/win-spring-boot-starter-job/《芋道 Spring Boot 定时任务入门》.md delete mode 100644 win-framework/win-spring-boot-starter-job/《芋道 Spring Boot 异步任务入门》.md delete mode 100644 win-framework/win-spring-boot-starter-monitor/《芋道 Spring Boot 监控工具 Admin 入门》.md delete mode 100644 win-framework/win-spring-boot-starter-monitor/《芋道 Spring Boot 监控端点 Actuator 入门》.md delete mode 100644 win-framework/win-spring-boot-starter-monitor/《芋道 Spring Boot 链路追踪 SkyWalking 入门》.md delete mode 100644 win-framework/win-spring-boot-starter-mybatis/《芋道 Spring Boot MyBatis 入门》.md delete mode 100644 win-framework/win-spring-boot-starter-mybatis/《芋道 Spring Boot 多数据源(读写分离)入门》.md delete mode 100644 win-framework/win-spring-boot-starter-mybatis/《芋道 Spring Boot 数据库连接池入门》.md delete mode 100644 win-framework/win-spring-boot-starter-redis/《芋道 Spring Boot Cache 入门》.md delete mode 100644 win-framework/win-spring-boot-starter-redis/《芋道 Spring Boot Redis 入门》.md delete mode 100644 win-framework/win-spring-boot-starter-security/《芋道 Spring Boot 安全框架 Spring Security 入门》.md delete mode 100644 win-framework/win-spring-boot-starter-test/《芋道 Spring Boot 单元测试 Test 入门》.md delete mode 100644 win-framework/win-spring-boot-starter-web/《芋道 Spring Boot API 接口文档 Swagger 入门》.md delete mode 100644 win-framework/win-spring-boot-starter-web/《芋道 Spring Boot SpringMVC 入门》.md delete mode 100644 win-module-bpm/win-module-bpm-biz/src/test/java/com/win/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskAssignLeaderX2ScriptTest.java delete mode 100644 win-module-bpm/win-module-bpm-biz/src/test/java/com/win/module/bpm/service/definition/BpmFormServiceTest.java delete mode 100644 win-module-bpm/win-module-bpm-biz/src/test/java/com/win/module/bpm/service/definition/BpmTaskAssignRuleServiceImplTest.java delete mode 100644 win-module-bpm/win-module-bpm-biz/src/test/java/com/win/module/bpm/service/definition/BpmUserGroupServiceTest.java delete mode 100644 win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/dal/mysql/codegen/SchemaColumnMapperTest.java delete mode 100644 win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/dal/mysql/package-info.java delete mode 100644 win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/dal/package-info.java delete mode 100644 win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/service/codegen/CodegenEngineTest.java delete mode 100644 win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/service/codegen/CodegenSQLParserTest.java delete mode 100644 win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/service/codegen/CodegenServiceImplTest.java delete mode 100644 win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/service/package-info.java delete mode 100644 win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/test/BaseDbAndRedisIntegrationTest.java delete mode 100644 win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/test/BaseRedisIntegrationTest.java delete mode 100644 win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/DefaultDatabaseQueryTest.java delete mode 100644 win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/config/ConfigServiceImplTest.java delete mode 100644 win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/db/DataSourceConfigServiceImplTest.java delete mode 100644 win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/db/DatabaseTableServiceImplTest.java delete mode 100644 win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/file/FileConfigServiceImplTest.java delete mode 100644 win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/file/FileServiceImplTest.java delete mode 100644 win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/job/JobLogServiceImplTest.java delete mode 100644 win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/job/JobServiceImplTest.java delete mode 100644 win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/logger/ApiAccessLogServiceImplTest.java delete mode 100644 win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/logger/ApiErrorLogServiceImplTest.java delete mode 100644 win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/test/TestDemoServiceImplTest.java delete mode 100644 win-module-report/win-module-report-biz/src/test/java/com/win/module/report/service/goview/GoViewDataServiceImplTest.java delete mode 100644 win-module-report/win-module-report-biz/src/test/java/com/win/module/report/service/goview/GoViewProjectServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test-integration/java/com/win/module/system/job/SchedulerManagerTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test-integration/java/com/win/module/system/mq/RedisStreamTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test-integration/java/com/win/module/system/service/package-info.java delete mode 100644 win-module-system/win-module-system-biz/src/test-integration/java/com/win/module/system/service/sms/SmsServiceIntegrationTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test-integration/java/com/win/module/system/test/BaseDbAndRedisIntegrationTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test-integration/java/com/win/module/system/test/BaseRedisIntegrationTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test-integration/resources/application-integration-test.yaml delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/controller/admin/oauth2/OAuth2OpenControllerTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/auth/AdminAuthServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/dept/DeptServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/dept/PostServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/dict/DictDataServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/dict/DictTypeServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/errorcode/ErrorCodeServiceTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/logger/LoginLogServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/logger/OperateLogServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/mail/MailAccountServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/mail/MailLogServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/mail/MailSendServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/mail/MailTemplateServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/notice/NoticeServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/notify/NotifyMessageServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/notify/NotifySendServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/notify/NotifyTemplateServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/oauth2/OAuth2ApproveServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/oauth2/OAuth2ClientServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/oauth2/OAuth2CodeServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/oauth2/OAuth2GrantServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/oauth2/OAuth2TokenServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/permission/MenuServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/permission/PermissionServiceTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/permission/RoleServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/sensitiveword/SensitiveWordServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/sms/SmsChannelServiceTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/sms/SmsCodeServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/sms/SmsLogServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/sms/SmsSendServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/sms/SmsTemplateServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/social/SocialUserServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/tenant/TenantPackageServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/tenant/TenantServiceImplTest.java delete mode 100644 win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/user/AdminUserServiceImplTest.java diff --git a/README.md b/README.md index a793ad2b..b2cf3c75 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ ## 🐯 平台简介 -**芋道**,以开发者为中心,打造中国第一流的快速开发平台,全部开源,个人与企业可 100% 免费使用。 +**闻荫**,以开发者为中心,打造中国第一流的快速开发平台,全部开源,个人与企业可 100% 免费使用。 > 有任何问题,或者想要的功能,可以在 _Issues_ 中提给艿艿。 > @@ -220,7 +220,7 @@ ![功能图](/.image/common/mall-preview.png) -_前端基于 crmeb uniapp 经过授权重构,优化代码实现,接入芋道快速开发平台_ +_前端基于 crmeb uniapp 经过授权重构,优化代码实现,接入闻荫快速开发平台_ 演示地址: diff --git a/pom.xml b/pom.xml index 28baa845..335b97b4 100644 --- a/pom.xml +++ b/pom.xml @@ -26,7 +26,7 @@ ${project.artifactId} - 芋道项目基础脚手架 + 闻荫项目基础脚手架 https://github.com/YunaiV/ruoyi-vue-pro diff --git a/sql/dm/ruoyi-vue-pro-dm8.sql b/sql/dm/ruoyi-vue-pro-dm8.sql index d0eba1b1..c8a217ee 100644 --- a/sql/dm/ruoyi-vue-pro-dm8.sql +++ b/sql/dm/ruoyi-vue-pro-dm8.sql @@ -1215,7 +1215,7 @@ INSERT INTO "RUOYI_VUE_PRO"."QRTZ_SCHEDULER_STATE"("SCHED_NAME","INSTANCE_NAME", INSERT INTO "RUOYI_VUE_PRO"."QRTZ_TRIGGERS"("SCHED_NAME","TRIGGER_NAME","TRIGGER_GROUP","JOB_NAME","JOB_GROUP","DESCRIPTION","NEXT_FIRE_TIME","PREV_FIRE_TIME","PRIORITY","TRIGGER_STATE","TRIGGER_TYPE","START_TIME","END_TIME","CALENDAR_NAME","MISFIRE_INSTR","JOB_DATA") VALUES('schedulerName','payNotifyJob','DEFAULT','payNotifyJob','DEFAULT',null,1677076638000,1677076637000,5,'WAITING','CRON',1635294882000,0,null,0,0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000037400114A4F425F48414E444C45525F504152414D707400124A4F425F52455452595F494E54455256414C737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B02000078700000000074000F4A4F425F52455452595F434F554E5471007E000B7800); SET IDENTITY_INSERT "RUOYI_VUE_PRO"."SYSTEM_DEPT" ON; -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_DEPT"("ID","NAME","PARENT_ID","SORT","LEADER_USER_ID","PHONE","EMAIL","STATUS","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED","TENANT_ID") VALUES(100,'芋道源码',0,0,1,'15888888888','ry@qq.com',0,'admin','2021-01-05 17:03:47','1','2022-06-19 00:29:10',0,1); +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_DEPT"("ID","NAME","PARENT_ID","SORT","LEADER_USER_ID","PHONE","EMAIL","STATUS","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED","TENANT_ID") VALUES(100,'闻荫源码',0,0,1,'15888888888','ry@qq.com',0,'admin','2021-01-05 17:03:47','1','2022-06-19 00:29:10',0,1); INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_DEPT"("ID","NAME","PARENT_ID","SORT","LEADER_USER_ID","PHONE","EMAIL","STATUS","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED","TENANT_ID") VALUES(101,'深圳总公司',100,1,104,'15888888888','ry@qq.com',0,'admin','2021-01-05 17:03:47','1','2022-05-16 20:25:23',0,1); INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_DEPT"("ID","NAME","PARENT_ID","SORT","LEADER_USER_ID","PHONE","EMAIL","STATUS","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED","TENANT_ID") VALUES(102,'长沙分公司',100,2,null,'15888888888','ry@qq.com',0,'admin','2021-01-05 17:03:47','','2021-12-15 05:01:40',0,1); INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_DEPT"("ID","NAME","PARENT_ID","SORT","LEADER_USER_ID","PHONE","EMAIL","STATUS","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED","TENANT_ID") VALUES(103,'研发部门',101,1,104,'15888888888','ry@qq.com',0,'admin','2021-01-05 17:03:47','103','2022-01-14 01:04:14',0,1); @@ -1991,7 +1991,7 @@ INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT" SET IDENTITY_INSERT "RUOYI_VUE_PRO"."SYSTEM_MENU" OFF; SET IDENTITY_INSERT "RUOYI_VUE_PRO"."SYSTEM_NOTICE" ON; -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_NOTICE"("ID","TITLE","CONTENT","TYPE","STATUS","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED","TENANT_ID") VALUES(1,'芋道的公众','

新版本内容133

',1,0,'admin','2021-01-05 17:03:48','1','2022-05-04 21:00:20',0,1); +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_NOTICE"("ID","TITLE","CONTENT","TYPE","STATUS","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED","TENANT_ID") VALUES(1,'闻荫的公众','

新版本内容133

',1,0,'admin','2021-01-05 17:03:48','1','2022-05-04 21:00:20',0,1); INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_NOTICE"("ID","TITLE","CONTENT","TYPE","STATUS","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED","TENANT_ID") VALUES(2,'维护通知:2018-07-01 若依系统凌晨维护','

维护内容

',2,1,'admin','2021-01-05 17:03:48','1','2022-05-11 12:34:24',0,1); INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_NOTICE"("ID","TITLE","CONTENT","TYPE","STATUS","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED","TENANT_ID") VALUES(4,'我是测试标题','

哈哈哈哈123

',1,0,'110','2022-02-22 01:01:25','110','2022-02-22 01:01:46',0,121); @@ -4068,7 +4068,7 @@ SET IDENTITY_INSERT "RUOYI_VUE_PRO"."SYSTEM_OAUTH2_ACCESS_TOKEN" OFF; SET IDENTITY_INSERT "RUOYI_VUE_PRO"."SYSTEM_OAUTH2_APPROVE" ON; SET IDENTITY_INSERT "RUOYI_VUE_PRO"."SYSTEM_OAUTH2_APPROVE" OFF; SET IDENTITY_INSERT "RUOYI_VUE_PRO"."SYSTEM_OAUTH2_CLIENT" ON; -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_OAUTH2_CLIENT"("ID","CLIENT_ID","SECRET","NAME","LOGO","DESCRIPTION","STATUS","ACCESS_TOKEN_VALIDITY_SECONDS","REFRESH_TOKEN_VALIDITY_SECONDS","REDIRECT_URIS","AUTHORIZED_GRANT_TYPES","SCOPES","AUTO_APPROVE_SCOPES","AUTHORITIES","RESOURCE_IDS","ADDITIONAL_INFORMATION","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(1,'default','admin123','芋道源码','http://test.win.iocoder.cn/a5e2e244368878a366b516805a4aabf1.png','我是描述',0,1800,43200,'["https://www.iocoder.cn","https://doc.iocoder.cn"]','["password","authorization_code","implicit","refresh_token"]','["user.read","user.write"]','[]','["user.read","user.write"]','[]','{}','1','2022-05-11 21:47:12','1','2022-07-05 16:23:52',0); +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_OAUTH2_CLIENT"("ID","CLIENT_ID","SECRET","NAME","LOGO","DESCRIPTION","STATUS","ACCESS_TOKEN_VALIDITY_SECONDS","REFRESH_TOKEN_VALIDITY_SECONDS","REDIRECT_URIS","AUTHORIZED_GRANT_TYPES","SCOPES","AUTO_APPROVE_SCOPES","AUTHORITIES","RESOURCE_IDS","ADDITIONAL_INFORMATION","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(1,'default','admin123','闻荫源码','http://test.win.iocoder.cn/a5e2e244368878a366b516805a4aabf1.png','我是描述',0,1800,43200,'["https://www.iocoder.cn","https://doc.iocoder.cn"]','["password","authorization_code","implicit","refresh_token"]','["user.read","user.write"]','[]','["user.read","user.write"]','[]','{}','1','2022-05-11 21:47:12','1','2022-07-05 16:23:52',0); INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_OAUTH2_CLIENT"("ID","CLIENT_ID","SECRET","NAME","LOGO","DESCRIPTION","STATUS","ACCESS_TOKEN_VALIDITY_SECONDS","REFRESH_TOKEN_VALIDITY_SECONDS","REDIRECT_URIS","AUTHORIZED_GRANT_TYPES","SCOPES","AUTO_APPROVE_SCOPES","AUTHORITIES","RESOURCE_IDS","ADDITIONAL_INFORMATION","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(40,'test','test2','biubiu','http://test.win.iocoder.cn/277a899d573723f1fcdfb57340f00379.png',null,0,1800,43200,'["https://www.iocoder.cn"]','["password","authorization_code","implicit"]','["user_info","projects"]','["user_info"]','[]','[]','{}','1','2022-05-12 00:28:20','1','2022-06-19 00:26:13',0); INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_OAUTH2_CLIENT"("ID","CLIENT_ID","SECRET","NAME","LOGO","DESCRIPTION","STATUS","ACCESS_TOKEN_VALIDITY_SECONDS","REFRESH_TOKEN_VALIDITY_SECONDS","REDIRECT_URIS","AUTHORIZED_GRANT_TYPES","SCOPES","AUTO_APPROVE_SCOPES","AUTHORITIES","RESOURCE_IDS","ADDITIONAL_INFORMATION","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(41,'win-sso-demo-by-code','test','基于授权码模式,如何实现 SSO 单点登录?','http://test.win.iocoder.cn/fe4ed36596adad5120036ef61a6d0153654544d44af8dd4ad3ffe8f759933d6f.png',null,0,1800,43200,'["http://127.0.0.1:18080"]','["authorization_code","refresh_token"]','["user.read","user.write"]','[]','[]','[]',null,'1','2022-09-29 13:28:31','1','2022-09-29 13:28:31',0); INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_OAUTH2_CLIENT"("ID","CLIENT_ID","SECRET","NAME","LOGO","DESCRIPTION","STATUS","ACCESS_TOKEN_VALIDITY_SECONDS","REFRESH_TOKEN_VALIDITY_SECONDS","REDIRECT_URIS","AUTHORIZED_GRANT_TYPES","SCOPES","AUTO_APPROVE_SCOPES","AUTHORITIES","RESOURCE_IDS","ADDITIONAL_INFORMATION","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(42,'win-sso-demo-by-password','test','基于密码模式,如何实现 SSO 单点登录?','http://test.win.iocoder.cn/604bdc695e13b3b22745be704d1f2aa8ee05c5f26f9fead6d1ca49005afbc857.jpeg',null,0,1800,43200,'["http://127.0.0.1:18080"]','["password","refresh_token"]','["user.read","user.write"]','[]','[]','[]',null,'1','2022-10-04 17:40:16','1','2022-10-04 20:31:21',0); @@ -4943,9 +4943,9 @@ SET IDENTITY_INSERT "RUOYI_VUE_PRO"."SYSTEM_SOCIAL_USER" OFF; SET IDENTITY_INSERT "RUOYI_VUE_PRO"."SYSTEM_SOCIAL_USER_BIND" ON; SET IDENTITY_INSERT "RUOYI_VUE_PRO"."SYSTEM_SOCIAL_USER_BIND" OFF; SET IDENTITY_INSERT "RUOYI_VUE_PRO"."SYSTEM_TENANT" ON; -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_TENANT"("ID","NAME","CONTACT_USER_ID","CONTACT_NAME","CONTACT_MOBILE","STATUS","DOMAIN","PACKAGE_ID","EXPIRE_TIME","ACCOUNT_COUNT","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(1,'芋道源码',null,'芋艿','17321315478',0,'https://www.iocoder.cn',0,'2099-02-19 17:14:16',9999,'1','2021-01-05 17:03:47','1','2022-02-23 12:15:11',0); +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_TENANT"("ID","NAME","CONTACT_USER_ID","CONTACT_NAME","CONTACT_MOBILE","STATUS","DOMAIN","PACKAGE_ID","EXPIRE_TIME","ACCOUNT_COUNT","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(1,'闻荫源码',null,'芋艿','17321315478',0,'https://www.iocoder.cn',0,'2099-02-19 17:14:16',9999,'1','2021-01-05 17:03:47','1','2022-02-23 12:15:11',0); INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_TENANT"("ID","NAME","CONTACT_USER_ID","CONTACT_NAME","CONTACT_MOBILE","STATUS","DOMAIN","PACKAGE_ID","EXPIRE_TIME","ACCOUNT_COUNT","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(121,'小租户',110,'小王2','15601691300',0,'http://www.iocoder.cn',111,'2024-03-11 00:00:00',20,'1','2022-02-22 00:56:14','1','2022-05-17 10:03:59',0); -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_TENANT"("ID","NAME","CONTACT_USER_ID","CONTACT_NAME","CONTACT_MOBILE","STATUS","DOMAIN","PACKAGE_ID","EXPIRE_TIME","ACCOUNT_COUNT","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(122,'测试租户',113,'芋道','15601691300',0,'https://www.iocoder.cn',111,'2022-04-30 00:00:00',50,'1','2022-03-07 21:37:58','1','2022-03-07 21:37:58',0); +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_TENANT"("ID","NAME","CONTACT_USER_ID","CONTACT_NAME","CONTACT_MOBILE","STATUS","DOMAIN","PACKAGE_ID","EXPIRE_TIME","ACCOUNT_COUNT","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(122,'测试租户',113,'闻荫','15601691300',0,'https://www.iocoder.cn',111,'2022-04-30 00:00:00',50,'1','2022-03-07 21:37:58','1','2022-03-07 21:37:58',0); SET IDENTITY_INSERT "RUOYI_VUE_PRO"."SYSTEM_TENANT" OFF; SET IDENTITY_INSERT "RUOYI_VUE_PRO"."SYSTEM_TENANT_PACKAGE" ON; @@ -4953,8 +4953,8 @@ INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_TENANT_PACKAGE"("ID","NAME","STATUS","REMARK SET IDENTITY_INSERT "RUOYI_VUE_PRO"."SYSTEM_TENANT_PACKAGE" OFF; SET IDENTITY_INSERT "RUOYI_VUE_PRO"."SYSTEM_USERS" ON; -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_USERS"("ID","USERNAME","PASSWORD","NICKNAME","REMARK","DEPT_ID","POST_IDS","EMAIL","MOBILE","SEX","AVATAR","STATUS","LOGIN_IP","LOGIN_DATE","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED","TENANT_ID") VALUES(1,'admin','$2a$10$mRMIYLDtRHlf6.9ipiqH1.Z.bh/R9dO9d5iHiGYPigi6r5KOoR2Wm','芋道源码','管理员',103,'[1]','aoteman@126.com','15612345678',1,'http://test.win.iocoder.cn/e1fdd7271685ec143a0900681606406621717a666ad0b2798b096df41422b32f.png',0,'0:0:0:0:0:0:0:1','2023-04-13 23:09:16','admin','2021-01-05 17:03:47',null,'2023-04-13 23:09:16',0,1); -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_USERS"("ID","USERNAME","PASSWORD","NICKNAME","REMARK","DEPT_ID","POST_IDS","EMAIL","MOBILE","SEX","AVATAR","STATUS","LOGIN_IP","LOGIN_DATE","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED","TENANT_ID") VALUES(100,'win','$2a$10$11U48RhyJ5pSBYWSn12AD./ld671.ycSzJHbyrtpeoMeYiw31eo8a','芋道','不要吓我',104,'[1]','win@iocoder.cn','15601691300',1,'',1,'127.0.0.1','2022-07-09 23:03:33','','2021-01-07 09:07:17',null,'2022-07-09 23:03:33',0,1); +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_USERS"("ID","USERNAME","PASSWORD","NICKNAME","REMARK","DEPT_ID","POST_IDS","EMAIL","MOBILE","SEX","AVATAR","STATUS","LOGIN_IP","LOGIN_DATE","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED","TENANT_ID") VALUES(1,'admin','$2a$10$mRMIYLDtRHlf6.9ipiqH1.Z.bh/R9dO9d5iHiGYPigi6r5KOoR2Wm','闻荫源码','管理员',103,'[1]','aoteman@126.com','15612345678',1,'http://test.win.iocoder.cn/e1fdd7271685ec143a0900681606406621717a666ad0b2798b096df41422b32f.png',0,'0:0:0:0:0:0:0:1','2023-04-13 23:09:16','admin','2021-01-05 17:03:47',null,'2023-04-13 23:09:16',0,1); +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_USERS"("ID","USERNAME","PASSWORD","NICKNAME","REMARK","DEPT_ID","POST_IDS","EMAIL","MOBILE","SEX","AVATAR","STATUS","LOGIN_IP","LOGIN_DATE","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED","TENANT_ID") VALUES(100,'win','$2a$10$11U48RhyJ5pSBYWSn12AD./ld671.ycSzJHbyrtpeoMeYiw31eo8a','闻荫','不要吓我',104,'[1]','win@iocoder.cn','15601691300',1,'',1,'127.0.0.1','2022-07-09 23:03:33','','2021-01-07 09:07:17',null,'2022-07-09 23:03:33',0,1); INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_USERS"("ID","USERNAME","PASSWORD","NICKNAME","REMARK","DEPT_ID","POST_IDS","EMAIL","MOBILE","SEX","AVATAR","STATUS","LOGIN_IP","LOGIN_DATE","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED","TENANT_ID") VALUES(103,'yuanma','$2a$10$YMpimV4T6BtDhIaA8jSW.u8UTGBeGhc/qwXP4oxoMr4mOw9.qttt6','源码',null,106,null,'yuanma@iocoder.cn','15601701300',0,'',0,'127.0.0.1','2022-07-08 01:26:27','','2021-01-13 23:50:35',null,'2022-07-08 01:26:27',0,1); INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_USERS"("ID","USERNAME","PASSWORD","NICKNAME","REMARK","DEPT_ID","POST_IDS","EMAIL","MOBILE","SEX","AVATAR","STATUS","LOGIN_IP","LOGIN_DATE","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED","TENANT_ID") VALUES(104,'test','$2a$10$GP8zvqHB//TekuzYZSBYAuBQJiNq1.fxQVDYJ.uBCOnWCtDVKE4H6','测试号',null,107,'[1,2]','111@qq.com','15601691200',1,'',0,'127.0.0.1','2022-05-28 15:43:17','','2021-01-21 02:13:53',null,'2022-07-09 09:00:33',0,1); INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_USERS"("ID","USERNAME","PASSWORD","NICKNAME","REMARK","DEPT_ID","POST_IDS","EMAIL","MOBILE","SEX","AVATAR","STATUS","LOGIN_IP","LOGIN_DATE","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED","TENANT_ID") VALUES(107,'admin107','$2a$10$dYOOBKMO93v/.ReCqzyFg.o67Tqk.bbc2bhrpyBGkIw9aypCtr2pm','芋艿',null,null,null,'','15601691300',0,'',0,'',null,'1','2022-02-20 22:59:33','1','2022-02-27 08:26:51',0,118); @@ -4963,7 +4963,7 @@ INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_USERS"("ID","USERNAME","PASSWORD","NICKNAME" INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_USERS"("ID","USERNAME","PASSWORD","NICKNAME","REMARK","DEPT_ID","POST_IDS","EMAIL","MOBILE","SEX","AVATAR","STATUS","LOGIN_IP","LOGIN_DATE","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED","TENANT_ID") VALUES(110,'admin110','$2a$10$mRMIYLDtRHlf6.9ipiqH1.Z.bh/R9dO9d5iHiGYPigi6r5KOoR2Wm','小王',null,null,null,'','15601691300',0,'',0,'127.0.0.1','2022-09-25 22:47:33','1','2022-02-22 00:56:14',null,'2022-09-25 22:47:33',0,121); INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_USERS"("ID","USERNAME","PASSWORD","NICKNAME","REMARK","DEPT_ID","POST_IDS","EMAIL","MOBILE","SEX","AVATAR","STATUS","LOGIN_IP","LOGIN_DATE","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED","TENANT_ID") VALUES(111,'test','$2a$10$mExveopHUx9Q4QiLtAzhDeH3n4/QlNLzEsM4AqgxKrU.ciUZDXZCy','测试用户',null,null,'[]','','',0,'',0,'',null,'110','2022-02-23 13:14:33','110','2022-02-23 13:14:33',0,121); INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_USERS"("ID","USERNAME","PASSWORD","NICKNAME","REMARK","DEPT_ID","POST_IDS","EMAIL","MOBILE","SEX","AVATAR","STATUS","LOGIN_IP","LOGIN_DATE","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED","TENANT_ID") VALUES(112,'newobject','$2a$10$3alwklxqfq8/hKoW6oUV0OJp0IdQpBDauLy4633SpUjrRsStl6kMa','新对象',null,100,'[]','','',1,'',0,'0:0:0:0:0:0:0:1','2023-02-10 13:48:13','1','2022-02-23 19:08:03',null,'2023-02-10 13:48:13',0,1); -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_USERS"("ID","USERNAME","PASSWORD","NICKNAME","REMARK","DEPT_ID","POST_IDS","EMAIL","MOBILE","SEX","AVATAR","STATUS","LOGIN_IP","LOGIN_DATE","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED","TENANT_ID") VALUES(113,'aoteman','$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO','芋道',null,null,null,'','15601691300',0,'',0,'127.0.0.1','2022-03-19 18:38:51','1','2022-03-07 21:37:58',null,'2022-03-19 18:38:51',0,122); +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_USERS"("ID","USERNAME","PASSWORD","NICKNAME","REMARK","DEPT_ID","POST_IDS","EMAIL","MOBILE","SEX","AVATAR","STATUS","LOGIN_IP","LOGIN_DATE","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED","TENANT_ID") VALUES(113,'aoteman','$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO','闻荫',null,null,null,'','15601691300',0,'',0,'127.0.0.1','2022-03-19 18:38:51','1','2022-03-07 21:37:58',null,'2022-03-19 18:38:51',0,122); INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_USERS"("ID","USERNAME","PASSWORD","NICKNAME","REMARK","DEPT_ID","POST_IDS","EMAIL","MOBILE","SEX","AVATAR","STATUS","LOGIN_IP","LOGIN_DATE","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED","TENANT_ID") VALUES(114,'hrmgr','$2a$10$TR4eybBioGRhBmDBWkqWLO6NIh3mzYa8KBKDDB5woiGYFVlRAi.fu','hr 小姐姐',null,null,'[3]','','',0,'',0,'127.0.0.1','2022-03-19 22:15:43','1','2022-03-19 21:50:58',null,'2022-03-19 22:15:43',0,1); INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_USERS"("ID","USERNAME","PASSWORD","NICKNAME","REMARK","DEPT_ID","POST_IDS","EMAIL","MOBILE","SEX","AVATAR","STATUS","LOGIN_IP","LOGIN_DATE","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED","TENANT_ID") VALUES(115,'aotemane','$2a$10$/WCwGHu1eq0wOVDd/u8HweJ0gJCHyLS6T7ndCqI8UXZAQom1etk2e','1','11',101,'[]','','',1,'',0,'',null,'1','2022-04-30 02:55:43','1','2022-06-22 13:34:58',0,1); INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_USERS"("ID","USERNAME","PASSWORD","NICKNAME","REMARK","DEPT_ID","POST_IDS","EMAIL","MOBILE","SEX","AVATAR","STATUS","LOGIN_IP","LOGIN_DATE","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED","TENANT_ID") VALUES(116,'15601691302','$2a$10$L5C4S0U6adBWMvFv1Wwl4.DI/NwYS3WIfLj5Q.Naqr5II8CmqsDZ6','小豆',null,null,null,'','',0,'',0,'',null,'1','2022-05-17 10:07:10','1','2022-05-17 10:07:10',0,124); diff --git a/sql/mysql/ruoyi-vue-pro.sql b/sql/mysql/ruoyi-vue-pro.sql index 3fa7df38..4732199b 100644 --- a/sql/mysql/ruoyi-vue-pro.sql +++ b/sql/mysql/ruoyi-vue-pro.sql @@ -689,7 +689,7 @@ CREATE TABLE `member_address` ( -- Records of member_address -- ---------------------------- BEGIN; -INSERT INTO `member_address` (`id`, `user_id`, `name`, `mobile`, `area_id`, `detail_address`, `default_status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (21, 247, 'yunai', '15601691300', 140302, '芋道源码 233 号 666 室', b'1', '1', '2022-08-01 22:46:35', '247', '2023-06-26 19:47:46', b'0', 1); +INSERT INTO `member_address` (`id`, `user_id`, `name`, `mobile`, `area_id`, `detail_address`, `default_status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (21, 247, 'yunai', '15601691300', 140302, '闻荫源码 233 号 666 室', b'1', '1', '2022-08-01 22:46:35', '247', '2023-06-26 19:47:46', b'0', 1); INSERT INTO `member_address` (`id`, `user_id`, `name`, `mobile`, `area_id`, `detail_address`, `default_status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (23, 247, '测试', '15601691300', 120103, '13232312', b'0', '247', '2023-06-26 19:47:40', '247', '2023-06-26 19:47:46', b'0', 1); COMMIT; @@ -1025,7 +1025,7 @@ CREATE TABLE `system_dept` ( -- Records of system_dept -- ---------------------------- BEGIN; -INSERT INTO `system_dept` (`id`, `name`, `parent_id`, `sort`, `leader_user_id`, `phone`, `email`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (100, '芋道源码', 0, 0, 1, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '1', '2022-06-19 00:29:10', b'0', 1); +INSERT INTO `system_dept` (`id`, `name`, `parent_id`, `sort`, `leader_user_id`, `phone`, `email`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (100, '闻荫源码', 0, 0, 1, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '1', '2022-06-19 00:29:10', b'0', 1); INSERT INTO `system_dept` (`id`, `name`, `parent_id`, `sort`, `leader_user_id`, `phone`, `email`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (101, '深圳总公司', 100, 1, 104, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '1', '2022-05-16 20:25:23', b'0', 1); INSERT INTO `system_dept` (`id`, `name`, `parent_id`, `sort`, `leader_user_id`, `phone`, `email`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (102, '长沙分公司', 100, 2, NULL, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '', '2021-12-15 05:01:40', b'0', 1); INSERT INTO `system_dept` (`id`, `name`, `parent_id`, `sort`, `leader_user_id`, `phone`, `email`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (103, '研发部门', 101, 1, 104, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '103', '2022-01-14 01:04:14', b'0', 1); @@ -2025,7 +2025,7 @@ CREATE TABLE `system_notice` ( -- Records of system_notice -- ---------------------------- BEGIN; -INSERT INTO `system_notice` (`id`, `title`, `content`, `type`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1, '芋道的公众', '

新版本内容133

', 1, 0, 'admin', '2021-01-05 17:03:48', '1', '2022-05-04 21:00:20', b'0', 1); +INSERT INTO `system_notice` (`id`, `title`, `content`, `type`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1, '闻荫的公众', '

新版本内容133

', 1, 0, 'admin', '2021-01-05 17:03:48', '1', '2022-05-04 21:00:20', b'0', 1); INSERT INTO `system_notice` (`id`, `title`, `content`, `type`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (2, '维护通知:2018-07-01 若依系统凌晨维护', '

维护内容

', 2, 1, 'admin', '2021-01-05 17:03:48', '1', '2022-05-11 12:34:24', b'0', 1); INSERT INTO `system_notice` (`id`, `title`, `content`, `type`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (4, '我是测试标题', '

哈哈哈哈123

', 1, 0, '110', '2022-02-22 01:01:25', '110', '2022-02-22 01:01:46', b'0', 121); COMMIT; @@ -2184,7 +2184,7 @@ CREATE TABLE `system_oauth2_client` ( -- Records of system_oauth2_client -- ---------------------------- BEGIN; -INSERT INTO `system_oauth2_client` (`id`, `client_id`, `secret`, `name`, `logo`, `description`, `status`, `access_token_validity_seconds`, `refresh_token_validity_seconds`, `redirect_uris`, `authorized_grant_types`, `scopes`, `auto_approve_scopes`, `authorities`, `resource_ids`, `additional_information`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1, 'default', 'admin123', '芋道源码', 'http://test.win.iocoder.cn/a5e2e244368878a366b516805a4aabf1.png', '我是描述', 0, 1800, 43200, '[\"https://www.iocoder.cn\",\"https://doc.iocoder.cn\"]', '[\"password\",\"authorization_code\",\"implicit\",\"refresh_token\"]', '[\"user.read\",\"user.write\"]', '[]', '[\"user.read\",\"user.write\"]', '[]', '{}', '1', '2022-05-11 21:47:12', '1', '2022-07-05 16:23:52', b'0'); +INSERT INTO `system_oauth2_client` (`id`, `client_id`, `secret`, `name`, `logo`, `description`, `status`, `access_token_validity_seconds`, `refresh_token_validity_seconds`, `redirect_uris`, `authorized_grant_types`, `scopes`, `auto_approve_scopes`, `authorities`, `resource_ids`, `additional_information`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1, 'default', 'admin123', '闻荫源码', 'http://test.win.iocoder.cn/a5e2e244368878a366b516805a4aabf1.png', '我是描述', 0, 1800, 43200, '[\"https://www.iocoder.cn\",\"https://doc.iocoder.cn\"]', '[\"password\",\"authorization_code\",\"implicit\",\"refresh_token\"]', '[\"user.read\",\"user.write\"]', '[]', '[\"user.read\",\"user.write\"]', '[]', '{}', '1', '2022-05-11 21:47:12', '1', '2022-07-05 16:23:52', b'0'); INSERT INTO `system_oauth2_client` (`id`, `client_id`, `secret`, `name`, `logo`, `description`, `status`, `access_token_validity_seconds`, `refresh_token_validity_seconds`, `redirect_uris`, `authorized_grant_types`, `scopes`, `auto_approve_scopes`, `authorities`, `resource_ids`, `additional_information`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (40, 'test', 'test2', 'biubiu', 'http://test.win.iocoder.cn/277a899d573723f1fcdfb57340f00379.png', NULL, 0, 1800, 43200, '[\"https://www.iocoder.cn\"]', '[\"password\",\"authorization_code\",\"implicit\"]', '[\"user_info\",\"projects\"]', '[\"user_info\"]', '[]', '[]', '{}', '1', '2022-05-12 00:28:20', '1', '2022-06-19 00:26:13', b'0'); INSERT INTO `system_oauth2_client` (`id`, `client_id`, `secret`, `name`, `logo`, `description`, `status`, `access_token_validity_seconds`, `refresh_token_validity_seconds`, `redirect_uris`, `authorized_grant_types`, `scopes`, `auto_approve_scopes`, `authorities`, `resource_ids`, `additional_information`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (41, 'win-sso-demo-by-code', 'test', '基于授权码模式,如何实现 SSO 单点登录?', 'http://test.win.iocoder.cn/fe4ed36596adad5120036ef61a6d0153654544d44af8dd4ad3ffe8f759933d6f.png', NULL, 0, 1800, 43200, '[\"http://127.0.0.1:18080\"]', '[\"authorization_code\",\"refresh_token\"]', '[\"user.read\",\"user.write\"]', '[]', '[]', '[]', NULL, '1', '2022-09-29 13:28:31', '1', '2022-09-29 13:28:31', b'0'); INSERT INTO `system_oauth2_client` (`id`, `client_id`, `secret`, `name`, `logo`, `description`, `status`, `access_token_validity_seconds`, `refresh_token_validity_seconds`, `redirect_uris`, `authorized_grant_types`, `scopes`, `auto_approve_scopes`, `authorities`, `resource_ids`, `additional_information`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (42, 'win-sso-demo-by-password', 'test', '基于密码模式,如何实现 SSO 单点登录?', 'http://test.win.iocoder.cn/604bdc695e13b3b22745be704d1f2aa8ee05c5f26f9fead6d1ca49005afbc857.jpeg', NULL, 0, 1800, 43200, '[\"http://127.0.0.1:18080\"]', '[\"password\",\"refresh_token\"]', '[\"user.read\",\"user.write\"]', '[]', '[]', '[]', NULL, '1', '2022-10-04 17:40:16', '1', '2022-10-04 20:31:21', b'0'); @@ -3461,9 +3461,9 @@ CREATE TABLE `system_tenant` ( -- Records of system_tenant -- ---------------------------- BEGIN; -INSERT INTO `system_tenant` (`id`, `name`, `contact_user_id`, `contact_name`, `contact_mobile`, `status`, `domain`, `package_id`, `expire_time`, `account_count`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1, '芋道源码', NULL, '芋艿', '17321315478', 0, 'https://www.iocoder.cn', 0, '2099-02-19 17:14:16', 9999, '1', '2021-01-05 17:03:47', '1', '2022-02-23 12:15:11', b'0'); +INSERT INTO `system_tenant` (`id`, `name`, `contact_user_id`, `contact_name`, `contact_mobile`, `status`, `domain`, `package_id`, `expire_time`, `account_count`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1, '闻荫源码', NULL, '芋艿', '17321315478', 0, 'https://www.iocoder.cn', 0, '2099-02-19 17:14:16', 9999, '1', '2021-01-05 17:03:47', '1', '2022-02-23 12:15:11', b'0'); INSERT INTO `system_tenant` (`id`, `name`, `contact_user_id`, `contact_name`, `contact_mobile`, `status`, `domain`, `package_id`, `expire_time`, `account_count`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (121, '小租户', 110, '小王2', '15601691300', 0, 'http://www.iocoder.cn', 111, '2024-03-11 00:00:00', 20, '1', '2022-02-22 00:56:14', '1', '2023-07-25 23:05:38', b'0'); -INSERT INTO `system_tenant` (`id`, `name`, `contact_user_id`, `contact_name`, `contact_mobile`, `status`, `domain`, `package_id`, `expire_time`, `account_count`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (122, '测试租户', 113, '芋道', '15601691300', 0, 'https://www.iocoder.cn', 111, '2022-04-30 00:00:00', 50, '1', '2022-03-07 21:37:58', '1', '2023-07-25 23:53:16', b'0'); +INSERT INTO `system_tenant` (`id`, `name`, `contact_user_id`, `contact_name`, `contact_mobile`, `status`, `domain`, `package_id`, `expire_time`, `account_count`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (122, '测试租户', 113, '闻荫', '15601691300', 0, 'https://www.iocoder.cn', 111, '2022-04-30 00:00:00', 50, '1', '2022-03-07 21:37:58', '1', '2023-07-25 23:53:16', b'0'); COMMIT; -- ---------------------------- @@ -3602,8 +3602,8 @@ CREATE TABLE `system_users` ( -- Records of system_users -- ---------------------------- BEGIN; -INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1, 'admin', '$2a$10$mRMIYLDtRHlf6.9ipiqH1.Z.bh/R9dO9d5iHiGYPigi6r5KOoR2Wm', '芋道源码', '管理员', 103, '[1]', 'aoteman@126.com', '15612345678', 1, 'http://test.win.iocoder.cn/e1fdd7271685ec143a0900681606406621717a666ad0b2798b096df41422b32f.png', 0, '0:0:0:0:0:0:0:1', '2023-09-02 00:03:37', 'admin', '2021-01-05 17:03:47', NULL, '2023-09-02 00:03:37', b'0', 1); -INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (100, 'win', '$2a$10$11U48RhyJ5pSBYWSn12AD./ld671.ycSzJHbyrtpeoMeYiw31eo8a', '芋道', '不要吓我', 104, '[1]', 'win@iocoder.cn', '15601691300', 1, '', 1, '127.0.0.1', '2022-07-09 23:03:33', '', '2021-01-07 09:07:17', NULL, '2022-07-09 23:03:33', b'0', 1); +INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1, 'admin', '$2a$10$mRMIYLDtRHlf6.9ipiqH1.Z.bh/R9dO9d5iHiGYPigi6r5KOoR2Wm', '闻荫源码', '管理员', 103, '[1]', 'aoteman@126.com', '15612345678', 1, 'http://test.win.iocoder.cn/e1fdd7271685ec143a0900681606406621717a666ad0b2798b096df41422b32f.png', 0, '0:0:0:0:0:0:0:1', '2023-09-02 00:03:37', 'admin', '2021-01-05 17:03:47', NULL, '2023-09-02 00:03:37', b'0', 1); +INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (100, 'win', '$2a$10$11U48RhyJ5pSBYWSn12AD./ld671.ycSzJHbyrtpeoMeYiw31eo8a', '闻荫', '不要吓我', 104, '[1]', 'win@iocoder.cn', '15601691300', 1, '', 1, '127.0.0.1', '2022-07-09 23:03:33', '', '2021-01-07 09:07:17', NULL, '2022-07-09 23:03:33', b'0', 1); INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (103, 'yuanma', '$2a$10$YMpimV4T6BtDhIaA8jSW.u8UTGBeGhc/qwXP4oxoMr4mOw9.qttt6', '源码', NULL, 106, NULL, 'yuanma@iocoder.cn', '15601701300', 0, '', 0, '127.0.0.1', '2022-07-08 01:26:27', '', '2021-01-13 23:50:35', NULL, '2022-07-08 01:26:27', b'0', 1); INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (104, 'test', '$2a$10$GP8zvqHB//TekuzYZSBYAuBQJiNq1.fxQVDYJ.uBCOnWCtDVKE4H6', '测试号', NULL, 107, '[1,2]', '111@qq.com', '15601691200', 1, '', 0, '127.0.0.1', '2022-05-28 15:43:17', '', '2021-01-21 02:13:53', NULL, '2022-07-09 09:00:33', b'0', 1); INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (107, 'admin107', '$2a$10$dYOOBKMO93v/.ReCqzyFg.o67Tqk.bbc2bhrpyBGkIw9aypCtr2pm', '芋艿', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '', NULL, '1', '2022-02-20 22:59:33', '1', '2022-02-27 08:26:51', b'0', 118); @@ -3612,7 +3612,7 @@ INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (110, 'admin110', '$2a$10$mRMIYLDtRHlf6.9ipiqH1.Z.bh/R9dO9d5iHiGYPigi6r5KOoR2Wm', '小王', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '127.0.0.1', '2022-09-25 22:47:33', '1', '2022-02-22 00:56:14', NULL, '2022-09-25 22:47:33', b'0', 121); INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (111, 'test', '$2a$10$mExveopHUx9Q4QiLtAzhDeH3n4/QlNLzEsM4AqgxKrU.ciUZDXZCy', '测试用户', NULL, NULL, '[]', '', '', 0, '', 0, '', NULL, '110', '2022-02-23 13:14:33', '110', '2022-02-23 13:14:33', b'0', 121); INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (112, 'newobject', '$2a$10$3alwklxqfq8/hKoW6oUV0OJp0IdQpBDauLy4633SpUjrRsStl6kMa', '新对象', NULL, 100, '[]', '', '', 1, '', 0, '0:0:0:0:0:0:0:1', '2023-02-10 13:48:13', '1', '2022-02-23 19:08:03', NULL, '2023-02-10 13:48:13', b'0', 1); -INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (113, 'aoteman', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '芋道', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '127.0.0.1', '2022-03-19 18:38:51', '1', '2022-03-07 21:37:58', NULL, '2022-03-19 18:38:51', b'0', 122); +INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (113, 'aoteman', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '闻荫', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '127.0.0.1', '2022-03-19 18:38:51', '1', '2022-03-07 21:37:58', NULL, '2022-03-19 18:38:51', b'0', 122); INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (114, 'hrmgr', '$2a$10$TR4eybBioGRhBmDBWkqWLO6NIh3mzYa8KBKDDB5woiGYFVlRAi.fu', 'hr 小姐姐', NULL, NULL, '[3]', '', '', 0, '', 0, '127.0.0.1', '2022-03-19 22:15:43', '1', '2022-03-19 21:50:58', NULL, '2022-03-19 22:15:43', b'0', 1); INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (115, 'aotemane', '$2a$10$/WCwGHu1eq0wOVDd/u8HweJ0gJCHyLS6T7ndCqI8UXZAQom1etk2e', '1', '11', 101, '[]', '', '', 1, '', 0, '', NULL, '1', '2022-04-30 02:55:43', '1', '2022-06-22 13:34:58', b'0', 1); INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (116, '15601691302', '$2a$10$L5C4S0U6adBWMvFv1Wwl4.DI/NwYS3WIfLj5Q.Naqr5II8CmqsDZ6', '小豆', NULL, NULL, NULL, '', '', 0, '', 0, '', NULL, '1', '2022-05-17 10:07:10', '1', '2022-05-17 10:07:10', b'0', 124); diff --git a/sql/oracle/ruoyi-vue-pro.sql b/sql/oracle/ruoyi-vue-pro.sql index 8cd3564c..074e227c 100644 --- a/sql/oracle/ruoyi-vue-pro.sql +++ b/sql/oracle/ruoyi-vue-pro.sql @@ -2263,7 +2263,7 @@ COMMENT ON TABLE "SYSTEM_DEPT" IS '部门表'; -- ---------------------------- -- Records of SYSTEM_DEPT -- ---------------------------- -INSERT INTO "SYSTEM_DEPT" ("ID", "NAME", "PARENT_ID", "SORT", "LEADER_USER_ID", "PHONE", "EMAIL", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('100', '芋道源码', '0', '0', '1', '15888888888', 'ry@qq.com', '0', 'admin', TO_DATE('2021-01-05 17:03:47', 'SYYYY-MM-DD HH24:MI:SS'), '103', TO_DATE('2022-01-14 01:04:05', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); +INSERT INTO "SYSTEM_DEPT" ("ID", "NAME", "PARENT_ID", "SORT", "LEADER_USER_ID", "PHONE", "EMAIL", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('100', '闻荫源码', '0', '0', '1', '15888888888', 'ry@qq.com', '0', 'admin', TO_DATE('2021-01-05 17:03:47', 'SYYYY-MM-DD HH24:MI:SS'), '103', TO_DATE('2022-01-14 01:04:05', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); INSERT INTO "SYSTEM_DEPT" ("ID", "NAME", "PARENT_ID", "SORT", "LEADER_USER_ID", "PHONE", "EMAIL", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('101', '深圳总公司', '100', '1', '104', '15888888888', 'ry@qq.com', '0', 'admin', TO_DATE('2021-01-05 17:03:47', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-22 19:47:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); INSERT INTO "SYSTEM_DEPT" ("ID", "NAME", "PARENT_ID", "SORT", "LEADER_USER_ID", "PHONE", "EMAIL", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('102', '长沙分公司', '100', '2', NULL, '15888888888', 'ry@qq.com', '0', 'admin', TO_DATE('2021-01-05 17:03:47', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-12-15 05:01:40', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); INSERT INTO "SYSTEM_DEPT" ("ID", "NAME", "PARENT_ID", "SORT", "LEADER_USER_ID", "PHONE", "EMAIL", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('103', '研发部门', '101', '1', '104', '15888888888', 'ry@qq.com', '0', 'admin', TO_DATE('2021-01-05 17:03:47', 'SYYYY-MM-DD HH24:MI:SS'), '103', TO_DATE('2022-01-14 01:04:14', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); @@ -3243,7 +3243,7 @@ COMMENT ON TABLE "SYSTEM_OAUTH2_CLIENT" IS 'OAuth2 客户端表'; -- ---------------------------- -- Records of SYSTEM_OAUTH2_CLIENT -- ---------------------------- -INSERT INTO "SYSTEM_OAUTH2_CLIENT" ("ID", "CLIENT_ID", "SECRET", "NAME", "LOGO", "DESCRIPTION", "STATUS", "ACCESS_TOKEN_VALIDITY_SECONDS", "REFRESH_TOKEN_VALIDITY_SECONDS", "REDIRECT_URIS", "AUTO_APPROVE_SCOPES", "AUTHORIZED_GRANT_TYPES", "SCOPES", "AUTHORITIES", "RESOURCE_IDS", "ADDITIONAL_INFORMATION", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1', 'default', 'admin123', '芋道源码', 'http://test.win.iocoder.cn/a5e2e244368878a366b516805a4aabf1.png', '我是描述', '0', '180', '8640', '["https://www.iocoder.cn","https://doc.iocoder.cn"]', NULL, '["password","authorization_code","implicit","refresh_token"]', '["user.read","user.write"]', '["system:user:query"]', '[]', '{}', '1', TO_DATE('2022-05-11 21:47:12', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-12 01:00:20', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_OAUTH2_CLIENT" ("ID", "CLIENT_ID", "SECRET", "NAME", "LOGO", "DESCRIPTION", "STATUS", "ACCESS_TOKEN_VALIDITY_SECONDS", "REFRESH_TOKEN_VALIDITY_SECONDS", "REDIRECT_URIS", "AUTO_APPROVE_SCOPES", "AUTHORIZED_GRANT_TYPES", "SCOPES", "AUTHORITIES", "RESOURCE_IDS", "ADDITIONAL_INFORMATION", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1', 'default', 'admin123', '闻荫源码', 'http://test.win.iocoder.cn/a5e2e244368878a366b516805a4aabf1.png', '我是描述', '0', '180', '8640', '["https://www.iocoder.cn","https://doc.iocoder.cn"]', NULL, '["password","authorization_code","implicit","refresh_token"]', '["user.read","user.write"]', '["system:user:query"]', '[]', '{}', '1', TO_DATE('2022-05-11 21:47:12', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-12 01:00:20', 'SYYYY-MM-DD HH24:MI:SS'), '0'); INSERT INTO "SYSTEM_OAUTH2_CLIENT" ("ID", "CLIENT_ID", "SECRET", "NAME", "LOGO", "DESCRIPTION", "STATUS", "ACCESS_TOKEN_VALIDITY_SECONDS", "REFRESH_TOKEN_VALIDITY_SECONDS", "REDIRECT_URIS", "AUTO_APPROVE_SCOPES", "AUTHORIZED_GRANT_TYPES", "SCOPES", "AUTHORITIES", "RESOURCE_IDS", "ADDITIONAL_INFORMATION", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('40', 'test', 'test2', 'biubiu', 'http://test.win.iocoder.cn/277a899d573723f1fcdfb57340f00379.png', NULL, '0', '1800', '43200', '["https://www.iocoder.cn"]', '[]', '["password","authorization_code","implicit"]', '[]', '[]', '[]', '{}', '1', TO_DATE('2022-05-12 00:28:20', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-26 00:30:33', 'SYYYY-MM-DD HH24:MI:SS'), '0'); COMMIT; COMMIT; @@ -4225,9 +4225,9 @@ COMMENT ON TABLE "SYSTEM_TENANT" IS '租户表'; -- ---------------------------- -- Records of SYSTEM_TENANT -- ---------------------------- -INSERT INTO "SYSTEM_TENANT" ("ID", "NAME", "CONTACT_USER_ID", "CONTACT_NAME", "CONTACT_MOBILE", "STATUS", "DOMAIN", "PACKAGE_ID", "EXPIRE_TIME", "ACCOUNT_COUNT", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1', '芋道源码', NULL, '芋艿', '17321315478', '0', 'https://www.iocoder.cn', '0', TO_DATE('2099-02-19 17:14:16', 'SYYYY-MM-DD HH24:MI:SS'), '9999', '1', TO_DATE('2021-01-05 17:03:47', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-23 12:15:11', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_TENANT" ("ID", "NAME", "CONTACT_USER_ID", "CONTACT_NAME", "CONTACT_MOBILE", "STATUS", "DOMAIN", "PACKAGE_ID", "EXPIRE_TIME", "ACCOUNT_COUNT", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1', '闻荫源码', NULL, '芋艿', '17321315478', '0', 'https://www.iocoder.cn', '0', TO_DATE('2099-02-19 17:14:16', 'SYYYY-MM-DD HH24:MI:SS'), '9999', '1', TO_DATE('2021-01-05 17:03:47', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-23 12:15:11', 'SYYYY-MM-DD HH24:MI:SS'), '0'); INSERT INTO "SYSTEM_TENANT" ("ID", "NAME", "CONTACT_USER_ID", "CONTACT_NAME", "CONTACT_MOBILE", "STATUS", "DOMAIN", "PACKAGE_ID", "EXPIRE_TIME", "ACCOUNT_COUNT", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('121', '小租户', '110', '小王2', '15601691300', '0', 'http://www.iocoder.cn', '111', TO_DATE('2024-03-11 00:00:00', 'SYYYY-MM-DD HH24:MI:SS'), '20', '1', TO_DATE('2022-02-22 00:56:14', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-19 18:37:20', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_TENANT" ("ID", "NAME", "CONTACT_USER_ID", "CONTACT_NAME", "CONTACT_MOBILE", "STATUS", "DOMAIN", "PACKAGE_ID", "EXPIRE_TIME", "ACCOUNT_COUNT", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('122', '测试租户', '113', '芋道', '15601691300', '0', 'https://www.iocoder.cn', '111', TO_DATE('2022-04-30 00:00:00', 'SYYYY-MM-DD HH24:MI:SS'), '50', '1', TO_DATE('2022-03-07 21:37:58', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-07 21:37:58', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_TENANT" ("ID", "NAME", "CONTACT_USER_ID", "CONTACT_NAME", "CONTACT_MOBILE", "STATUS", "DOMAIN", "PACKAGE_ID", "EXPIRE_TIME", "ACCOUNT_COUNT", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('122', '测试租户', '113', '闻荫', '15601691300', '0', 'https://www.iocoder.cn', '111', TO_DATE('2022-04-30 00:00:00', 'SYYYY-MM-DD HH24:MI:SS'), '50', '1', TO_DATE('2022-03-07 21:37:58', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-07 21:37:58', 'SYYYY-MM-DD HH24:MI:SS'), '0'); COMMIT; COMMIT; @@ -4352,8 +4352,8 @@ COMMENT ON TABLE "SYSTEM_USERS" IS '用户信息表'; -- Records of SYSTEM_USERS -- ---------------------------- INSERT INTO "SYSTEM_USERS" ("ID", "USERNAME", "PASSWORD", "NICKNAME", "REMARK", "DEPT_ID", "POST_IDS", "EMAIL", "MOBILE", "SEX", "AVATAR", "STATUS", "LOGIN_IP", "LOGIN_DATE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('115', 'anzhen', '$2a$10$Qr2lBUuwvDMb98p/o7iSPuHb7GRi4zPHSq4g01ETuY.l4O5txXfvi', 'anzhen', NULL, '100', '[]', NULL, NULL, NULL, NULL, '0', NULL, NULL, '1', TO_DATE('2022-03-24 18:50:59', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-24 18:50:59', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); -INSERT INTO "SYSTEM_USERS" ("ID", "USERNAME", "PASSWORD", "NICKNAME", "REMARK", "DEPT_ID", "POST_IDS", "EMAIL", "MOBILE", "SEX", "AVATAR", "STATUS", "LOGIN_IP", "LOGIN_DATE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('1', 'admin', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '芋道源码', '管理员', '103', '[1,2]', 'aoteman@126.com', '15612345678', '1', 'http://test.win.iocoder.cn/a294ecb2-73dd-4353-bf40-296b8931d0bf', '0', '127.0.0.1', TO_DATE('2022-05-13 09:40:57', 'SYYYY-MM-DD HH24:MI:SS'), 'admin', TO_DATE('2021-01-05 17:03:47', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-05-13 09:40:57', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); -INSERT INTO "SYSTEM_USERS" ("ID", "USERNAME", "PASSWORD", "NICKNAME", "REMARK", "DEPT_ID", "POST_IDS", "EMAIL", "MOBILE", "SEX", "AVATAR", "STATUS", "LOGIN_IP", "LOGIN_DATE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('100', 'win', '$2a$10$11U48RhyJ5pSBYWSn12AD./ld671.ycSzJHbyrtpeoMeYiw31eo8a', '芋道', '不要吓我', '104', '[1]', 'win@iocoder.cn', '15601691300', '1', NULL, '1', NULL, NULL, NULL, TO_DATE('2021-01-07 09:07:17', 'SYYYY-MM-DD HH24:MI:SS'), '104', TO_DATE('2021-12-16 09:26:10', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); +INSERT INTO "SYSTEM_USERS" ("ID", "USERNAME", "PASSWORD", "NICKNAME", "REMARK", "DEPT_ID", "POST_IDS", "EMAIL", "MOBILE", "SEX", "AVATAR", "STATUS", "LOGIN_IP", "LOGIN_DATE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('1', 'admin', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '闻荫源码', '管理员', '103', '[1,2]', 'aoteman@126.com', '15612345678', '1', 'http://test.win.iocoder.cn/a294ecb2-73dd-4353-bf40-296b8931d0bf', '0', '127.0.0.1', TO_DATE('2022-05-13 09:40:57', 'SYYYY-MM-DD HH24:MI:SS'), 'admin', TO_DATE('2021-01-05 17:03:47', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-05-13 09:40:57', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); +INSERT INTO "SYSTEM_USERS" ("ID", "USERNAME", "PASSWORD", "NICKNAME", "REMARK", "DEPT_ID", "POST_IDS", "EMAIL", "MOBILE", "SEX", "AVATAR", "STATUS", "LOGIN_IP", "LOGIN_DATE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('100', 'win', '$2a$10$11U48RhyJ5pSBYWSn12AD./ld671.ycSzJHbyrtpeoMeYiw31eo8a', '闻荫', '不要吓我', '104', '[1]', 'win@iocoder.cn', '15601691300', '1', NULL, '1', NULL, NULL, NULL, TO_DATE('2021-01-07 09:07:17', 'SYYYY-MM-DD HH24:MI:SS'), '104', TO_DATE('2021-12-16 09:26:10', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); INSERT INTO "SYSTEM_USERS" ("ID", "USERNAME", "PASSWORD", "NICKNAME", "REMARK", "DEPT_ID", "POST_IDS", "EMAIL", "MOBILE", "SEX", "AVATAR", "STATUS", "LOGIN_IP", "LOGIN_DATE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('103', 'yuanma', '$2a$10$wWoPT7sqriM2O1YXRL.je.GiL538OR6ZTN8aQZr9JAGdnpCH2tpYe', '源码', NULL, '106', NULL, 'yuanma@iocoder.cn', '15601701300', '0', NULL, '0', '127.0.0.1', TO_DATE('2022-01-18 00:33:40', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-13 23:50:35', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-01-18 00:33:40', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); INSERT INTO "SYSTEM_USERS" ("ID", "USERNAME", "PASSWORD", "NICKNAME", "REMARK", "DEPT_ID", "POST_IDS", "EMAIL", "MOBILE", "SEX", "AVATAR", "STATUS", "LOGIN_IP", "LOGIN_DATE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('104', 'test', '$2a$10$e5RpuDCC0GYSt0Hvd2.CjujIXwgGct4SnXi6dVGxdgFsnqgEryk5a', '测试号', NULL, '107', '[]', '111@qq.com', '15601691200', '1', NULL, '0', '127.0.0.1', TO_DATE('2022-03-19 21:46:19', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-21 02:13:53', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-03-19 21:46:19', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); INSERT INTO "SYSTEM_USERS" ("ID", "USERNAME", "PASSWORD", "NICKNAME", "REMARK", "DEPT_ID", "POST_IDS", "EMAIL", "MOBILE", "SEX", "AVATAR", "STATUS", "LOGIN_IP", "LOGIN_DATE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('107', 'admin107', '$2a$10$dYOOBKMO93v/.ReCqzyFg.o67Tqk.bbc2bhrpyBGkIw9aypCtr2pm', '芋艿', NULL, NULL, NULL, NULL, '15601691300', '0', NULL, '0', NULL, NULL, '1', TO_DATE('2022-02-20 22:59:33', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-27 08:26:51', 'SYYYY-MM-DD HH24:MI:SS'), '118', '0'); @@ -4362,7 +4362,7 @@ INSERT INTO "SYSTEM_USERS" ("ID", "USERNAME", "PASSWORD", "NICKNAME", "REMARK", INSERT INTO "SYSTEM_USERS" ("ID", "USERNAME", "PASSWORD", "NICKNAME", "REMARK", "DEPT_ID", "POST_IDS", "EMAIL", "MOBILE", "SEX", "AVATAR", "STATUS", "LOGIN_IP", "LOGIN_DATE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('110', 'admin110', '$2a$10$qYxoXs0ogPHgYllyEneYde9xcCW5hZgukrxeXZ9lmLhKse8TK6IwW', '小王', NULL, NULL, NULL, NULL, '15601691300', '0', NULL, '0', '127.0.0.1', TO_DATE('2022-02-23 19:36:28', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-22 00:56:14', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-02-27 08:26:59', 'SYYYY-MM-DD HH24:MI:SS'), '121', '0'); INSERT INTO "SYSTEM_USERS" ("ID", "USERNAME", "PASSWORD", "NICKNAME", "REMARK", "DEPT_ID", "POST_IDS", "EMAIL", "MOBILE", "SEX", "AVATAR", "STATUS", "LOGIN_IP", "LOGIN_DATE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('111', 'test', '$2a$10$mExveopHUx9Q4QiLtAzhDeH3n4/QlNLzEsM4AqgxKrU.ciUZDXZCy', '测试用户', NULL, NULL, '[]', NULL, NULL, '0', NULL, '0', NULL, NULL, '110', TO_DATE('2022-02-23 13:14:33', 'SYYYY-MM-DD HH24:MI:SS'), '110', TO_DATE('2022-02-23 13:14:33', 'SYYYY-MM-DD HH24:MI:SS'), '121', '0'); INSERT INTO "SYSTEM_USERS" ("ID", "USERNAME", "PASSWORD", "NICKNAME", "REMARK", "DEPT_ID", "POST_IDS", "EMAIL", "MOBILE", "SEX", "AVATAR", "STATUS", "LOGIN_IP", "LOGIN_DATE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('112', 'newobject', '$2a$10$jh5MsR.ud/gKe3mVeUp5t.nEXGDSmHyv5OYjWQwHO8wlGmMSI9Twy', '新对象', NULL, NULL, '[]', NULL, NULL, '0', NULL, '0', NULL, NULL, '1', TO_DATE('2022-02-23 19:08:03', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-23 19:08:03', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); -INSERT INTO "SYSTEM_USERS" ("ID", "USERNAME", "PASSWORD", "NICKNAME", "REMARK", "DEPT_ID", "POST_IDS", "EMAIL", "MOBILE", "SEX", "AVATAR", "STATUS", "LOGIN_IP", "LOGIN_DATE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('113', 'aoteman', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '芋道', NULL, NULL, NULL, NULL, '15601691300', '0', NULL, '0', '127.0.0.1', TO_DATE('2022-03-19 18:38:51', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-07 21:37:58', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-03-19 18:38:51', 'SYYYY-MM-DD HH24:MI:SS'), '122', '0'); +INSERT INTO "SYSTEM_USERS" ("ID", "USERNAME", "PASSWORD", "NICKNAME", "REMARK", "DEPT_ID", "POST_IDS", "EMAIL", "MOBILE", "SEX", "AVATAR", "STATUS", "LOGIN_IP", "LOGIN_DATE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('113', 'aoteman', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '闻荫', NULL, NULL, NULL, NULL, '15601691300', '0', NULL, '0', '127.0.0.1', TO_DATE('2022-03-19 18:38:51', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-07 21:37:58', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-03-19 18:38:51', 'SYYYY-MM-DD HH24:MI:SS'), '122', '0'); INSERT INTO "SYSTEM_USERS" ("ID", "USERNAME", "PASSWORD", "NICKNAME", "REMARK", "DEPT_ID", "POST_IDS", "EMAIL", "MOBILE", "SEX", "AVATAR", "STATUS", "LOGIN_IP", "LOGIN_DATE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('114', 'hrmgr', '$2a$10$TR4eybBioGRhBmDBWkqWLO6NIh3mzYa8KBKDDB5woiGYFVlRAi.fu', 'hr 小姐姐', NULL, NULL, '[3]', NULL, NULL, '0', NULL, '0', '127.0.0.1', TO_DATE('2022-03-19 22:15:43', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-19 21:50:58', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-01 01:08:58', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); INSERT INTO "SYSTEM_USERS" ("ID", "USERNAME", "PASSWORD", "NICKNAME", "REMARK", "DEPT_ID", "POST_IDS", "EMAIL", "MOBILE", "SEX", "AVATAR", "STATUS", "LOGIN_IP", "LOGIN_DATE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('0', 'admin2', '$2a$10$KYL8IPJPIzuZWfOgPqOuU.VeZqWistCv5pxtoaq2SwPBDgBR4uh6G', '123', NULL, NULL, '[]', NULL, NULL, NULL, NULL, '0', NULL, NULL, '1', TO_DATE('2022-05-01 01:05:12', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-01 01:05:12', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); COMMIT; diff --git a/sql/postgresql/ruoyi-vue-pro.sql b/sql/postgresql/ruoyi-vue-pro.sql index f8aec99c..4cd3cbfd 100644 --- a/sql/postgresql/ruoyi-vue-pro.sql +++ b/sql/postgresql/ruoyi-vue-pro.sql @@ -2795,7 +2795,7 @@ ON TABLE "system_dept" IS '部门表'; BEGIN; INSERT INTO "system_dept" ("id", "name", "parent_id", "sort", "leader_user_id", "phone", "email", "status", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") -VALUES (100, '芋道源码', 0, 0, 1, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '103', +VALUES (100, '闻荫源码', 0, 0, 1, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '103', '2022-01-14 01:04:05', 0, 1); INSERT INTO "system_dept" ("id", "name", "parent_id", "sort", "leader_user_id", "phone", "email", "status", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") @@ -5041,7 +5041,7 @@ ON TABLE "system_notice" IS '通知公告表'; BEGIN; INSERT INTO "system_notice" ("id", "title", "content", "type", "status", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") -VALUES (1, '芋道的公众', '

新版本内容133

', 1, 0, 'admin', '2021-01-05 17:03:48', '1', '2022-05-04 21:00:20', 0, +VALUES (1, '闻荫的公众', '

新版本内容133

', 1, 0, 'admin', '2021-01-05 17:03:48', '1', '2022-05-04 21:00:20', 0, 1); INSERT INTO "system_notice" ("id", "title", "content", "type", "status", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") @@ -5252,7 +5252,7 @@ INSERT INTO "system_oauth2_client" ("id", "client_id", "secret", "name", "logo", "authorized_grant_types", "scopes", "authorities", "resource_ids", "additional_information", "creator", "create_time", "updater", "update_time", "deleted", "auto_approve_scopes") -VALUES (1, 'default', 'admin123', '芋道源码', 'http://test.win.iocoder.cn/a5e2e244368878a366b516805a4aabf1.png', +VALUES (1, 'default', 'admin123', '闻荫源码', 'http://test.win.iocoder.cn/a5e2e244368878a366b516805a4aabf1.png', '我是描述', 0, 180, 8640, '["https://www.iocoder.cn","https://doc.iocoder.cn"]', '["password","authorization_code","implicit","refresh_token"]', '["user.read","user.write"]', '["system:user:query"]', '[]', '{}', '1', '2022-05-11 21:47:12', '1', '2022-05-12 01:00:20', 0, NULL); @@ -6830,7 +6830,7 @@ BEGIN; INSERT INTO "system_tenant" ("id", "name", "contact_user_id", "contact_name", "contact_mobile", "status", "domain", "package_id", "expire_time", "account_count", "creator", "create_time", "updater", "update_time", "deleted") -VALUES (1, '芋道源码', NULL, '芋艿', '17321315478', 0, 'https://www.iocoder.cn', 0, '2099-02-19 17:14:16', 9999, '1', +VALUES (1, '闻荫源码', NULL, '芋艿', '17321315478', 0, 'https://www.iocoder.cn', 0, '2099-02-19 17:14:16', 9999, '1', '2021-01-05 17:03:47', '1', '2022-02-23 12:15:11', 0); INSERT INTO "system_tenant" ("id", "name", "contact_user_id", "contact_name", "contact_mobile", "status", "domain", "package_id", "expire_time", "account_count", "creator", "create_time", "updater", @@ -6840,7 +6840,7 @@ VALUES (121, '小租户', 110, '小王2', '15601691300', 0, 'http://www.iocoder. INSERT INTO "system_tenant" ("id", "name", "contact_user_id", "contact_name", "contact_mobile", "status", "domain", "package_id", "expire_time", "account_count", "creator", "create_time", "updater", "update_time", "deleted") -VALUES (122, '测试租户', 113, '芋道', '15601691300', 0, 'https://www.iocoder.cn', 111, '2022-04-30 00:00:00', 50, '1', +VALUES (122, '测试租户', 113, '闻荫', '15601691300', 0, 'https://www.iocoder.cn', 111, '2022-04-30 00:00:00', 50, '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', 0); COMMIT; @@ -7116,7 +7116,7 @@ BEGIN; INSERT INTO "system_users" ("id", "username", "password", "nickname", "remark", "dept_id", "post_ids", "email", "mobile", "sex", "avatar", "status", "login_ip", "login_date", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") -VALUES (100, 'win', '$2a$10$11U48RhyJ5pSBYWSn12AD./ld671.ycSzJHbyrtpeoMeYiw31eo8a', '芋道', '不要吓我', 104, '[1]', +VALUES (100, 'win', '$2a$10$11U48RhyJ5pSBYWSn12AD./ld671.ycSzJHbyrtpeoMeYiw31eo8a', '闻荫', '不要吓我', 104, '[1]', 'win@iocoder.cn', '15601691300', 1, '', 1, '', NULL, '', '2021-01-07 09:07:17', '104', '2021-12-16 09:26:10', 0, 1); INSERT INTO "system_users" ("id", "username", "password", "nickname", "remark", "dept_id", "post_ids", "email", @@ -7165,7 +7165,7 @@ VALUES (112, 'newobject', '$2a$10$jh5MsR.ud/gKe3mVeUp5t.nEXGDSmHyv5OYjWQwHO8wlGm INSERT INTO "system_users" ("id", "username", "password", "nickname", "remark", "dept_id", "post_ids", "email", "mobile", "sex", "avatar", "status", "login_ip", "login_date", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") -VALUES (113, 'aoteman', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '芋道', NULL, NULL, NULL, '', +VALUES (113, 'aoteman', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '闻荫', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '127.0.0.1', '2022-03-19 18:38:51', '1', '2022-03-07 21:37:58', NULL, '2022-03-19 18:38:51', 0, 122); INSERT INTO "system_users" ("id", "username", "password", "nickname", "remark", "dept_id", "post_ids", "email", @@ -7182,7 +7182,7 @@ VALUES (115, 'aotemane', '$2a$10$/WCwGHu1eq0wOVDd/u8HweJ0gJCHyLS6T7ndCqI8UXZAQom INSERT INTO "system_users" ("id", "username", "password", "nickname", "remark", "dept_id", "post_ids", "email", "mobile", "sex", "avatar", "status", "login_ip", "login_date", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") -VALUES (1, 'admin', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '芋道源码', '管理员', 103, '[1]', +VALUES (1, 'admin', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '闻荫源码', '管理员', 103, '[1]', 'aoteman@126.com', '15612345678', 1, 'http://test.win.iocoder.cn/48934f2f-92d4-4250-b917-d10d2b262c6a', 0, '127.0.0.1', '2022-05-25 23:44:33.003', 'admin', '2021-01-05 17:03:47', NULL, '2022-05-25 23:44:33.003', 0, 1); COMMIT; diff --git a/sql/sqlserver/ruoyi-vue-pro.sql b/sql/sqlserver/ruoyi-vue-pro.sql index c21da31b..48bdc5d4 100644 --- a/sql/sqlserver/ruoyi-vue-pro.sql +++ b/sql/sqlserver/ruoyi-vue-pro.sql @@ -3723,7 +3723,7 @@ GO SET IDENTITY_INSERT [dbo].[pay_app] ON GO -INSERT INTO [dbo].[pay_app] ([id], [name], [status], [remark], [pay_notify_url], [refund_notify_url], [merchant_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'6', N'芋道', N'0', N'我是一个公众号', N'http://127.0.0.1:28080/api/shop/order/pay-notify', N'http://127.0.0.1', N'1', N'', N'2021-10-23 08:49:25.0000000', N'', N'2022-02-27 04:14:53.0000000', N'1', N'0') +INSERT INTO [dbo].[pay_app] ([id], [name], [status], [remark], [pay_notify_url], [refund_notify_url], [merchant_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'6', N'闻荫', N'0', N'我是一个公众号', N'http://127.0.0.1:28080/api/shop/order/pay-notify', N'http://127.0.0.1', N'1', N'', N'2021-10-23 08:49:25.0000000', N'', N'2022-02-27 04:14:53.0000000', N'1', N'0') GO SET IDENTITY_INSERT [dbo].[pay_app] OFF @@ -4036,7 +4036,7 @@ GO SET IDENTITY_INSERT [dbo].[pay_merchant] ON GO -INSERT INTO [dbo].[pay_merchant] ([id], [no], [name], [short_name], [status], [remark], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1', N'M233666999', N'芋道源码', N'芋艿', N'0', N'我是备注', N'', N'2021-10-23 08:31:14.0000000', N'', N'2022-02-27 04:15:20.0000000', N'1', N'0') +INSERT INTO [dbo].[pay_merchant] ([id], [no], [name], [short_name], [status], [remark], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1', N'M233666999', N'闻荫源码', N'芋艿', N'0', N'我是备注', N'', N'2021-10-23 08:31:14.0000000', N'', N'2022-02-27 04:15:20.0000000', N'1', N'0') GO SET IDENTITY_INSERT [dbo].[pay_merchant] OFF @@ -5216,7 +5216,7 @@ GO SET IDENTITY_INSERT [dbo].[system_dept] ON GO -INSERT INTO [dbo].[system_dept] ([id], [name], [parent_id], [sort], [leader_user_id], [phone], [email], [status], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'100', N'芋道源码', N'0', N'0', N'1', N'15888888888', N'ry@qq.com', N'0', N'admin', N'2021-01-05 17:03:47.0000000', N'103', N'2022-01-14 01:04:05.0000000', N'1', N'0') +INSERT INTO [dbo].[system_dept] ([id], [name], [parent_id], [sort], [leader_user_id], [phone], [email], [status], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'100', N'闻荫源码', N'0', N'0', N'1', N'15888888888', N'ry@qq.com', N'0', N'admin', N'2021-01-05 17:03:47.0000000', N'103', N'2022-01-14 01:04:05.0000000', N'1', N'0') GO INSERT INTO [dbo].[system_dept] ([id], [name], [parent_id], [sort], [leader_user_id], [phone], [email], [status], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'101', N'深圳总公司', N'100', N'1', N'104', N'15888888888', N'ry@qq.com', N'0', N'admin', N'2021-01-05 17:03:47.0000000', N'1', N'2022-02-22 19:47:48.0000000', N'1', N'0') @@ -7845,7 +7845,7 @@ GO SET IDENTITY_INSERT [dbo].[system_oauth2_client] ON GO -INSERT INTO [dbo].[system_oauth2_client] ([id], [client_id], [secret], [name], [logo], [description], [status], [access_token_validity_seconds], [refresh_token_validity_seconds], [redirect_uris], [auto_approve_scopes], [authorized_grant_types], [scopes], [authorities], [resource_ids], [additional_information], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1', N'default', N'admin123', N'芋道源码', N'http://test.win.iocoder.cn/a5e2e244368878a366b516805a4aabf1.png', N'我是描述', N'0', N'180', N'8640', N'["https://www.iocoder.cn","https://doc.iocoder.cn"]', N'', N'["password","authorization_code","implicit","refresh_token"]', N'["user.read", "user.write"]', N'["system:user:query"]', N'[]', N'{}', N'1', N'2022-05-11 21:47:12.0000000', N'1', N'2022-05-13 10:50:16.9620000', N'0') +INSERT INTO [dbo].[system_oauth2_client] ([id], [client_id], [secret], [name], [logo], [description], [status], [access_token_validity_seconds], [refresh_token_validity_seconds], [redirect_uris], [auto_approve_scopes], [authorized_grant_types], [scopes], [authorities], [resource_ids], [additional_information], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1', N'default', N'admin123', N'闻荫源码', N'http://test.win.iocoder.cn/a5e2e244368878a366b516805a4aabf1.png', N'我是描述', N'0', N'180', N'8640', N'["https://www.iocoder.cn","https://doc.iocoder.cn"]', N'', N'["password","authorization_code","implicit","refresh_token"]', N'["user.read", "user.write"]', N'["system:user:query"]', N'[]', N'{}', N'1', N'2022-05-11 21:47:12.0000000', N'1', N'2022-05-13 10:50:16.9620000', N'0') GO SET IDENTITY_INSERT [dbo].[system_oauth2_client] OFF @@ -10731,13 +10731,13 @@ GO SET IDENTITY_INSERT [dbo].[system_tenant] ON GO -INSERT INTO [dbo].[system_tenant] ([id], [name], [contact_user_id], [contact_name], [contact_mobile], [status], [domain], [package_id], [expire_time], [account_count], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1', N'芋道源码', NULL, N'芋艿', N'17321315478', N'0', N'https://www.iocoder.cn', N'0', N'2099-02-19 17:14:16.0000000', N'9999', N'1', N'2021-01-05 17:03:47.0000000', N'1', N'2022-02-23 12:15:11.0000000', N'0') +INSERT INTO [dbo].[system_tenant] ([id], [name], [contact_user_id], [contact_name], [contact_mobile], [status], [domain], [package_id], [expire_time], [account_count], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1', N'闻荫源码', NULL, N'芋艿', N'17321315478', N'0', N'https://www.iocoder.cn', N'0', N'2099-02-19 17:14:16.0000000', N'9999', N'1', N'2021-01-05 17:03:47.0000000', N'1', N'2022-02-23 12:15:11.0000000', N'0') GO INSERT INTO [dbo].[system_tenant] ([id], [name], [contact_user_id], [contact_name], [contact_mobile], [status], [domain], [package_id], [expire_time], [account_count], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'121', N'小租户', N'110', N'小王2', N'15601691300', N'0', N'http://www.iocoder.cn', N'111', N'2024-03-11 00:00:00.0000000', N'20', N'1', N'2022-02-22 00:56:14.0000000', N'1', N'2022-03-19 18:37:20.0000000', N'0') GO -INSERT INTO [dbo].[system_tenant] ([id], [name], [contact_user_id], [contact_name], [contact_mobile], [status], [domain], [package_id], [expire_time], [account_count], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'122', N'测试租户', N'113', N'芋道', N'15601691300', N'0', N'https://www.iocoder.cn', N'111', N'2022-04-30 00:00:00.0000000', N'50', N'1', N'2022-03-07 21:37:58.0000000', N'1', N'2022-03-07 21:37:58.0000000', N'0') +INSERT INTO [dbo].[system_tenant] ([id], [name], [contact_user_id], [contact_name], [contact_mobile], [status], [domain], [package_id], [expire_time], [account_count], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'122', N'测试租户', N'113', N'闻荫', N'15601691300', N'0', N'https://www.iocoder.cn', N'111', N'2022-04-30 00:00:00.0000000', N'50', N'1', N'2022-03-07 21:37:58.0000000', N'1', N'2022-03-07 21:37:58.0000000', N'0') GO SET IDENTITY_INSERT [dbo].[system_tenant] OFF @@ -11326,10 +11326,10 @@ GO SET IDENTITY_INSERT [dbo].[system_users] ON GO -INSERT INTO [dbo].[system_users] ([id], [username], [password], [nickname], [remark], [dept_id], [post_ids], [email], [mobile], [sex], [avatar], [status], [login_ip], [login_date], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1', N'admin', N'$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', N'芋道源码', N'管理员', N'103', N'[1]', N'aoteman@126.com', N'15612345678', N'1', N'http://test.win.iocoder.cn/48934f2f-92d4-4250-b917-d10d2b262c6a', N'0', N'127.0.0.1', N'2022-05-26 00:51:15.3820000', N'admin', N'2021-01-05 17:03:47.0000000', NULL, N'2022-05-26 00:51:15.3870000', N'1', N'0') +INSERT INTO [dbo].[system_users] ([id], [username], [password], [nickname], [remark], [dept_id], [post_ids], [email], [mobile], [sex], [avatar], [status], [login_ip], [login_date], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1', N'admin', N'$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', N'闻荫源码', N'管理员', N'103', N'[1]', N'aoteman@126.com', N'15612345678', N'1', N'http://test.win.iocoder.cn/48934f2f-92d4-4250-b917-d10d2b262c6a', N'0', N'127.0.0.1', N'2022-05-26 00:51:15.3820000', N'admin', N'2021-01-05 17:03:47.0000000', NULL, N'2022-05-26 00:51:15.3870000', N'1', N'0') GO -INSERT INTO [dbo].[system_users] ([id], [username], [password], [nickname], [remark], [dept_id], [post_ids], [email], [mobile], [sex], [avatar], [status], [login_ip], [login_date], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'100', N'win', N'$2a$10$11U48RhyJ5pSBYWSn12AD./ld671.ycSzJHbyrtpeoMeYiw31eo8a', N'芋道', N'不要吓我', N'104', N'[1]', N'win@iocoder.cn', N'15601691300', N'1', N'', N'1', N'127.0.0.1', N'2022-05-03 16:49:24.6860000', N'', N'2021-01-07 09:07:17.0000000', NULL, N'2022-05-03 16:49:24.6860000', N'1', N'0') +INSERT INTO [dbo].[system_users] ([id], [username], [password], [nickname], [remark], [dept_id], [post_ids], [email], [mobile], [sex], [avatar], [status], [login_ip], [login_date], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'100', N'win', N'$2a$10$11U48RhyJ5pSBYWSn12AD./ld671.ycSzJHbyrtpeoMeYiw31eo8a', N'闻荫', N'不要吓我', N'104', N'[1]', N'win@iocoder.cn', N'15601691300', N'1', N'', N'1', N'127.0.0.1', N'2022-05-03 16:49:24.6860000', N'', N'2021-01-07 09:07:17.0000000', NULL, N'2022-05-03 16:49:24.6860000', N'1', N'0') GO INSERT INTO [dbo].[system_users] ([id], [username], [password], [nickname], [remark], [dept_id], [post_ids], [email], [mobile], [sex], [avatar], [status], [login_ip], [login_date], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'103', N'yuanma', N'$2a$10$wWoPT7sqriM2O1YXRL.je.GiL538OR6ZTN8aQZr9JAGdnpCH2tpYe', N'源码', NULL, N'106', NULL, N'yuanma@iocoder.cn', N'15601701300', N'0', N'', N'0', N'127.0.0.1', N'2022-01-18 00:33:40.0000000', N'', N'2021-01-13 23:50:35.0000000', NULL, N'2022-01-18 00:33:40.0000000', N'1', N'0') @@ -11356,7 +11356,7 @@ GO INSERT INTO [dbo].[system_users] ([id], [username], [password], [nickname], [remark], [dept_id], [post_ids], [email], [mobile], [sex], [avatar], [status], [login_ip], [login_date], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'112', N'newobject', N'$2a$10$jh5MsR.ud/gKe3mVeUp5t.nEXGDSmHyv5OYjWQwHO8wlGmMSI9Twy', N'新对象', NULL, NULL, N'[]', N'', N'', N'0', N'', N'0', N'', NULL, N'1', N'2022-02-23 19:08:03.0000000', N'1', N'2022-02-23 19:08:03.0000000', N'1', N'0') GO -INSERT INTO [dbo].[system_users] ([id], [username], [password], [nickname], [remark], [dept_id], [post_ids], [email], [mobile], [sex], [avatar], [status], [login_ip], [login_date], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'113', N'aoteman', N'$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', N'芋道', NULL, NULL, NULL, N'', N'15601691300', N'0', N'', N'0', N'127.0.0.1', N'2022-03-19 18:38:51.0000000', N'1', N'2022-03-07 21:37:58.0000000', NULL, N'2022-03-19 18:38:51.0000000', N'122', N'0') +INSERT INTO [dbo].[system_users] ([id], [username], [password], [nickname], [remark], [dept_id], [post_ids], [email], [mobile], [sex], [avatar], [status], [login_ip], [login_date], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'113', N'aoteman', N'$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', N'闻荫', NULL, NULL, NULL, N'', N'15601691300', N'0', N'', N'0', N'127.0.0.1', N'2022-03-19 18:38:51.0000000', N'1', N'2022-03-07 21:37:58.0000000', NULL, N'2022-03-19 18:38:51.0000000', N'122', N'0') GO INSERT INTO [dbo].[system_users] ([id], [username], [password], [nickname], [remark], [dept_id], [post_ids], [email], [mobile], [sex], [avatar], [status], [login_ip], [login_date], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'114', N'hrmgr', N'$2a$10$TR4eybBioGRhBmDBWkqWLO6NIh3mzYa8KBKDDB5woiGYFVlRAi.fu', N'hr 小姐姐', NULL, NULL, N'[3]', N'', N'', N'0', N'', N'0', N'127.0.0.1', N'2022-03-19 22:15:43.0000000', N'1', N'2022-03-19 21:50:58.0000000', NULL, N'2022-03-19 22:15:43.0000000', N'1', N'0') diff --git a/win-example/win-sso-demo-by-code/src/main/java/com/win/ssodemo/client/dto/oauth2/OAuth2CheckTokenRespDTO.java b/win-example/win-sso-demo-by-code/src/main/java/com/win/ssodemo/client/dto/oauth2/OAuth2CheckTokenRespDTO.java index 79a0be96..41d6dfea 100644 --- a/win-example/win-sso-demo-by-code/src/main/java/com/win/ssodemo/client/dto/oauth2/OAuth2CheckTokenRespDTO.java +++ b/win-example/win-sso-demo-by-code/src/main/java/com/win/ssodemo/client/dto/oauth2/OAuth2CheckTokenRespDTO.java @@ -10,7 +10,7 @@ import java.util.List; /** * 校验令牌 Response DTO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data @NoArgsConstructor diff --git a/win-example/win-sso-demo-by-code/src/main/java/com/win/ssodemo/framework/core/LoginUser.java b/win-example/win-sso-demo-by-code/src/main/java/com/win/ssodemo/framework/core/LoginUser.java index 54b16930..17bc5ab7 100644 --- a/win-example/win-sso-demo-by-code/src/main/java/com/win/ssodemo/framework/core/LoginUser.java +++ b/win-example/win-sso-demo-by-code/src/main/java/com/win/ssodemo/framework/core/LoginUser.java @@ -7,7 +7,7 @@ import java.util.List; /** * 登录用户信息 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class LoginUser { diff --git a/win-example/win-sso-demo-by-code/src/main/java/com/win/ssodemo/framework/core/filter/TokenAuthenticationFilter.java b/win-example/win-sso-demo-by-code/src/main/java/com/win/ssodemo/framework/core/filter/TokenAuthenticationFilter.java index 7e9e2932..cdaa29ea 100644 --- a/win-example/win-sso-demo-by-code/src/main/java/com/win/ssodemo/framework/core/filter/TokenAuthenticationFilter.java +++ b/win-example/win-sso-demo-by-code/src/main/java/com/win/ssodemo/framework/core/filter/TokenAuthenticationFilter.java @@ -20,7 +20,7 @@ import java.io.IOException; * Token 过滤器,验证 token 的有效性 * 验证通过后,获得 {@link LoginUser} 信息,并加入到 Spring Security 上下文 * - * @author 芋道源码 + * @author 闻荫源码 */ @Component public class TokenAuthenticationFilter extends OncePerRequestFilter { diff --git a/win-example/win-sso-demo-by-code/src/main/java/com/win/ssodemo/framework/core/handler/AccessDeniedHandlerImpl.java b/win-example/win-sso-demo-by-code/src/main/java/com/win/ssodemo/framework/core/handler/AccessDeniedHandlerImpl.java index 600a594c..8cd378b2 100644 --- a/win-example/win-sso-demo-by-code/src/main/java/com/win/ssodemo/framework/core/handler/AccessDeniedHandlerImpl.java +++ b/win-example/win-sso-demo-by-code/src/main/java/com/win/ssodemo/framework/core/handler/AccessDeniedHandlerImpl.java @@ -21,7 +21,7 @@ import java.io.IOException; * * 补充:Spring Security 通过 {@link ExceptionTranslationFilter#handleAccessDeniedException(HttpServletRequest, HttpServletResponse, FilterChain, AccessDeniedException)} 方法,调用当前类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Component @SuppressWarnings("JavadocReference") diff --git a/win-example/win-sso-demo-by-code/src/main/java/com/win/ssodemo/framework/core/util/SecurityUtils.java b/win-example/win-sso-demo-by-code/src/main/java/com/win/ssodemo/framework/core/util/SecurityUtils.java index caada34c..22bc817f 100644 --- a/win-example/win-sso-demo-by-code/src/main/java/com/win/ssodemo/framework/core/util/SecurityUtils.java +++ b/win-example/win-sso-demo-by-code/src/main/java/com/win/ssodemo/framework/core/util/SecurityUtils.java @@ -15,7 +15,7 @@ import java.util.Collections; /** * 安全服务工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class SecurityUtils { diff --git a/win-example/win-sso-demo-by-code/src/main/java/com/win/ssodemo/framework/core/util/ServletUtils.java b/win-example/win-sso-demo-by-code/src/main/java/com/win/ssodemo/framework/core/util/ServletUtils.java index 32600190..4c1c65f7 100644 --- a/win-example/win-sso-demo-by-code/src/main/java/com/win/ssodemo/framework/core/util/ServletUtils.java +++ b/win-example/win-sso-demo-by-code/src/main/java/com/win/ssodemo/framework/core/util/ServletUtils.java @@ -9,7 +9,7 @@ import javax.servlet.http.HttpServletResponse; /** * 客户端工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class ServletUtils { diff --git a/win-example/win-sso-demo-by-password/src/main/java/com/win/ssodemo/client/dto/oauth2/OAuth2CheckTokenRespDTO.java b/win-example/win-sso-demo-by-password/src/main/java/com/win/ssodemo/client/dto/oauth2/OAuth2CheckTokenRespDTO.java index 79a0be96..41d6dfea 100644 --- a/win-example/win-sso-demo-by-password/src/main/java/com/win/ssodemo/client/dto/oauth2/OAuth2CheckTokenRespDTO.java +++ b/win-example/win-sso-demo-by-password/src/main/java/com/win/ssodemo/client/dto/oauth2/OAuth2CheckTokenRespDTO.java @@ -10,7 +10,7 @@ import java.util.List; /** * 校验令牌 Response DTO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data @NoArgsConstructor diff --git a/win-example/win-sso-demo-by-password/src/main/java/com/win/ssodemo/framework/core/LoginUser.java b/win-example/win-sso-demo-by-password/src/main/java/com/win/ssodemo/framework/core/LoginUser.java index 54b16930..17bc5ab7 100644 --- a/win-example/win-sso-demo-by-password/src/main/java/com/win/ssodemo/framework/core/LoginUser.java +++ b/win-example/win-sso-demo-by-password/src/main/java/com/win/ssodemo/framework/core/LoginUser.java @@ -7,7 +7,7 @@ import java.util.List; /** * 登录用户信息 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class LoginUser { diff --git a/win-example/win-sso-demo-by-password/src/main/java/com/win/ssodemo/framework/core/filter/TokenAuthenticationFilter.java b/win-example/win-sso-demo-by-password/src/main/java/com/win/ssodemo/framework/core/filter/TokenAuthenticationFilter.java index 7e9e2932..cdaa29ea 100644 --- a/win-example/win-sso-demo-by-password/src/main/java/com/win/ssodemo/framework/core/filter/TokenAuthenticationFilter.java +++ b/win-example/win-sso-demo-by-password/src/main/java/com/win/ssodemo/framework/core/filter/TokenAuthenticationFilter.java @@ -20,7 +20,7 @@ import java.io.IOException; * Token 过滤器,验证 token 的有效性 * 验证通过后,获得 {@link LoginUser} 信息,并加入到 Spring Security 上下文 * - * @author 芋道源码 + * @author 闻荫源码 */ @Component public class TokenAuthenticationFilter extends OncePerRequestFilter { diff --git a/win-example/win-sso-demo-by-password/src/main/java/com/win/ssodemo/framework/core/handler/AccessDeniedHandlerImpl.java b/win-example/win-sso-demo-by-password/src/main/java/com/win/ssodemo/framework/core/handler/AccessDeniedHandlerImpl.java index 600a594c..8cd378b2 100644 --- a/win-example/win-sso-demo-by-password/src/main/java/com/win/ssodemo/framework/core/handler/AccessDeniedHandlerImpl.java +++ b/win-example/win-sso-demo-by-password/src/main/java/com/win/ssodemo/framework/core/handler/AccessDeniedHandlerImpl.java @@ -21,7 +21,7 @@ import java.io.IOException; * * 补充:Spring Security 通过 {@link ExceptionTranslationFilter#handleAccessDeniedException(HttpServletRequest, HttpServletResponse, FilterChain, AccessDeniedException)} 方法,调用当前类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Component @SuppressWarnings("JavadocReference") diff --git a/win-example/win-sso-demo-by-password/src/main/java/com/win/ssodemo/framework/core/util/SecurityUtils.java b/win-example/win-sso-demo-by-password/src/main/java/com/win/ssodemo/framework/core/util/SecurityUtils.java index caada34c..22bc817f 100644 --- a/win-example/win-sso-demo-by-password/src/main/java/com/win/ssodemo/framework/core/util/SecurityUtils.java +++ b/win-example/win-sso-demo-by-password/src/main/java/com/win/ssodemo/framework/core/util/SecurityUtils.java @@ -15,7 +15,7 @@ import java.util.Collections; /** * 安全服务工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class SecurityUtils { diff --git a/win-example/win-sso-demo-by-password/src/main/java/com/win/ssodemo/framework/core/util/ServletUtils.java b/win-example/win-sso-demo-by-password/src/main/java/com/win/ssodemo/framework/core/util/ServletUtils.java index 32600190..4c1c65f7 100644 --- a/win-example/win-sso-demo-by-password/src/main/java/com/win/ssodemo/framework/core/util/ServletUtils.java +++ b/win-example/win-sso-demo-by-password/src/main/java/com/win/ssodemo/framework/core/util/ServletUtils.java @@ -9,7 +9,7 @@ import javax.servlet.http.HttpServletResponse; /** * 客户端工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class ServletUtils { diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/core/IntArrayValuable.java b/win-framework/win-common/src/main/java/com/win/framework/common/core/IntArrayValuable.java index 02a39f0b..32577ca1 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/core/IntArrayValuable.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/core/IntArrayValuable.java @@ -3,7 +3,7 @@ package com.win.framework.common.core; /** * 可生成 Int 数组的接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface IntArrayValuable { diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/core/KeyValue.java b/win-framework/win-common/src/main/java/com/win/framework/common/core/KeyValue.java index 9a7a9da2..5ce11156 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/core/KeyValue.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/core/KeyValue.java @@ -7,7 +7,7 @@ import lombok.NoArgsConstructor; /** * Key Value 的键值对 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data @NoArgsConstructor diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/enums/CommonStatusEnum.java b/win-framework/win-common/src/main/java/com/win/framework/common/enums/CommonStatusEnum.java index f7caeda2..89d21855 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/enums/CommonStatusEnum.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/enums/CommonStatusEnum.java @@ -9,7 +9,7 @@ import java.util.Arrays; /** * 通用状态枚举 * - * @author 芋道源码 + * @author 闻荫源码 */ @Getter @AllArgsConstructor diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/enums/DocumentEnum.java b/win-framework/win-common/src/main/java/com/win/framework/common/enums/DocumentEnum.java index b698402c..7ece04d0 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/enums/DocumentEnum.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/enums/DocumentEnum.java @@ -6,7 +6,7 @@ import lombok.Getter; /** * 文档地址 * - * @author 芋道源码 + * @author 闻荫源码 */ @Getter @AllArgsConstructor diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/enums/TerminalEnum.java b/win-framework/win-common/src/main/java/com/win/framework/common/enums/TerminalEnum.java index 95cdfcf4..38088795 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/enums/TerminalEnum.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/enums/TerminalEnum.java @@ -9,7 +9,7 @@ import java.util.Arrays; /** * 终端的枚举 * - * @author 芋道源码 + * @author 闻荫源码 */ @RequiredArgsConstructor @Getter diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/enums/WebFilterOrderEnum.java b/win-framework/win-common/src/main/java/com/win/framework/common/enums/WebFilterOrderEnum.java index 9f5f424b..52d43ea2 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/enums/WebFilterOrderEnum.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/enums/WebFilterOrderEnum.java @@ -5,7 +5,7 @@ package com.win.framework.common.enums; * * 考虑到每个 starter 都需要用到该工具类,所以放到 common 模块下的 enums 包下 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface WebFilterOrderEnum { diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/exception/enums/GlobalErrorCodeConstants.java b/win-framework/win-common/src/main/java/com/win/framework/common/exception/enums/GlobalErrorCodeConstants.java index 18f1b5e4..b83510b2 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/exception/enums/GlobalErrorCodeConstants.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/exception/enums/GlobalErrorCodeConstants.java @@ -10,7 +10,7 @@ import com.win.framework.common.exception.ErrorCode; * 虽然说,HTTP 响应状态码作为业务使用表达能力偏弱,但是使用在系统层面还是非常不错的 * 比较特殊的是,因为之前一直使用 0 作为成功,就不使用 200 啦。 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface GlobalErrorCodeConstants { diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/exception/enums/ServiceErrorCodeRange.java b/win-framework/win-common/src/main/java/com/win/framework/common/exception/enums/ServiceErrorCodeRange.java index 82e7f193..b6bf7dd9 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/exception/enums/ServiceErrorCodeRange.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/exception/enums/ServiceErrorCodeRange.java @@ -25,7 +25,7 @@ package com.win.framework.common.exception.enums; * 不限制规则。 * 一般建议,每个模块自增。 * - * @author 芋道源码 + * @author 闻荫源码 */ public class ServiceErrorCodeRange { diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/util/cache/CacheUtils.java b/win-framework/win-common/src/main/java/com/win/framework/common/util/cache/CacheUtils.java index 376a00fa..c9310424 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/util/cache/CacheUtils.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/util/cache/CacheUtils.java @@ -10,7 +10,7 @@ import java.util.concurrent.Executors; /** * Cache 工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class CacheUtils { diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/util/collection/ArrayUtils.java b/win-framework/win-common/src/main/java/com/win/framework/common/util/collection/ArrayUtils.java index 63f463e0..b6de0f98 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/util/collection/ArrayUtils.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/util/collection/ArrayUtils.java @@ -13,7 +13,7 @@ import static com.win.framework.common.util.collection.CollectionUtils.convertLi /** * Array 工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class ArrayUtils { diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/util/collection/CollectionUtils.java b/win-framework/win-common/src/main/java/com/win/framework/common/util/collection/CollectionUtils.java index 40e8ffb9..6eef35f2 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/util/collection/CollectionUtils.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/util/collection/CollectionUtils.java @@ -13,7 +13,7 @@ import static java.util.Arrays.asList; /** * Collection 工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class CollectionUtils { diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/util/collection/MapUtils.java b/win-framework/win-common/src/main/java/com/win/framework/common/util/collection/MapUtils.java index 205b7a29..a3f21f67 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/util/collection/MapUtils.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/util/collection/MapUtils.java @@ -15,7 +15,7 @@ import java.util.function.Consumer; /** * Map 工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class MapUtils { diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/util/collection/SetUtils.java b/win-framework/win-common/src/main/java/com/win/framework/common/util/collection/SetUtils.java index 1f3dcebe..442d9fec 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/util/collection/SetUtils.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/util/collection/SetUtils.java @@ -7,7 +7,7 @@ import java.util.Set; /** * Set 工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class SetUtils { diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/util/date/DateUtils.java b/win-framework/win-common/src/main/java/com/win/framework/common/util/date/DateUtils.java index 89446162..cdc1d1ed 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/util/date/DateUtils.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/util/date/DateUtils.java @@ -9,7 +9,7 @@ import java.util.Date; /** * 时间工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class DateUtils { diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/util/date/LocalDateTimeUtils.java b/win-framework/win-common/src/main/java/com/win/framework/common/util/date/LocalDateTimeUtils.java index e142395b..89a90f53 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/util/date/LocalDateTimeUtils.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/util/date/LocalDateTimeUtils.java @@ -10,7 +10,7 @@ import java.time.LocalTime; /** * 时间工具类,用于 {@link java.time.LocalDateTime} * - * @author 芋道源码 + * @author 闻荫源码 */ public class LocalDateTimeUtils { diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/util/http/HttpUtils.java b/win-framework/win-common/src/main/java/com/win/framework/common/util/http/HttpUtils.java index c34aa6fc..ab7e5a8e 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/util/http/HttpUtils.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/util/http/HttpUtils.java @@ -17,7 +17,7 @@ import java.util.Map; /** * HTTP 工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class HttpUtils { diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/util/io/FileUtils.java b/win-framework/win-common/src/main/java/com/win/framework/common/util/io/FileUtils.java index c4110d94..62cc32d6 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/util/io/FileUtils.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/util/io/FileUtils.java @@ -14,7 +14,7 @@ import java.io.File; /** * 文件工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class FileUtils { diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/util/io/IoUtils.java b/win-framework/win-common/src/main/java/com/win/framework/common/util/io/IoUtils.java index bb8a5cde..1f913a79 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/util/io/IoUtils.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/util/io/IoUtils.java @@ -9,7 +9,7 @@ import java.io.InputStream; /** * IO 工具类,用于 {@link cn.hutool.core.io.IoUtil} 缺失的方法 * - * @author 芋道源码 + * @author 闻荫源码 */ public class IoUtils { diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/util/json/JsonUtils.java b/win-framework/win-common/src/main/java/com/win/framework/common/util/json/JsonUtils.java index 253626c0..80cfbd84 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/util/json/JsonUtils.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/util/json/JsonUtils.java @@ -20,7 +20,7 @@ import java.util.List; /** * JSON 工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Slf4j public class JsonUtils { diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/util/monitor/TracerUtils.java b/win-framework/win-common/src/main/java/com/win/framework/common/util/monitor/TracerUtils.java index 62d1d72d..d386c4b2 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/util/monitor/TracerUtils.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/util/monitor/TracerUtils.java @@ -7,7 +7,7 @@ import org.apache.skywalking.apm.toolkit.trace.TraceContext; * * 考虑到每个 starter 都需要用到该工具类,所以放到 common 模块下的 util 包下 * - * @author 芋道源码 + * @author 闻荫源码 */ public class TracerUtils { diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/util/number/MoneyUtils.java b/win-framework/win-common/src/main/java/com/win/framework/common/util/number/MoneyUtils.java index a588a74a..5ad168a0 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/util/number/MoneyUtils.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/util/number/MoneyUtils.java @@ -8,7 +8,7 @@ import java.math.RoundingMode; /** * 金额工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class MoneyUtils { diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/util/number/NumberUtils.java b/win-framework/win-common/src/main/java/com/win/framework/common/util/number/NumberUtils.java index ea27bb1f..efb9d46c 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/util/number/NumberUtils.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/util/number/NumberUtils.java @@ -5,7 +5,7 @@ import cn.hutool.core.util.StrUtil; /** * 数字的工具类,补全 {@link cn.hutool.core.util.NumberUtil} 的功能 * - * @author 芋道源码 + * @author 闻荫源码 */ public class NumberUtils { diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/util/object/ObjectUtils.java b/win-framework/win-common/src/main/java/com/win/framework/common/util/object/ObjectUtils.java index 730e62a0..a6273a02 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/util/object/ObjectUtils.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/util/object/ObjectUtils.java @@ -10,7 +10,7 @@ import java.util.function.Consumer; /** * Object 工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class ObjectUtils { diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/util/object/PageUtils.java b/win-framework/win-common/src/main/java/com/win/framework/common/util/object/PageUtils.java index 93de899b..bca138c6 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/util/object/PageUtils.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/util/object/PageUtils.java @@ -5,7 +5,7 @@ import com.win.framework.common.pojo.PageParam; /** * {@link com.win.framework.common.pojo.PageParam} 工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class PageUtils { diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/util/servlet/ServletUtils.java b/win-framework/win-common/src/main/java/com/win/framework/common/util/servlet/ServletUtils.java index e90406f7..ee66f3eb 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/util/servlet/ServletUtils.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/util/servlet/ServletUtils.java @@ -19,7 +19,7 @@ import java.util.Map; /** * 客户端工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class ServletUtils { diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/util/string/StrUtils.java b/win-framework/win-common/src/main/java/com/win/framework/common/util/string/StrUtils.java index ea9f46c5..4d523034 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/util/string/StrUtils.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/util/string/StrUtils.java @@ -11,7 +11,7 @@ import java.util.stream.Collectors; /** * 字符串工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class StrUtils { diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/util/validation/ValidationUtils.java b/win-framework/win-common/src/main/java/com/win/framework/common/util/validation/ValidationUtils.java index 333d1f02..660d5361 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/util/validation/ValidationUtils.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/util/validation/ValidationUtils.java @@ -14,7 +14,7 @@ import java.util.regex.Pattern; /** * 校验工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class ValidationUtils { diff --git a/win-framework/win-common/src/test/java/com/win/framework/common/util/collection/CollectionUtilsTest.java b/win-framework/win-common/src/test/java/com/win/framework/common/util/collection/CollectionUtilsTest.java deleted file mode 100644 index 17163a99..00000000 --- a/win-framework/win-common/src/test/java/com/win/framework/common/util/collection/CollectionUtilsTest.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.win.framework.common.util.collection; - -import lombok.AllArgsConstructor; -import lombok.Data; -import org.junit.jupiter.api.Test; - -import java.util.Arrays; -import java.util.Collection; -import java.util.List; -import java.util.function.BiFunction; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -/** - * {@link CollectionUtils} 的单元测试 - */ -public class CollectionUtilsTest { - - @Data - @AllArgsConstructor - private static class Dog { - - private Integer id; - private String name; - private String code; - - } - - @Test - public void testDiffList() { - // 准备参数 - Collection oldList = Arrays.asList( - new Dog(1, "花花", "hh"), - new Dog(2, "旺财", "wc") - ); - Collection newList = Arrays.asList( - new Dog(null, "花花2", "hh"), - new Dog(null, "小白", "xb") - ); - BiFunction sameFunc = (oldObj, newObj) -> { - boolean same = oldObj.getCode().equals(newObj.getCode()); - // 如果相等的情况下,需要设置下 id,后续好更新 - if (same) { - newObj.setId(oldObj.getId()); - } - return same; - }; - - // 调用 - List> result = CollectionUtils.diffList(oldList, newList, sameFunc); - // 断言 - assertEquals(result.size(), 3); - // 断言 create - assertEquals(result.get(0).size(), 1); - assertEquals(result.get(0).get(0), new Dog(null, "小白", "xb")); - // 断言 update - assertEquals(result.get(1).size(), 1); - assertEquals(result.get(1).get(0), new Dog(1, "花花2", "hh")); - // 断言 delete - assertEquals(result.get(2).size(), 1); - assertEquals(result.get(2).get(0), new Dog(2, "旺财", "wc")); - } - -} diff --git a/win-framework/win-common/《芋道 Spring Boot 参数校验 Validation 入门》.md b/win-framework/win-common/《芋道 Spring Boot 参数校验 Validation 入门》.md deleted file mode 100644 index 6067d8fe..00000000 --- a/win-framework/win-common/《芋道 Spring Boot 参数校验 Validation 入门》.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/win-framework/win-spring-boot-starter-banner/src/main/java/com/win/framework/banner/config/WinBannerAutoConfiguration.java b/win-framework/win-spring-boot-starter-banner/src/main/java/com/win/framework/banner/config/WinBannerAutoConfiguration.java index 58012afe..ec56945e 100644 --- a/win-framework/win-spring-boot-starter-banner/src/main/java/com/win/framework/banner/config/WinBannerAutoConfiguration.java +++ b/win-framework/win-spring-boot-starter-banner/src/main/java/com/win/framework/banner/config/WinBannerAutoConfiguration.java @@ -7,7 +7,7 @@ import org.springframework.context.annotation.Bean; /** * Banner 的自动配置类 * - * @author 芋道源码 + * @author 闻荫源码 */ @AutoConfiguration public class WinBannerAutoConfiguration { diff --git a/win-framework/win-spring-boot-starter-banner/src/main/java/com/win/framework/banner/core/BannerApplicationRunner.java b/win-framework/win-spring-boot-starter-banner/src/main/java/com/win/framework/banner/core/BannerApplicationRunner.java index 7a382c0e..a596f957 100644 --- a/win-framework/win-spring-boot-starter-banner/src/main/java/com/win/framework/banner/core/BannerApplicationRunner.java +++ b/win-framework/win-spring-boot-starter-banner/src/main/java/com/win/framework/banner/core/BannerApplicationRunner.java @@ -11,7 +11,7 @@ import java.util.concurrent.TimeUnit; /** * 项目启动成功后,提供文档相关的地址 * - * @author 芋道源码 + * @author 闻荫源码 */ @Slf4j public class BannerApplicationRunner implements ApplicationRunner { diff --git a/win-framework/win-spring-boot-starter-banner/src/main/java/com/win/framework/banner/package-info.java b/win-framework/win-spring-boot-starter-banner/src/main/java/com/win/framework/banner/package-info.java index 72ceca5c..7c3dc7ac 100644 --- a/win-framework/win-spring-boot-starter-banner/src/main/java/com/win/framework/banner/package-info.java +++ b/win-framework/win-spring-boot-starter-banner/src/main/java/com/win/framework/banner/package-info.java @@ -1,6 +1,6 @@ /** * Banner 用于在 console 控制台,打印开发文档、接口文档等 * - * @author 芋道源码 + * @author 闻荫源码 */ package com.win.framework.banner; diff --git a/win-framework/win-spring-boot-starter-banner/src/main/resources/banner.txt b/win-framework/win-spring-boot-starter-banner/src/main/resources/banner.txt index 569d2011..a44b2f4d 100644 --- a/win-framework/win-spring-boot-starter-banner/src/main/resources/banner.txt +++ b/win-framework/win-spring-boot-starter-banner/src/main/resources/banner.txt @@ -1,4 +1,4 @@ -芋道源码 http://www.iocoder.cn +闻荫源码 http://www.iocoder.cn Application Version: ${win.info.version} Spring Boot Version: ${spring-boot.version} diff --git a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/config/WinDataPermissionAutoConfiguration.java b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/config/WinDataPermissionAutoConfiguration.java index 074b99bc..e4cec6d4 100644 --- a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/config/WinDataPermissionAutoConfiguration.java +++ b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/config/WinDataPermissionAutoConfiguration.java @@ -15,7 +15,7 @@ import java.util.List; /** * 数据权限的自动配置类 * - * @author 芋道源码 + * @author 闻荫源码 */ @AutoConfiguration public class WinDataPermissionAutoConfiguration { diff --git a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/config/WinDeptDataPermissionAutoConfiguration.java b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/config/WinDeptDataPermissionAutoConfiguration.java index 299f868e..8cfbb712 100644 --- a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/config/WinDeptDataPermissionAutoConfiguration.java +++ b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/config/WinDeptDataPermissionAutoConfiguration.java @@ -14,7 +14,7 @@ import java.util.List; /** * 基于部门的数据权限 AutoConfiguration * - * @author 芋道源码 + * @author 闻荫源码 */ @AutoConfiguration @ConditionalOnClass(LoginUser.class) diff --git a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/annotation/DataPermission.java b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/annotation/DataPermission.java index e796a520..05606951 100644 --- a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/annotation/DataPermission.java +++ b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/annotation/DataPermission.java @@ -8,7 +8,7 @@ import java.lang.annotation.*; * 数据权限注解 * 可声明在类或者方法上,标识使用的数据权限规则 * - * @author 芋道源码 + * @author 闻荫源码 */ @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) diff --git a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/aop/DataPermissionAnnotationAdvisor.java b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/aop/DataPermissionAnnotationAdvisor.java index 2fd821aa..2caeb1f6 100644 --- a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/aop/DataPermissionAnnotationAdvisor.java +++ b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/aop/DataPermissionAnnotationAdvisor.java @@ -12,7 +12,7 @@ import org.springframework.aop.support.annotation.AnnotationMatchingPointcut; /** * {@link com.win.framework.datapermission.core.annotation.DataPermission} 注解的 Advisor 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Getter @EqualsAndHashCode(callSuper = true) diff --git a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/aop/DataPermissionAnnotationInterceptor.java b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/aop/DataPermissionAnnotationInterceptor.java index 03cebca5..b02e2a57 100644 --- a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/aop/DataPermissionAnnotationInterceptor.java +++ b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/aop/DataPermissionAnnotationInterceptor.java @@ -16,7 +16,7 @@ import java.util.concurrent.ConcurrentHashMap; * 1. 在执行方法前,将 @DataPermission 注解入栈 * 2. 在执行方法后,将 @DataPermission 注解出栈 * - * @author 芋道源码 + * @author 闻荫源码 */ @DataPermission // 该注解,用于 {@link DATA_PERMISSION_NULL} 的空对象 public class DataPermissionAnnotationInterceptor implements MethodInterceptor { diff --git a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/aop/DataPermissionContextHolder.java b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/aop/DataPermissionContextHolder.java index 6ae7ab21..2aeff981 100644 --- a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/aop/DataPermissionContextHolder.java +++ b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/aop/DataPermissionContextHolder.java @@ -9,7 +9,7 @@ import java.util.List; /** * {@link DataPermission} 注解的 Context 上下文 * - * @author 芋道源码 + * @author 闻荫源码 */ public class DataPermissionContextHolder { diff --git a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/db/DataPermissionDatabaseInterceptor.java b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/db/DataPermissionDatabaseInterceptor.java index 6d3fbb43..19fd914e 100644 --- a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/db/DataPermissionDatabaseInterceptor.java +++ b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/db/DataPermissionDatabaseInterceptor.java @@ -40,7 +40,7 @@ import java.util.concurrent.ConcurrentHashMap; * 整体的代码实现上,参考 {@link com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor} 实现。 * 所以每次 MyBatis Plus 升级时,需要 Review 下其具体的实现是否有变更! * - * @author 芋道源码 + * @author 闻荫源码 */ @RequiredArgsConstructor public class DataPermissionDatabaseInterceptor extends JsqlParserSupport implements InnerInterceptor { @@ -534,7 +534,7 @@ public class DataPermissionDatabaseInterceptor extends JsqlParserSupport impleme /** * SQL 解析上下文,方便透传 {@link DataPermissionRule} 规则 * - * @author 芋道源码 + * @author 闻荫源码 */ static final class ContextHolder { @@ -576,7 +576,7 @@ public class DataPermissionDatabaseInterceptor extends JsqlParserSupport impleme * 目前主要用于,记录 {@link DataPermissionRule} 是否对指定 {@link MappedStatement} 无效 * 如果无效,则可以避免 SQL 的解析,加快速度 * - * @author 芋道源码 + * @author 闻荫源码 */ static final class MappedStatementCache { diff --git a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/rule/DataPermissionRule.java b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/rule/DataPermissionRule.java index 83efe1c4..258e3deb 100644 --- a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/rule/DataPermissionRule.java +++ b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/rule/DataPermissionRule.java @@ -10,7 +10,7 @@ import java.util.Set; * 数据权限规则接口 * 通过实现接口,自定义数据规则。例如说, * - * @author 芋道源码 + * @author 闻荫源码 */ public interface DataPermissionRule { diff --git a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/rule/DataPermissionRuleFactory.java b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/rule/DataPermissionRuleFactory.java index 88b9094f..0211cd9d 100644 --- a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/rule/DataPermissionRuleFactory.java +++ b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/rule/DataPermissionRuleFactory.java @@ -6,7 +6,7 @@ import java.util.List; * {@link DataPermissionRule} 工厂接口 * 作为 {@link DataPermissionRule} 的容器,提供管理能力 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface DataPermissionRuleFactory { diff --git a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/rule/DataPermissionRuleFactoryImpl.java b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/rule/DataPermissionRuleFactoryImpl.java index 1e1e703c..8c48aebc 100644 --- a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/rule/DataPermissionRuleFactoryImpl.java +++ b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/rule/DataPermissionRuleFactoryImpl.java @@ -14,7 +14,7 @@ import java.util.stream.Collectors; * 默认的 DataPermissionRuleFactoryImpl 实现类 * 支持通过 {@link DataPermissionContextHolder} 过滤数据权限 * - * @author 芋道源码 + * @author 闻荫源码 */ @RequiredArgsConstructor public class DataPermissionRuleFactoryImpl implements DataPermissionRuleFactory { diff --git a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/rule/dept/DeptDataPermissionRule.java b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/rule/dept/DeptDataPermissionRule.java index a6570e76..51ffa230 100644 --- a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/rule/dept/DeptDataPermissionRule.java +++ b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/rule/dept/DeptDataPermissionRule.java @@ -42,7 +42,7 @@ import java.util.Set; * 3)想要保证原 dept_id 和 user_id 都可以看的到,此时使用 dept_id 和 user_id 一起过滤; * 最终过滤条件是 WHERE dept_id = ? OR user_id IN (?, ?, ? ...) * - * @author 芋道源码 + * @author 闻荫源码 */ @AllArgsConstructor @Slf4j diff --git a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/rule/dept/DeptDataPermissionRuleCustomizer.java b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/rule/dept/DeptDataPermissionRuleCustomizer.java index ae4ca722..300ec34a 100644 --- a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/rule/dept/DeptDataPermissionRuleCustomizer.java +++ b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/rule/dept/DeptDataPermissionRuleCustomizer.java @@ -3,7 +3,7 @@ package com.win.framework.datapermission.core.rule.dept; /** * {@link DeptDataPermissionRule} 的自定义配置接口 * - * @author 芋道源码 + * @author 闻荫源码 */ @FunctionalInterface public interface DeptDataPermissionRuleCustomizer { diff --git a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/rule/dept/package-info.java b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/rule/dept/package-info.java index f3725201..aeef564b 100644 --- a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/rule/dept/package-info.java +++ b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/rule/dept/package-info.java @@ -1,6 +1,6 @@ /** * 基于部门的数据权限规则 * - * @author 芋道源码 + * @author 闻荫源码 */ package com.win.framework.datapermission.core.rule.dept; diff --git a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/util/DataPermissionUtils.java b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/util/DataPermissionUtils.java index f5cb42af..84790aa9 100644 --- a/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/util/DataPermissionUtils.java +++ b/win-framework/win-spring-boot-starter-biz-data-permission/src/main/java/com/win/framework/datapermission/core/util/DataPermissionUtils.java @@ -7,7 +7,7 @@ import lombok.SneakyThrows; /** * 数据权限 Util * - * @author 芋道源码 + * @author 闻荫源码 */ public class DataPermissionUtils { diff --git a/win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/aop/DataPermissionAnnotationInterceptorTest.java b/win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/aop/DataPermissionAnnotationInterceptorTest.java deleted file mode 100644 index 610d5b72..00000000 --- a/win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/aop/DataPermissionAnnotationInterceptorTest.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.win.framework.datapermission.core.aop; - -import cn.hutool.core.collection.CollUtil; -import com.win.framework.datapermission.core.annotation.DataPermission; -import com.win.framework.test.core.ut.BaseMockitoUnitTest; -import org.aopalliance.intercept.MethodInvocation; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; - -import java.lang.reflect.Method; - -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.when; - -/** - * {@link DataPermissionAnnotationInterceptor} 的单元测试 - * - * @author 芋道源码 - */ -public class DataPermissionAnnotationInterceptorTest extends BaseMockitoUnitTest { - - @InjectMocks - private DataPermissionAnnotationInterceptor interceptor; - - @Mock - private MethodInvocation methodInvocation; - - @BeforeEach - public void setUp() { - interceptor.getDataPermissionCache().clear(); - } - - @Test // 无 @DataPermission 注解 - public void testInvoke_none() throws Throwable { - // 参数 - mockMethodInvocation(TestNone.class); - - // 调用 - Object result = interceptor.invoke(methodInvocation); - // 断言 - assertEquals("none", result); - assertEquals(1, interceptor.getDataPermissionCache().size()); - assertTrue(CollUtil.getFirst(interceptor.getDataPermissionCache().values()).enable()); - } - - @Test // 在 Method 上有 @DataPermission 注解 - public void testInvoke_method() throws Throwable { - // 参数 - mockMethodInvocation(TestMethod.class); - - // 调用 - Object result = interceptor.invoke(methodInvocation); - // 断言 - assertEquals("method", result); - assertEquals(1, interceptor.getDataPermissionCache().size()); - assertFalse(CollUtil.getFirst(interceptor.getDataPermissionCache().values()).enable()); - } - - @Test // 在 Class 上有 @DataPermission 注解 - public void testInvoke_class() throws Throwable { - // 参数 - mockMethodInvocation(TestClass.class); - - // 调用 - Object result = interceptor.invoke(methodInvocation); - // 断言 - assertEquals("class", result); - assertEquals(1, interceptor.getDataPermissionCache().size()); - assertFalse(CollUtil.getFirst(interceptor.getDataPermissionCache().values()).enable()); - } - - private void mockMethodInvocation(Class clazz) throws Throwable { - Object targetObject = clazz.newInstance(); - Method method = targetObject.getClass().getMethod("echo"); - when(methodInvocation.getThis()).thenReturn(targetObject); - when(methodInvocation.getMethod()).thenReturn(method); - when(methodInvocation.proceed()).then(invocationOnMock -> method.invoke(targetObject)); - } - - static class TestMethod { - - @DataPermission(enable = false) - public String echo() { - return "method"; - } - - } - - @DataPermission(enable = false) - static class TestClass { - - public String echo() { - return "class"; - } - - } - - static class TestNone { - - public String echo() { - return "none"; - } - - } - -} diff --git a/win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/aop/DataPermissionContextHolderTest.java b/win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/aop/DataPermissionContextHolderTest.java deleted file mode 100644 index 68590e1e..00000000 --- a/win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/aop/DataPermissionContextHolderTest.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.win.framework.datapermission.core.aop; - -import com.win.framework.datapermission.core.annotation.DataPermission; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertSame; -import static org.mockito.Mockito.mock; - -/** - * {@link DataPermissionContextHolder} 的单元测试 - * - * @author 芋道源码 - */ -class DataPermissionContextHolderTest { - - @BeforeEach - public void setUp() { - DataPermissionContextHolder.clear(); - } - - @Test - public void testGet() { - // mock 方法 - DataPermission dataPermission01 = mock(DataPermission.class); - DataPermissionContextHolder.add(dataPermission01); - DataPermission dataPermission02 = mock(DataPermission.class); - DataPermissionContextHolder.add(dataPermission02); - - // 调用 - DataPermission result = DataPermissionContextHolder.get(); - // 断言 - assertSame(result, dataPermission02); - } - - @Test - public void testPush() { - // 调用 - DataPermission dataPermission01 = mock(DataPermission.class); - DataPermissionContextHolder.add(dataPermission01); - DataPermission dataPermission02 = mock(DataPermission.class); - DataPermissionContextHolder.add(dataPermission02); - // 断言 - DataPermission first = DataPermissionContextHolder.getAll().get(0); - DataPermission second = DataPermissionContextHolder.getAll().get(1); - assertSame(dataPermission01, first); - assertSame(dataPermission02, second); - } - - @Test - public void testRemove() { - // mock 方法 - DataPermission dataPermission01 = mock(DataPermission.class); - DataPermissionContextHolder.add(dataPermission01); - DataPermission dataPermission02 = mock(DataPermission.class); - DataPermissionContextHolder.add(dataPermission02); - - // 调用 - DataPermission result = DataPermissionContextHolder.remove(); - // 断言 - assertSame(result, dataPermission02); - assertEquals(1, DataPermissionContextHolder.getAll().size()); - } - -} diff --git a/win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/db/DataPermissionDatabaseInterceptorTest.java b/win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/db/DataPermissionDatabaseInterceptorTest.java deleted file mode 100644 index 1aef53c6..00000000 --- a/win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/db/DataPermissionDatabaseInterceptorTest.java +++ /dev/null @@ -1,190 +0,0 @@ -package com.win.framework.datapermission.core.db; - -import com.win.framework.common.util.collection.SetUtils; -import com.win.framework.datapermission.core.rule.DataPermissionRule; -import com.win.framework.datapermission.core.rule.DataPermissionRuleFactory; -import com.win.framework.mybatis.core.util.MyBatisUtils; -import com.win.framework.test.core.ut.BaseMockitoUnitTest; -import com.baomidou.mybatisplus.core.toolkit.PluginUtils; -import net.sf.jsqlparser.expression.Alias; -import net.sf.jsqlparser.expression.Expression; -import net.sf.jsqlparser.expression.LongValue; -import net.sf.jsqlparser.expression.operators.relational.EqualsTo; -import net.sf.jsqlparser.schema.Column; -import org.apache.ibatis.executor.Executor; -import org.apache.ibatis.executor.statement.StatementHandler; -import org.apache.ibatis.mapping.BoundSql; -import org.apache.ibatis.mapping.MappedStatement; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.MockedStatic; - -import java.sql.Connection; -import java.util.*; - -import static java.util.Collections.singletonList; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - -/** - * {@link DataPermissionDatabaseInterceptor} 的单元测试 - * 主要测试 {@link DataPermissionDatabaseInterceptor#beforePrepare(StatementHandler, Connection, Integer)} - * 和 {@link DataPermissionDatabaseInterceptor#beforeUpdate(Executor, MappedStatement, Object)} - * 以及在这个过程中,ContextHolder 和 MappedStatementCache - * - * @author 芋道源码 - */ -public class DataPermissionDatabaseInterceptorTest extends BaseMockitoUnitTest { - - @InjectMocks - private DataPermissionDatabaseInterceptor interceptor; - - @Mock - private DataPermissionRuleFactory ruleFactory; - - @BeforeEach - public void setUp() { - // 清理上下文 - DataPermissionDatabaseInterceptor.ContextHolder.clear(); - // 清空缓存 - interceptor.getMappedStatementCache().clear(); - } - - @Test // 不存在规则,且不匹配 - public void testBeforeQuery_withoutRule() { - try (MockedStatic pluginUtilsMock = mockStatic(PluginUtils.class)) { - // 准备参数 - MappedStatement mappedStatement = mock(MappedStatement.class); - BoundSql boundSql = mock(BoundSql.class); - - // 调用 - interceptor.beforeQuery(null, mappedStatement, null, null, null, boundSql); - // 断言 - pluginUtilsMock.verify(() -> PluginUtils.mpBoundSql(boundSql), never()); - } - } - - @Test // 存在规则,且不匹配 - public void testBeforeQuery_withMatchRule() { - try (MockedStatic pluginUtilsMock = mockStatic(PluginUtils.class)) { - // 准备参数 - MappedStatement mappedStatement = mock(MappedStatement.class); - BoundSql boundSql = mock(BoundSql.class); - // mock 方法(数据权限) - when(ruleFactory.getDataPermissionRule(same(mappedStatement.getId()))) - .thenReturn(singletonList(new DeptDataPermissionRule())); - // mock 方法(MPBoundSql) - PluginUtils.MPBoundSql mpBs = mock(PluginUtils.MPBoundSql.class); - pluginUtilsMock.when(() -> PluginUtils.mpBoundSql(same(boundSql))).thenReturn(mpBs); - // mock 方法(SQL) - String sql = "select * from t_user where id = 1"; - when(mpBs.sql()).thenReturn(sql); - // 针对 ContextHolder 和 MappedStatementCache 暂时不 mock,主要想校验过程中,数据是否正确 - - // 调用 - interceptor.beforeQuery(null, mappedStatement, null, null, null, boundSql); - // 断言 - verify(mpBs, times(1)).sql( - eq("SELECT * FROM t_user WHERE id = 1 AND t_user.dept_id = 100")); - // 断言缓存 - assertTrue(interceptor.getMappedStatementCache().getNoRewritableMappedStatements().isEmpty()); - } - } - - @Test // 存在规则,但不匹配 - public void testBeforeQuery_withoutMatchRule() { - try (MockedStatic pluginUtilsMock = mockStatic(PluginUtils.class)) { - // 准备参数 - MappedStatement mappedStatement = mock(MappedStatement.class); - BoundSql boundSql = mock(BoundSql.class); - // mock 方法(数据权限) - when(ruleFactory.getDataPermissionRule(same(mappedStatement.getId()))) - .thenReturn(singletonList(new DeptDataPermissionRule())); - // mock 方法(MPBoundSql) - PluginUtils.MPBoundSql mpBs = mock(PluginUtils.MPBoundSql.class); - pluginUtilsMock.when(() -> PluginUtils.mpBoundSql(same(boundSql))).thenReturn(mpBs); - // mock 方法(SQL) - String sql = "select * from t_role where id = 1"; - when(mpBs.sql()).thenReturn(sql); - // 针对 ContextHolder 和 MappedStatementCache 暂时不 mock,主要想校验过程中,数据是否正确 - - // 调用 - interceptor.beforeQuery(null, mappedStatement, null, null, null, boundSql); - // 断言 - verify(mpBs, times(1)).sql( - eq("SELECT * FROM t_role WHERE id = 1")); - // 断言缓存 - assertFalse(interceptor.getMappedStatementCache().getNoRewritableMappedStatements().isEmpty()); - } - } - - @Test - public void testAddNoRewritable() { - // 准备参数 - MappedStatement ms = mock(MappedStatement.class); - List rules = singletonList(new DeptDataPermissionRule()); - // mock 方法 - when(ms.getId()).thenReturn("selectById"); - - // 调用 - interceptor.getMappedStatementCache().addNoRewritable(ms, rules); - // 断言 - Map, Set> noRewritableMappedStatements = - interceptor.getMappedStatementCache().getNoRewritableMappedStatements(); - assertEquals(1, noRewritableMappedStatements.size()); - assertEquals(SetUtils.asSet("selectById"), noRewritableMappedStatements.get(DeptDataPermissionRule.class)); - } - - @Test - public void testNoRewritable() { - // 准备参数 - MappedStatement ms = mock(MappedStatement.class); - // mock 方法 - when(ms.getId()).thenReturn("selectById"); - // mock 数据 - List rules = singletonList(new DeptDataPermissionRule()); - interceptor.getMappedStatementCache().addNoRewritable(ms, rules); - - // 场景一,rules 为空 - assertTrue(interceptor.getMappedStatementCache().noRewritable(ms, null)); - // 场景二,rules 非空,可重写 - assertFalse(interceptor.getMappedStatementCache().noRewritable(ms, singletonList(new EmptyDataPermissionRule()))); - // 场景三,rule 非空,不可重写 - assertTrue(interceptor.getMappedStatementCache().noRewritable(ms, rules)); - } - - private static class DeptDataPermissionRule implements DataPermissionRule { - - private static final String COLUMN = "dept_id"; - - @Override - public Set getTableNames() { - return SetUtils.asSet("t_user"); - } - - @Override - public Expression getExpression(String tableName, Alias tableAlias) { - Column column = MyBatisUtils.buildColumn(tableName, tableAlias, COLUMN); - LongValue value = new LongValue(100L); - return new EqualsTo(column, value); - } - - } - - private static class EmptyDataPermissionRule implements DataPermissionRule { - - @Override - public Set getTableNames() { - return Collections.emptySet(); - } - - @Override - public Expression getExpression(String tableName, Alias tableAlias) { - return null; - } - - } - -} diff --git a/win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/db/DataPermissionDatabaseInterceptorTest2.java b/win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/db/DataPermissionDatabaseInterceptorTest2.java deleted file mode 100644 index 946eec47..00000000 --- a/win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/db/DataPermissionDatabaseInterceptorTest2.java +++ /dev/null @@ -1,533 +0,0 @@ -package com.win.framework.datapermission.core.db; - -import com.win.framework.datapermission.core.rule.DataPermissionRule; -import com.win.framework.datapermission.core.rule.DataPermissionRuleFactory; -import com.win.framework.mybatis.core.util.MyBatisUtils; -import com.win.framework.test.core.ut.BaseMockitoUnitTest; -import net.sf.jsqlparser.expression.Alias; -import net.sf.jsqlparser.expression.Expression; -import net.sf.jsqlparser.expression.LongValue; -import net.sf.jsqlparser.expression.operators.relational.EqualsTo; -import net.sf.jsqlparser.expression.operators.relational.ExpressionList; -import net.sf.jsqlparser.expression.operators.relational.InExpression; -import net.sf.jsqlparser.schema.Column; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; - -import java.util.Arrays; -import java.util.Set; - -import static com.win.framework.common.util.collection.SetUtils.asSet; -import static org.junit.jupiter.api.Assertions.assertEquals; - -/** - * {@link DataPermissionDatabaseInterceptor} 的单元测试 - * 主要复用了 MyBatis Plus 的 TenantLineInnerInterceptorTest 的单元测试 - * 不过它的单元测试不是很规范,考虑到是复用的,所以暂时不进行修改~ - * - * @author 芋道源码 - */ -public class DataPermissionDatabaseInterceptorTest2 extends BaseMockitoUnitTest { - - @InjectMocks - private DataPermissionDatabaseInterceptor interceptor; - - @Mock - private DataPermissionRuleFactory ruleFactory; - - @BeforeEach - public void setUp() { - // 租户的数据权限规则 - DataPermissionRule tenantRule = new DataPermissionRule() { - - private static final String COLUMN = "tenant_id"; - - @Override - public Set getTableNames() { - return asSet("entity", "entity1", "entity2", "entity3", "t1", "t2", "sys_dict_item", // 支持 MyBatis Plus 的单元测试 - "t_user", "t_role"); // 满足自己的单元测试 - } - - @Override - public Expression getExpression(String tableName, Alias tableAlias) { - Column column = MyBatisUtils.buildColumn(tableName, tableAlias, COLUMN); - LongValue value = new LongValue(1L); - return new EqualsTo(column, value); - } - - }; - // 部门的数据权限规则 - DataPermissionRule deptRule = new DataPermissionRule() { - - private static final String COLUMN = "dept_id"; - - @Override - public Set getTableNames() { - return asSet("t_user"); // 满足自己的单元测试 - } - - @Override - public Expression getExpression(String tableName, Alias tableAlias) { - Column column = MyBatisUtils.buildColumn(tableName, tableAlias, COLUMN); - ExpressionList values = new ExpressionList(new LongValue(10L), - new LongValue(20L)); - return new InExpression(column, values); - } - - }; - // 设置到上下文,保证 - DataPermissionDatabaseInterceptor.ContextHolder.init(Arrays.asList(tenantRule, deptRule)); - } - - @Test - void delete() { - assertSql("delete from entity where id = ?", - "DELETE FROM entity WHERE id = ? AND entity.tenant_id = 1"); - } - - @Test - void update() { - assertSql("update entity set name = ? where id = ?", - "UPDATE entity SET name = ? WHERE id = ? AND entity.tenant_id = 1"); - } - - @Test - void selectSingle() { - // 单表 - assertSql("select * from entity where id = ?", - "SELECT * FROM entity WHERE id = ? AND entity.tenant_id = 1"); - - assertSql("select * from entity where id = ? or name = ?", - "SELECT * FROM entity WHERE (id = ? OR name = ?) AND entity.tenant_id = 1"); - - assertSql("SELECT * FROM entity WHERE (id = ? OR name = ?)", - "SELECT * FROM entity WHERE (id = ? OR name = ?) AND entity.tenant_id = 1"); - - /* not */ - assertSql("SELECT * FROM entity WHERE not (id = ? OR name = ?)", - "SELECT * FROM entity WHERE NOT (id = ? OR name = ?) AND entity.tenant_id = 1"); - } - - @Test - void selectSubSelectIn() { - /* in */ - assertSql("SELECT * FROM entity e WHERE e.id IN (select e1.id from entity1 e1 where e1.id = ?)", - "SELECT * FROM entity e WHERE e.id IN (SELECT e1.id FROM entity1 e1 WHERE e1.id = ? AND e1.tenant_id = 1) AND e.tenant_id = 1"); - // 在最前 - assertSql("SELECT * FROM entity e WHERE e.id IN " + - "(select e1.id from entity1 e1 where e1.id = ?) and e.id = ?", - "SELECT * FROM entity e WHERE e.id IN " + - "(SELECT e1.id FROM entity1 e1 WHERE e1.id = ? AND e1.tenant_id = 1) AND e.id = ? AND e.tenant_id = 1"); - // 在最后 - assertSql("SELECT * FROM entity e WHERE e.id = ? and e.id IN " + - "(select e1.id from entity1 e1 where e1.id = ?)", - "SELECT * FROM entity e WHERE e.id = ? AND e.id IN " + - "(SELECT e1.id FROM entity1 e1 WHERE e1.id = ? AND e1.tenant_id = 1) AND e.tenant_id = 1"); - // 在中间 - assertSql("SELECT * FROM entity e WHERE e.id = ? and e.id IN " + - "(select e1.id from entity1 e1 where e1.id = ?) and e.id = ?", - "SELECT * FROM entity e WHERE e.id = ? AND e.id IN " + - "(SELECT e1.id FROM entity1 e1 WHERE e1.id = ? AND e1.tenant_id = 1) AND e.id = ? AND e.tenant_id = 1"); - } - - @Test - void selectSubSelectEq() { - /* = */ - assertSql("SELECT * FROM entity e WHERE e.id = (select e1.id from entity1 e1 where e1.id = ?)", - "SELECT * FROM entity e WHERE e.id = (SELECT e1.id FROM entity1 e1 WHERE e1.id = ? AND e1.tenant_id = 1) AND e.tenant_id = 1"); - } - - @Test - void selectSubSelectInnerNotEq() { - /* inner not = */ - assertSql("SELECT * FROM entity e WHERE not (e.id = (select e1.id from entity1 e1 where e1.id = ?))", - "SELECT * FROM entity e WHERE NOT (e.id = (SELECT e1.id FROM entity1 e1 WHERE e1.id = ? AND e1.tenant_id = 1)) AND e.tenant_id = 1"); - - assertSql("SELECT * FROM entity e WHERE not (e.id = (select e1.id from entity1 e1 where e1.id = ?) and e.id = ?)", - "SELECT * FROM entity e WHERE NOT (e.id = (SELECT e1.id FROM entity1 e1 WHERE e1.id = ? AND e1.tenant_id = 1) AND e.id = ?) AND e.tenant_id = 1"); - } - - @Test - void selectSubSelectExists() { - /* EXISTS */ - assertSql("SELECT * FROM entity e WHERE EXISTS (select e1.id from entity1 e1 where e1.id = ?)", - "SELECT * FROM entity e WHERE EXISTS (SELECT e1.id FROM entity1 e1 WHERE e1.id = ? AND e1.tenant_id = 1) AND e.tenant_id = 1"); - - - /* NOT EXISTS */ - assertSql("SELECT * FROM entity e WHERE NOT EXISTS (select e1.id from entity1 e1 where e1.id = ?)", - "SELECT * FROM entity e WHERE NOT EXISTS (SELECT e1.id FROM entity1 e1 WHERE e1.id = ? AND e1.tenant_id = 1) AND e.tenant_id = 1"); - } - - @Test - void selectSubSelect() { - /* >= */ - assertSql("SELECT * FROM entity e WHERE e.id >= (select e1.id from entity1 e1 where e1.id = ?)", - "SELECT * FROM entity e WHERE e.id >= (SELECT e1.id FROM entity1 e1 WHERE e1.id = ? AND e1.tenant_id = 1) AND e.tenant_id = 1"); - - - /* <= */ - assertSql("SELECT * FROM entity e WHERE e.id <= (select e1.id from entity1 e1 where e1.id = ?)", - "SELECT * FROM entity e WHERE e.id <= (SELECT e1.id FROM entity1 e1 WHERE e1.id = ? AND e1.tenant_id = 1) AND e.tenant_id = 1"); - - - /* <> */ - assertSql("SELECT * FROM entity e WHERE e.id <> (select e1.id from entity1 e1 where e1.id = ?)", - "SELECT * FROM entity e WHERE e.id <> (SELECT e1.id FROM entity1 e1 WHERE e1.id = ? AND e1.tenant_id = 1) AND e.tenant_id = 1"); - } - - @Test - void selectFromSelect() { - assertSql("SELECT * FROM (select e.id from entity e WHERE e.id = (select e1.id from entity1 e1 where e1.id = ?))", - "SELECT * FROM (SELECT e.id FROM entity e WHERE e.id = (SELECT e1.id FROM entity1 e1 WHERE e1.id = ? AND e1.tenant_id = 1) AND e.tenant_id = 1)"); - } - - @Test - void selectBodySubSelect() { - assertSql("select t1.col1,(select t2.col2 from t2 t2 where t1.col1=t2.col1) from t1 t1", - "SELECT t1.col1, (SELECT t2.col2 FROM t2 t2 WHERE t1.col1 = t2.col1 AND t2.tenant_id = 1) FROM t1 t1 WHERE t1.tenant_id = 1"); - } - - @Test - void selectLeftJoin() { - // left join - assertSql("SELECT * FROM entity e " + - "left join entity1 e1 on e1.id = e.id " + - "WHERE e.id = ? OR e.name = ?", - "SELECT * FROM entity e " + - "LEFT JOIN entity1 e1 ON e1.id = e.id AND e1.tenant_id = 1 " + - "WHERE (e.id = ? OR e.name = ?) AND e.tenant_id = 1"); - - assertSql("SELECT * FROM entity e " + - "left join entity1 e1 on e1.id = e.id " + - "WHERE (e.id = ? OR e.name = ?)", - "SELECT * FROM entity e " + - "LEFT JOIN entity1 e1 ON e1.id = e.id AND e1.tenant_id = 1 " + - "WHERE (e.id = ? OR e.name = ?) AND e.tenant_id = 1"); - - assertSql("SELECT * FROM entity e " + - "left join entity1 e1 on e1.id = e.id " + - "left join entity2 e2 on e1.id = e2.id", - "SELECT * FROM entity e " + - "LEFT JOIN entity1 e1 ON e1.id = e.id AND e1.tenant_id = 1 " + - "LEFT JOIN entity2 e2 ON e1.id = e2.id AND e2.tenant_id = 1 " + - "WHERE e.tenant_id = 1"); - } - - @Test - void selectRightJoin() { - // right join - assertSql("SELECT * FROM entity e " + - "right join entity1 e1 on e1.id = e.id", - "SELECT * FROM entity e " + - "RIGHT JOIN entity1 e1 ON e1.id = e.id AND e.tenant_id = 1 " + - "WHERE e1.tenant_id = 1"); - - assertSql("SELECT * FROM with_as_1 e " + - "right join entity1 e1 on e1.id = e.id", - "SELECT * FROM with_as_1 e " + - "RIGHT JOIN entity1 e1 ON e1.id = e.id " + - "WHERE e1.tenant_id = 1"); - - assertSql("SELECT * FROM entity e " + - "right join entity1 e1 on e1.id = e.id " + - "WHERE e.id = ? OR e.name = ?", - "SELECT * FROM entity e " + - "RIGHT JOIN entity1 e1 ON e1.id = e.id AND e.tenant_id = 1 " + - "WHERE (e.id = ? OR e.name = ?) AND e1.tenant_id = 1"); - - assertSql("SELECT * FROM entity e " + - "right join entity1 e1 on e1.id = e.id " + - "right join entity2 e2 on e1.id = e2.id ", - "SELECT * FROM entity e " + - "RIGHT JOIN entity1 e1 ON e1.id = e.id AND e.tenant_id = 1 " + - "RIGHT JOIN entity2 e2 ON e1.id = e2.id AND e1.tenant_id = 1 " + - "WHERE e2.tenant_id = 1"); - } - - @Test - void selectMixJoin() { - assertSql("SELECT * FROM entity e " + - "right join entity1 e1 on e1.id = e.id " + - "left join entity2 e2 on e1.id = e2.id", - "SELECT * FROM entity e " + - "RIGHT JOIN entity1 e1 ON e1.id = e.id AND e.tenant_id = 1 " + - "LEFT JOIN entity2 e2 ON e1.id = e2.id AND e2.tenant_id = 1 " + - "WHERE e1.tenant_id = 1"); - - assertSql("SELECT * FROM entity e " + - "left join entity1 e1 on e1.id = e.id " + - "right join entity2 e2 on e1.id = e2.id", - "SELECT * FROM entity e " + - "LEFT JOIN entity1 e1 ON e1.id = e.id AND e1.tenant_id = 1 " + - "RIGHT JOIN entity2 e2 ON e1.id = e2.id AND e1.tenant_id = 1 " + - "WHERE e2.tenant_id = 1"); - - assertSql("SELECT * FROM entity e " + - "left join entity1 e1 on e1.id = e.id " + - "inner join entity2 e2 on e1.id = e2.id", - "SELECT * FROM entity e " + - "LEFT JOIN entity1 e1 ON e1.id = e.id AND e1.tenant_id = 1 " + - "INNER JOIN entity2 e2 ON e1.id = e2.id AND e.tenant_id = 1 AND e2.tenant_id = 1"); - } - - - @Test - void selectJoinSubSelect() { - assertSql("select * from (select * from entity) e1 " + - "left join entity2 e2 on e1.id = e2.id", - "SELECT * FROM (SELECT * FROM entity WHERE entity.tenant_id = 1) e1 " + - "LEFT JOIN entity2 e2 ON e1.id = e2.id AND e2.tenant_id = 1"); - - assertSql("select * from entity1 e1 " + - "left join (select * from entity2) e2 " + - "on e1.id = e2.id", - "SELECT * FROM entity1 e1 " + - "LEFT JOIN (SELECT * FROM entity2 WHERE entity2.tenant_id = 1) e2 " + - "ON e1.id = e2.id " + - "WHERE e1.tenant_id = 1"); - } - - @Test - void selectSubJoin() { - - assertSql("select * FROM " + - "(entity1 e1 right JOIN entity2 e2 ON e1.id = e2.id)", - "SELECT * FROM " + - "(entity1 e1 RIGHT JOIN entity2 e2 ON e1.id = e2.id AND e1.tenant_id = 1) " + - "WHERE e2.tenant_id = 1"); - - assertSql("select * FROM " + - "(entity1 e1 LEFT JOIN entity2 e2 ON e1.id = e2.id)", - "SELECT * FROM " + - "(entity1 e1 LEFT JOIN entity2 e2 ON e1.id = e2.id AND e2.tenant_id = 1) " + - "WHERE e1.tenant_id = 1"); - - - assertSql("select * FROM " + - "(entity1 e1 LEFT JOIN entity2 e2 ON e1.id = e2.id) " + - "right join entity3 e3 on e1.id = e3.id", - "SELECT * FROM " + - "(entity1 e1 LEFT JOIN entity2 e2 ON e1.id = e2.id AND e2.tenant_id = 1) " + - "RIGHT JOIN entity3 e3 ON e1.id = e3.id AND e1.tenant_id = 1 " + - "WHERE e3.tenant_id = 1"); - - - assertSql("select * FROM entity e " + - "LEFT JOIN (entity1 e1 right join entity2 e2 ON e1.id = e2.id) " + - "on e.id = e2.id", - "SELECT * FROM entity e " + - "LEFT JOIN (entity1 e1 RIGHT JOIN entity2 e2 ON e1.id = e2.id AND e1.tenant_id = 1) " + - "ON e.id = e2.id AND e2.tenant_id = 1 " + - "WHERE e.tenant_id = 1"); - - assertSql("select * FROM entity e " + - "LEFT JOIN (entity1 e1 left join entity2 e2 ON e1.id = e2.id) " + - "on e.id = e2.id", - "SELECT * FROM entity e " + - "LEFT JOIN (entity1 e1 LEFT JOIN entity2 e2 ON e1.id = e2.id AND e2.tenant_id = 1) " + - "ON e.id = e2.id AND e1.tenant_id = 1 " + - "WHERE e.tenant_id = 1"); - - assertSql("select * FROM entity e " + - "RIGHT JOIN (entity1 e1 left join entity2 e2 ON e1.id = e2.id) " + - "on e.id = e2.id", - "SELECT * FROM entity e " + - "RIGHT JOIN (entity1 e1 LEFT JOIN entity2 e2 ON e1.id = e2.id AND e2.tenant_id = 1) " + - "ON e.id = e2.id AND e.tenant_id = 1 " + - "WHERE e1.tenant_id = 1"); - } - - - @Test - void selectLeftJoinMultipleTrailingOn() { - // 多个 on 尾缀的 - assertSql("SELECT * FROM entity e " + - "LEFT JOIN entity1 e1 " + - "LEFT JOIN entity2 e2 ON e2.id = e1.id " + - "ON e1.id = e.id " + - "WHERE (e.id = ? OR e.NAME = ?)", - "SELECT * FROM entity e " + - "LEFT JOIN entity1 e1 " + - "LEFT JOIN entity2 e2 ON e2.id = e1.id AND e2.tenant_id = 1 " + - "ON e1.id = e.id AND e1.tenant_id = 1 " + - "WHERE (e.id = ? OR e.NAME = ?) AND e.tenant_id = 1"); - - assertSql("SELECT * FROM entity e " + - "LEFT JOIN entity1 e1 " + - "LEFT JOIN with_as_A e2 ON e2.id = e1.id " + - "ON e1.id = e.id " + - "WHERE (e.id = ? OR e.NAME = ?)", - "SELECT * FROM entity e " + - "LEFT JOIN entity1 e1 " + - "LEFT JOIN with_as_A e2 ON e2.id = e1.id " + - "ON e1.id = e.id AND e1.tenant_id = 1 " + - "WHERE (e.id = ? OR e.NAME = ?) AND e.tenant_id = 1"); - } - - @Test - void selectInnerJoin() { - // inner join - assertSql("SELECT * FROM entity e " + - "inner join entity1 e1 on e1.id = e.id " + - "WHERE e.id = ? OR e.name = ?", - "SELECT * FROM entity e " + - "INNER JOIN entity1 e1 ON e1.id = e.id AND e.tenant_id = 1 AND e1.tenant_id = 1 " + - "WHERE e.id = ? OR e.name = ?"); - - assertSql("SELECT * FROM entity e " + - "inner join entity1 e1 on e1.id = e.id " + - "WHERE (e.id = ? OR e.name = ?)", - "SELECT * FROM entity e " + - "INNER JOIN entity1 e1 ON e1.id = e.id AND e.tenant_id = 1 AND e1.tenant_id = 1 " + - "WHERE (e.id = ? OR e.name = ?)"); - - // 隐式内连接 - assertSql("SELECT * FROM entity,entity1 " + - "WHERE entity.id = entity1.id", - "SELECT * FROM entity, entity1 " + - "WHERE entity.id = entity1.id AND entity.tenant_id = 1 AND entity1.tenant_id = 1"); - - // 隐式内连接 - assertSql("SELECT * FROM entity a, with_as_entity1 b " + - "WHERE a.id = b.id", - "SELECT * FROM entity a, with_as_entity1 b " + - "WHERE a.id = b.id AND a.tenant_id = 1"); - - assertSql("SELECT * FROM with_as_entity a, with_as_entity1 b " + - "WHERE a.id = b.id", - "SELECT * FROM with_as_entity a, with_as_entity1 b " + - "WHERE a.id = b.id"); - - // SubJoin with 隐式内连接 - assertSql("SELECT * FROM (entity,entity1) " + - "WHERE entity.id = entity1.id", - "SELECT * FROM (entity, entity1) " + - "WHERE entity.id = entity1.id " + - "AND entity.tenant_id = 1 AND entity1.tenant_id = 1"); - - assertSql("SELECT * FROM ((entity,entity1),entity2) " + - "WHERE entity.id = entity1.id and entity.id = entity2.id", - "SELECT * FROM ((entity, entity1), entity2) " + - "WHERE entity.id = entity1.id AND entity.id = entity2.id " + - "AND entity.tenant_id = 1 AND entity1.tenant_id = 1 AND entity2.tenant_id = 1"); - - assertSql("SELECT * FROM (entity,(entity1,entity2)) " + - "WHERE entity.id = entity1.id and entity.id = entity2.id", - "SELECT * FROM (entity, (entity1, entity2)) " + - "WHERE entity.id = entity1.id AND entity.id = entity2.id " + - "AND entity.tenant_id = 1 AND entity1.tenant_id = 1 AND entity2.tenant_id = 1"); - - // 沙雕的括号写法 - assertSql("SELECT * FROM (((entity,entity1))) " + - "WHERE entity.id = entity1.id", - "SELECT * FROM (((entity, entity1))) " + - "WHERE entity.id = entity1.id " + - "AND entity.tenant_id = 1 AND entity1.tenant_id = 1"); - - } - - - @Test - void selectWithAs() { - assertSql("with with_as_A as (select * from entity) select * from with_as_A", - "WITH with_as_A AS (SELECT * FROM entity WHERE entity.tenant_id = 1) SELECT * FROM with_as_A"); - } - - - @Test - void selectIgnoreTable() { - assertSql(" SELECT dict.dict_code, item.item_text AS \"text\", item.item_value AS \"value\" FROM sys_dict_item item INNER JOIN sys_dict dict ON dict.id = item.dict_id WHERE dict.dict_code IN (1, 2, 3) AND item.item_value IN (1, 2, 3)", - "SELECT dict.dict_code, item.item_text AS \"text\", item.item_value AS \"value\" FROM sys_dict_item item INNER JOIN sys_dict dict ON dict.id = item.dict_id AND item.tenant_id = 1 WHERE dict.dict_code IN (1, 2, 3) AND item.item_value IN (1, 2, 3)"); - } - - private void assertSql(String sql, String targetSql) { - assertEquals(targetSql, interceptor.parserSingle(sql, null)); - } - - - // ========== 额外的测试 ========== - - @Test - public void testSelectSingle() { - // 单表 - assertSql("select * from t_user where id = ?", - "SELECT * FROM t_user WHERE id = ? AND t_user.tenant_id = 1 AND t_user.dept_id IN (10, 20)"); - - assertSql("select * from t_user where id = ? or name = ?", - "SELECT * FROM t_user WHERE (id = ? OR name = ?) AND t_user.tenant_id = 1 AND t_user.dept_id IN (10, 20)"); - - assertSql("SELECT * FROM t_user WHERE (id = ? OR name = ?)", - "SELECT * FROM t_user WHERE (id = ? OR name = ?) AND t_user.tenant_id = 1 AND t_user.dept_id IN (10, 20)"); - - /* not */ - assertSql("SELECT * FROM t_user WHERE not (id = ? OR name = ?)", - "SELECT * FROM t_user WHERE NOT (id = ? OR name = ?) AND t_user.tenant_id = 1 AND t_user.dept_id IN (10, 20)"); - } - - @Test - public void testSelectLeftJoin() { - // left join - assertSql("SELECT * FROM t_user e " + - "left join t_role e1 on e1.id = e.id " + - "WHERE e.id = ? OR e.name = ?", - "SELECT * FROM t_user e " + - "LEFT JOIN t_role e1 ON e1.id = e.id AND e1.tenant_id = 1 " + - "WHERE (e.id = ? OR e.name = ?) AND e.tenant_id = 1 AND e.dept_id IN (10, 20)"); - - // 条件 e.id = ? OR e.name = ? 带括号 - assertSql("SELECT * FROM t_user e " + - "left join t_role e1 on e1.id = e.id " + - "WHERE (e.id = ? OR e.name = ?)", - "SELECT * FROM t_user e " + - "LEFT JOIN t_role e1 ON e1.id = e.id AND e1.tenant_id = 1 " + - "WHERE (e.id = ? OR e.name = ?) AND e.tenant_id = 1 AND e.dept_id IN (10, 20)"); - } - - @Test - public void testSelectRightJoin() { - // right join - assertSql("SELECT * FROM t_user e " + - "right join t_role e1 on e1.id = e.id " + - "WHERE e.id = ? OR e.name = ?", - "SELECT * FROM t_user e " + - "RIGHT JOIN t_role e1 ON e1.id = e.id AND e.tenant_id = 1 AND e.dept_id IN (10, 20) " + - "WHERE (e.id = ? OR e.name = ?) AND e1.tenant_id = 1"); - - // 条件 e.id = ? OR e.name = ? 带括号 - assertSql("SELECT * FROM t_user e " + - "right join t_role e1 on e1.id = e.id " + - "WHERE (e.id = ? OR e.name = ?)", - "SELECT * FROM t_user e " + - "RIGHT JOIN t_role e1 ON e1.id = e.id AND e.tenant_id = 1 AND e.dept_id IN (10, 20) " + - "WHERE (e.id = ? OR e.name = ?) AND e1.tenant_id = 1"); - } - - @Test - public void testSelectInnerJoin() { - // inner join - assertSql("SELECT * FROM t_user e " + - "inner join entity1 e1 on e1.id = e.id " + - "WHERE e.id = ? OR e.name = ?", - "SELECT * FROM t_user e " + - "INNER JOIN entity1 e1 ON e1.id = e.id AND e.tenant_id = 1 AND e.dept_id IN (10, 20) AND e1.tenant_id = 1 " + - "WHERE e.id = ? OR e.name = ?"); - - // 条件 e.id = ? OR e.name = ? 带括号 - assertSql("SELECT * FROM t_user e " + - "inner join entity1 e1 on e1.id = e.id " + - "WHERE (e.id = ? OR e.name = ?)", - "SELECT * FROM t_user e " + - "INNER JOIN entity1 e1 ON e1.id = e.id AND e.tenant_id = 1 AND e.dept_id IN (10, 20) AND e1.tenant_id = 1 " + - "WHERE (e.id = ? OR e.name = ?)"); - - // 没有 On 的 inner join - assertSql("SELECT * FROM entity,entity1 " + - "WHERE entity.id = entity1.id", - "SELECT * FROM entity, entity1 " + - "WHERE entity.id = entity1.id AND entity.tenant_id = 1 AND entity1.tenant_id = 1"); - } - -} diff --git a/win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/rule/DataPermissionRuleFactoryImplTest.java b/win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/rule/DataPermissionRuleFactoryImplTest.java deleted file mode 100644 index e2defda3..00000000 --- a/win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/rule/DataPermissionRuleFactoryImplTest.java +++ /dev/null @@ -1,145 +0,0 @@ -package com.win.framework.datapermission.core.rule; - -import com.win.framework.datapermission.core.annotation.DataPermission; -import com.win.framework.datapermission.core.aop.DataPermissionContextHolder; -import com.win.framework.test.core.ut.BaseMockitoUnitTest; -import net.sf.jsqlparser.expression.Alias; -import net.sf.jsqlparser.expression.Expression; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Spy; -import org.springframework.core.annotation.AnnotationUtils; - -import java.util.Arrays; -import java.util.List; -import java.util.Set; - -import static com.win.framework.test.core.util.RandomUtils.randomString; -import static org.junit.jupiter.api.Assertions.*; - -/** - * {@link DataPermissionRuleFactoryImpl} 单元测试 - * - * @author 芋道源码 - */ -class DataPermissionRuleFactoryImplTest extends BaseMockitoUnitTest { - - @InjectMocks - private DataPermissionRuleFactoryImpl dataPermissionRuleFactory; - - @Spy - private List rules = Arrays.asList(new DataPermissionRule01(), - new DataPermissionRule02()); - - @BeforeEach - public void setUp() { - DataPermissionContextHolder.clear(); - } - - @Test - public void testGetDataPermissionRule_02() { - // 准备参数 - String mappedStatementId = randomString(); - - // 调用 - List result = dataPermissionRuleFactory.getDataPermissionRule(mappedStatementId); - // 断言 - assertSame(rules, result); - } - - @Test - public void testGetDataPermissionRule_03() { - // 准备参数 - String mappedStatementId = randomString(); - // mock 方法 - DataPermissionContextHolder.add(AnnotationUtils.findAnnotation(TestClass03.class, DataPermission.class)); - - // 调用 - List result = dataPermissionRuleFactory.getDataPermissionRule(mappedStatementId); - // 断言 - assertTrue(result.isEmpty()); - } - - @Test - public void testGetDataPermissionRule_04() { - // 准备参数 - String mappedStatementId = randomString(); - // mock 方法 - DataPermissionContextHolder.add(AnnotationUtils.findAnnotation(TestClass04.class, DataPermission.class)); - - // 调用 - List result = dataPermissionRuleFactory.getDataPermissionRule(mappedStatementId); - // 断言 - assertEquals(1, result.size()); - assertEquals(DataPermissionRule01.class, result.get(0).getClass()); - } - - @Test - public void testGetDataPermissionRule_05() { - // 准备参数 - String mappedStatementId = randomString(); - // mock 方法 - DataPermissionContextHolder.add(AnnotationUtils.findAnnotation(TestClass05.class, DataPermission.class)); - - // 调用 - List result = dataPermissionRuleFactory.getDataPermissionRule(mappedStatementId); - // 断言 - assertEquals(1, result.size()); - assertEquals(DataPermissionRule02.class, result.get(0).getClass()); - } - - @Test - public void testGetDataPermissionRule_06() { - // 准备参数 - String mappedStatementId = randomString(); - // mock 方法 - DataPermissionContextHolder.add(AnnotationUtils.findAnnotation(TestClass06.class, DataPermission.class)); - - // 调用 - List result = dataPermissionRuleFactory.getDataPermissionRule(mappedStatementId); - // 断言 - assertSame(rules, result); - } - - @DataPermission(enable = false) - static class TestClass03 {} - - @DataPermission(includeRules = DataPermissionRule01.class) - static class TestClass04 {} - - @DataPermission(excludeRules = DataPermissionRule01.class) - static class TestClass05 {} - - @DataPermission - static class TestClass06 {} - - static class DataPermissionRule01 implements DataPermissionRule { - - @Override - public Set getTableNames() { - return null; - } - - @Override - public Expression getExpression(String tableName, Alias tableAlias) { - return null; - } - - } - - static class DataPermissionRule02 implements DataPermissionRule { - - @Override - public Set getTableNames() { - return null; - } - - @Override - public Expression getExpression(String tableName, Alias tableAlias) { - return null; - } - - } - -} diff --git a/win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/rule/dept/DeptDataPermissionRuleTest.java b/win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/rule/dept/DeptDataPermissionRuleTest.java deleted file mode 100644 index a2d93a5d..00000000 --- a/win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/rule/dept/DeptDataPermissionRuleTest.java +++ /dev/null @@ -1,238 +0,0 @@ -package com.win.framework.datapermission.core.rule.dept; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ReflectUtil; -import com.win.framework.common.enums.UserTypeEnum; -import com.win.framework.common.util.collection.SetUtils; -import com.win.framework.security.core.LoginUser; -import com.win.framework.security.core.util.SecurityFrameworkUtils; -import com.win.framework.test.core.ut.BaseMockitoUnitTest; -import com.win.module.system.api.permission.PermissionApi; -import com.win.module.system.api.permission.dto.DeptDataPermissionRespDTO; -import net.sf.jsqlparser.expression.Alias; -import net.sf.jsqlparser.expression.Expression; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.MockedStatic; - -import java.util.Map; - -import static com.win.framework.datapermission.core.rule.dept.DeptDataPermissionRule.EXPRESSION_NULL; -import static com.win.framework.test.core.util.RandomUtils.randomPojo; -import static com.win.framework.test.core.util.RandomUtils.randomString; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.ArgumentMatchers.same; -import static org.mockito.Mockito.mockStatic; -import static org.mockito.Mockito.when; - -/** - * {@link DeptDataPermissionRule} 的单元测试 - * - * @author 芋道源码 - */ -class DeptDataPermissionRuleTest extends BaseMockitoUnitTest { - - @InjectMocks - private DeptDataPermissionRule rule; - - @Mock - private PermissionApi permissionApi; - - @BeforeEach - @SuppressWarnings("unchecked") - public void setUp() { - // 清空 rule - rule.getTableNames().clear(); - ((Map) ReflectUtil.getFieldValue(rule, "deptColumns")).clear(); - ((Map) ReflectUtil.getFieldValue(rule, "deptColumns")).clear(); - } - - @Test // 无 LoginUser - public void testGetExpression_noLoginUser() { - // 准备参数 - String tableName = randomString(); - Alias tableAlias = new Alias(randomString()); - // mock 方法 - - // 调用 - Expression expression = rule.getExpression(tableName, tableAlias); - // 断言 - assertNull(expression); - } - - @Test // 无数据权限时 - public void testGetExpression_noDeptDataPermission() { - try (MockedStatic securityFrameworkUtilsMock - = mockStatic(SecurityFrameworkUtils.class)) { - // 准备参数 - String tableName = "t_user"; - Alias tableAlias = new Alias("u"); - // mock 方法 - LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setId(1L) - .setUserType(UserTypeEnum.ADMIN.getValue())); - securityFrameworkUtilsMock.when(SecurityFrameworkUtils::getLoginUser).thenReturn(loginUser); - // mock 方法(permissionApi 返回 null) - when(permissionApi.getDeptDataPermission(eq(loginUser.getId()))).thenReturn(null); - - // 调用 - NullPointerException exception = assertThrows(NullPointerException.class, - () -> rule.getExpression(tableName, tableAlias)); - // 断言 - assertEquals("LoginUser(1) Table(t_user/u) 未返回数据权限", exception.getMessage()); - } - } - - @Test // 全部数据权限 - public void testGetExpression_allDeptDataPermission() { - try (MockedStatic securityFrameworkUtilsMock - = mockStatic(SecurityFrameworkUtils.class)) { - // 准备参数 - String tableName = "t_user"; - Alias tableAlias = new Alias("u"); - // mock 方法(LoginUser) - LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setId(1L) - .setUserType(UserTypeEnum.ADMIN.getValue())); - securityFrameworkUtilsMock.when(SecurityFrameworkUtils::getLoginUser).thenReturn(loginUser); - // mock 方法(DeptDataPermissionRespDTO) - DeptDataPermissionRespDTO deptDataPermission = new DeptDataPermissionRespDTO().setAll(true); - when(permissionApi.getDeptDataPermission(same(1L))).thenReturn(deptDataPermission); - - // 调用 - Expression expression = rule.getExpression(tableName, tableAlias); - // 断言 - assertNull(expression); - assertSame(deptDataPermission, loginUser.getContext(DeptDataPermissionRule.CONTEXT_KEY, DeptDataPermissionRespDTO.class)); - } - } - - @Test // 即不能查看部门,又不能查看自己,则说明 100% 无权限 - public void testGetExpression_noDept_noSelf() { - try (MockedStatic securityFrameworkUtilsMock - = mockStatic(SecurityFrameworkUtils.class)) { - // 准备参数 - String tableName = "t_user"; - Alias tableAlias = new Alias("u"); - // mock 方法(LoginUser) - LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setId(1L) - .setUserType(UserTypeEnum.ADMIN.getValue())); - securityFrameworkUtilsMock.when(SecurityFrameworkUtils::getLoginUser).thenReturn(loginUser); - // mock 方法(DeptDataPermissionRespDTO) - DeptDataPermissionRespDTO deptDataPermission = new DeptDataPermissionRespDTO(); - when(permissionApi.getDeptDataPermission(same(1L))).thenReturn(deptDataPermission); - - // 调用 - Expression expression = rule.getExpression(tableName, tableAlias); - // 断言 - assertEquals("null = null", expression.toString()); - assertSame(deptDataPermission, loginUser.getContext(DeptDataPermissionRule.CONTEXT_KEY, DeptDataPermissionRespDTO.class)); - } - } - - @Test // 拼接 Dept 和 User 的条件(字段都不符合) - public void testGetExpression_noDeptColumn_noSelfColumn() { - try (MockedStatic securityFrameworkUtilsMock - = mockStatic(SecurityFrameworkUtils.class)) { - // 准备参数 - String tableName = "t_user"; - Alias tableAlias = new Alias("u"); - // mock 方法(LoginUser) - LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setId(1L) - .setUserType(UserTypeEnum.ADMIN.getValue())); - securityFrameworkUtilsMock.when(SecurityFrameworkUtils::getLoginUser).thenReturn(loginUser); - // mock 方法(DeptDataPermissionRespDTO) - DeptDataPermissionRespDTO deptDataPermission = new DeptDataPermissionRespDTO() - .setDeptIds(SetUtils.asSet(10L, 20L)).setSelf(true); - when(permissionApi.getDeptDataPermission(same(1L))).thenReturn(deptDataPermission); - - // 调用 - Expression expression = rule.getExpression(tableName, tableAlias); - // 断言 - assertSame(EXPRESSION_NULL, expression); - assertSame(deptDataPermission, loginUser.getContext(DeptDataPermissionRule.CONTEXT_KEY, DeptDataPermissionRespDTO.class)); - } - } - - @Test // 拼接 Dept 和 User 的条件(self 符合) - public void testGetExpression_noDeptColumn_yesSelfColumn() { - try (MockedStatic securityFrameworkUtilsMock - = mockStatic(SecurityFrameworkUtils.class)) { - // 准备参数 - String tableName = "t_user"; - Alias tableAlias = new Alias("u"); - // mock 方法(LoginUser) - LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setId(1L) - .setUserType(UserTypeEnum.ADMIN.getValue())); - securityFrameworkUtilsMock.when(SecurityFrameworkUtils::getLoginUser).thenReturn(loginUser); - // mock 方法(DeptDataPermissionRespDTO) - DeptDataPermissionRespDTO deptDataPermission = new DeptDataPermissionRespDTO() - .setSelf(true); - when(permissionApi.getDeptDataPermission(same(1L))).thenReturn(deptDataPermission); - // 添加 user 字段配置 - rule.addUserColumn("t_user", "id"); - - // 调用 - Expression expression = rule.getExpression(tableName, tableAlias); - // 断言 - assertEquals("u.id = 1", expression.toString()); - assertSame(deptDataPermission, loginUser.getContext(DeptDataPermissionRule.CONTEXT_KEY, DeptDataPermissionRespDTO.class)); - } - } - - @Test // 拼接 Dept 和 User 的条件(dept 符合) - public void testGetExpression_yesDeptColumn_noSelfColumn() { - try (MockedStatic securityFrameworkUtilsMock - = mockStatic(SecurityFrameworkUtils.class)) { - // 准备参数 - String tableName = "t_user"; - Alias tableAlias = new Alias("u"); - // mock 方法(LoginUser) - LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setId(1L) - .setUserType(UserTypeEnum.ADMIN.getValue())); - securityFrameworkUtilsMock.when(SecurityFrameworkUtils::getLoginUser).thenReturn(loginUser); - // mock 方法(DeptDataPermissionRespDTO) - DeptDataPermissionRespDTO deptDataPermission = new DeptDataPermissionRespDTO() - .setDeptIds(CollUtil.newLinkedHashSet(10L, 20L)); - when(permissionApi.getDeptDataPermission(same(1L))).thenReturn(deptDataPermission); - // 添加 dept 字段配置 - rule.addDeptColumn("t_user", "dept_id"); - - // 调用 - Expression expression = rule.getExpression(tableName, tableAlias); - // 断言 - assertEquals("u.dept_id IN (10, 20)", expression.toString()); - assertSame(deptDataPermission, loginUser.getContext(DeptDataPermissionRule.CONTEXT_KEY, DeptDataPermissionRespDTO.class)); - } - } - - @Test // 拼接 Dept 和 User 的条件(dept + self 符合) - public void testGetExpression_yesDeptColumn_yesSelfColumn() { - try (MockedStatic securityFrameworkUtilsMock - = mockStatic(SecurityFrameworkUtils.class)) { - // 准备参数 - String tableName = "t_user"; - Alias tableAlias = new Alias("u"); - // mock 方法(LoginUser) - LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setId(1L) - .setUserType(UserTypeEnum.ADMIN.getValue())); - securityFrameworkUtilsMock.when(SecurityFrameworkUtils::getLoginUser).thenReturn(loginUser); - // mock 方法(DeptDataPermissionRespDTO) - DeptDataPermissionRespDTO deptDataPermission = new DeptDataPermissionRespDTO() - .setDeptIds(CollUtil.newLinkedHashSet(10L, 20L)).setSelf(true); - when(permissionApi.getDeptDataPermission(same(1L))).thenReturn(deptDataPermission); - // 添加 user 字段配置 - rule.addUserColumn("t_user", "id"); - // 添加 dept 字段配置 - rule.addDeptColumn("t_user", "dept_id"); - - // 调用 - Expression expression = rule.getExpression(tableName, tableAlias); - // 断言 - assertEquals("(u.dept_id IN (10, 20) OR u.id = 1)", expression.toString()); - assertSame(deptDataPermission, loginUser.getContext(DeptDataPermissionRule.CONTEXT_KEY, DeptDataPermissionRespDTO.class)); - } - } - -} diff --git a/win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/util/DataPermissionUtilsTest.java b/win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/util/DataPermissionUtilsTest.java deleted file mode 100644 index ce836dbc..00000000 --- a/win-framework/win-spring-boot-starter-biz-data-permission/src/test/java/com/win/framework/datapermission/core/util/DataPermissionUtilsTest.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.win.framework.datapermission.core.util; - -import com.win.framework.datapermission.core.aop.DataPermissionContextHolder; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.*; - -public class DataPermissionUtilsTest { - - @Test - public void testExecuteIgnore() { - DataPermissionUtils.executeIgnore(() -> assertFalse(DataPermissionContextHolder.get().enable())); - } - -} diff --git a/win-framework/win-spring-boot-starter-biz-dict/src/main/java/com/win/framework/dict/core/util/DictFrameworkUtils.java b/win-framework/win-spring-boot-starter-biz-dict/src/main/java/com/win/framework/dict/core/util/DictFrameworkUtils.java index 5ad1d722..081692be 100644 --- a/win-framework/win-spring-boot-starter-biz-dict/src/main/java/com/win/framework/dict/core/util/DictFrameworkUtils.java +++ b/win-framework/win-spring-boot-starter-biz-dict/src/main/java/com/win/framework/dict/core/util/DictFrameworkUtils.java @@ -15,7 +15,7 @@ import java.time.Duration; /** * 字典工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Slf4j public class DictFrameworkUtils { diff --git a/win-framework/win-spring-boot-starter-biz-dict/src/test/java/com/win/framework/dict/core/util/DictFrameworkUtilsTest.java b/win-framework/win-spring-boot-starter-biz-dict/src/test/java/com/win/framework/dict/core/util/DictFrameworkUtilsTest.java deleted file mode 100644 index c0d941f5..00000000 --- a/win-framework/win-spring-boot-starter-biz-dict/src/test/java/com/win/framework/dict/core/util/DictFrameworkUtilsTest.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.win.framework.dict.core.util; - -import com.win.framework.common.enums.CommonStatusEnum; -import com.win.framework.test.core.ut.BaseMockitoUnitTest; -import com.win.module.system.api.dict.DictDataApi; -import com.win.module.system.api.dict.dto.DictDataRespDTO; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.mockito.Mock; - -import static com.win.framework.test.core.util.RandomUtils.randomPojo; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.Mockito.when; - -/** - * {@link DictFrameworkUtils} 的单元测试 - */ -public class DictFrameworkUtilsTest extends BaseMockitoUnitTest { - - @Mock - private DictDataApi dictDataApi; - - @BeforeEach - public void setUp() { - DictFrameworkUtils.init(dictDataApi); - } - - @Test - public void testGetDictDataLabel() { - // mock 数据 - DictDataRespDTO dataRespDTO = randomPojo(DictDataRespDTO.class, o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus())); - // mock 方法 - when(dictDataApi.getDictData(dataRespDTO.getDictType(), dataRespDTO.getValue())).thenReturn(dataRespDTO); - // 断言返回值 - assertEquals(dataRespDTO.getLabel(), DictFrameworkUtils.getDictDataLabel(dataRespDTO.getDictType(), dataRespDTO.getValue())); - } - - @Test - public void testParseDictDataValue() { - // mock 数据 - DictDataRespDTO resp = randomPojo(DictDataRespDTO.class, o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus())); - // mock 方法 - when(dictDataApi.parseDictData(resp.getDictType(), resp.getLabel())).thenReturn(resp); - // 断言返回值 - assertEquals(resp.getValue(), DictFrameworkUtils.parseDictDataValue(resp.getDictType(), resp.getLabel())); - } - -} diff --git a/win-framework/win-spring-boot-starter-biz-error-code/src/main/java/com/win/framework/errorcode/config/WinErrorCodeConfiguration.java b/win-framework/win-spring-boot-starter-biz-error-code/src/main/java/com/win/framework/errorcode/config/WinErrorCodeConfiguration.java index 2e29f619..5b88fc39 100644 --- a/win-framework/win-spring-boot-starter-biz-error-code/src/main/java/com/win/framework/errorcode/config/WinErrorCodeConfiguration.java +++ b/win-framework/win-spring-boot-starter-biz-error-code/src/main/java/com/win/framework/errorcode/config/WinErrorCodeConfiguration.java @@ -15,7 +15,7 @@ import org.springframework.scheduling.annotation.EnableScheduling; /** * 错误码配置类 * - * @author 芋道源码 + * @author 闻荫源码 */ @AutoConfiguration @ConditionalOnProperty(prefix = "win.error-code", value = "enable", matchIfMissing = true) // 允许使用 win.error-code.enable=false 禁用访问日志 diff --git a/win-framework/win-spring-boot-starter-biz-error-code/src/main/java/com/win/framework/errorcode/package-info.java b/win-framework/win-spring-boot-starter-biz-error-code/src/main/java/com/win/framework/errorcode/package-info.java index 3cbf38ba..3af3679c 100644 --- a/win-framework/win-spring-boot-starter-biz-error-code/src/main/java/com/win/framework/errorcode/package-info.java +++ b/win-framework/win-spring-boot-starter-biz-error-code/src/main/java/com/win/framework/errorcode/package-info.java @@ -5,6 +5,6 @@ * 2. 自动更新:管理员在管理后台修数据库中的 ErrorCode 错误码时,项目自动从 system-service 服务加载最新的 ErrorCode 错误码; * 3. 自动写入:项目启动时,将项目本地的错误码写到 system-server 服务中,方便管理员在管理后台编辑; * - * @author 芋道源码 + * @author 闻荫源码 */ package com.win.framework.errorcode; diff --git a/win-framework/win-spring-boot-starter-biz-ip/src/main/java/com/win/framework/ip/core/Area.java b/win-framework/win-spring-boot-starter-biz-ip/src/main/java/com/win/framework/ip/core/Area.java index b981541f..505c0149 100644 --- a/win-framework/win-spring-boot-starter-biz-ip/src/main/java/com/win/framework/ip/core/Area.java +++ b/win-framework/win-spring-boot-starter-biz-ip/src/main/java/com/win/framework/ip/core/Area.java @@ -12,7 +12,7 @@ import java.util.List; * * 数据可见 resources/area.csv 文件 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data @AllArgsConstructor diff --git a/win-framework/win-spring-boot-starter-biz-ip/src/main/java/com/win/framework/ip/core/enums/AreaTypeEnum.java b/win-framework/win-spring-boot-starter-biz-ip/src/main/java/com/win/framework/ip/core/enums/AreaTypeEnum.java index 57c71440..dd2df2ba 100644 --- a/win-framework/win-spring-boot-starter-biz-ip/src/main/java/com/win/framework/ip/core/enums/AreaTypeEnum.java +++ b/win-framework/win-spring-boot-starter-biz-ip/src/main/java/com/win/framework/ip/core/enums/AreaTypeEnum.java @@ -9,7 +9,7 @@ import java.util.Arrays; /** * 区域类型枚举 * - * @author 芋道源码 + * @author 闻荫源码 */ @AllArgsConstructor @Getter diff --git a/win-framework/win-spring-boot-starter-biz-ip/src/main/java/com/win/framework/ip/core/utils/AreaUtils.java b/win-framework/win-spring-boot-starter-biz-ip/src/main/java/com/win/framework/ip/core/utils/AreaUtils.java index b442a6eb..14926a87 100644 --- a/win-framework/win-spring-boot-starter-biz-ip/src/main/java/com/win/framework/ip/core/utils/AreaUtils.java +++ b/win-framework/win-spring-boot-starter-biz-ip/src/main/java/com/win/framework/ip/core/utils/AreaUtils.java @@ -17,7 +17,7 @@ import java.util.Map; /** * 区域工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Slf4j public class AreaUtils { diff --git a/win-framework/win-spring-boot-starter-biz-ip/src/main/java/com/win/framework/ip/package-info.java b/win-framework/win-spring-boot-starter-biz-ip/src/main/java/com/win/framework/ip/package-info.java index 5a89bd3b..d155e792 100644 --- a/win-framework/win-spring-boot-starter-biz-ip/src/main/java/com/win/framework/ip/package-info.java +++ b/win-framework/win-spring-boot-starter-biz-ip/src/main/java/com/win/framework/ip/package-info.java @@ -6,6 +6,6 @@ * 2. 城市功能:查询城市编码对应的城市信息 * 基于 https://github.com/modood/Administrative-divisions-of-China 实现 * - * @author 芋道源码 + * @author 闻荫源码 */ package com.win.framework.ip; diff --git a/win-framework/win-spring-boot-starter-biz-ip/src/test/java/com/win/framework/ip/core/utils/AreaUtilsTest.java b/win-framework/win-spring-boot-starter-biz-ip/src/test/java/com/win/framework/ip/core/utils/AreaUtilsTest.java deleted file mode 100644 index 03b83300..00000000 --- a/win-framework/win-spring-boot-starter-biz-ip/src/test/java/com/win/framework/ip/core/utils/AreaUtilsTest.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.win.framework.ip.core.utils; - - -import com.win.framework.ip.core.Area; -import com.win.framework.ip.core.enums.AreaTypeEnum; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -/** - * {@link AreaUtils} 的单元测试 - * - * @author 芋道源码 - */ -public class AreaUtilsTest { - - @Test - public void testGetArea() { - // 调用:北京 - Area area = AreaUtils.getArea(110100); - // 断言 - assertEquals(area.getId(), 110100); - assertEquals(area.getName(), "北京市"); - assertEquals(area.getType(), AreaTypeEnum.CITY.getType()); - assertEquals(area.getParent().getId(), 110000); - assertEquals(area.getChildren().size(), 16); - } - - @Test - public void testFormat() { - assertEquals(AreaUtils.format(110105), "北京 北京市 朝阳区"); - assertEquals(AreaUtils.format(1), "中国"); - assertEquals(AreaUtils.format(2), "蒙古"); - } - -} diff --git a/win-framework/win-spring-boot-starter-biz-ip/src/test/java/com/win/framework/ip/core/utils/IPUtilsTest.java b/win-framework/win-spring-boot-starter-biz-ip/src/test/java/com/win/framework/ip/core/utils/IPUtilsTest.java deleted file mode 100644 index b43e030f..00000000 --- a/win-framework/win-spring-boot-starter-biz-ip/src/test/java/com/win/framework/ip/core/utils/IPUtilsTest.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.win.framework.ip.core.utils; - -import com.win.framework.ip.core.Area; -import org.junit.jupiter.api.Test; -import org.lionsoul.ip2region.xdb.Searcher; - - -import static org.junit.jupiter.api.Assertions.assertEquals; - -/** - * {@link IPUtils} 的单元测试 - * - * @author wanglhup - */ -public class IPUtilsTest { - - @Test - public void testGetAreaId_string() { - // 120.202.4.0|120.202.4.255|420600 - Integer areaId = IPUtils.getAreaId("120.202.4.50"); - assertEquals(420600, areaId); - } - - @Test - public void testGetAreaId_long() throws Exception { - // 120.203.123.0|120.203.133.255|360900 - long ip = Searcher.checkIP("120.203.123.250"); - Integer areaId = IPUtils.getAreaId(ip); - assertEquals(360900, areaId); - } - - @Test - public void testGetArea_string() { - // 120.202.4.0|120.202.4.255|420600 - Area area = IPUtils.getArea("120.202.4.50"); - assertEquals("襄阳市", area.getName()); - } - - @Test - public void testGetArea_long() throws Exception { - // 120.203.123.0|120.203.133.255|360900 - long ip = Searcher.checkIP("120.203.123.252"); - Area area = IPUtils.getArea(ip); - assertEquals("宜春市", area.getName()); - } - -} diff --git a/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/core/annotations/OperateLog.java b/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/core/annotations/OperateLog.java index 79f21c27..de924788 100644 --- a/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/core/annotations/OperateLog.java +++ b/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/core/annotations/OperateLog.java @@ -12,7 +12,7 @@ import java.lang.annotation.Target; /** * 操作日志注解 * - * @author 芋道源码 + * @author 闻荫源码 */ @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) diff --git a/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/core/aop/OperateLogAspect.java b/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/core/aop/OperateLogAspect.java index 67d2f238..bf6b8664 100644 --- a/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/core/aop/OperateLogAspect.java +++ b/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/core/aop/OperateLogAspect.java @@ -48,7 +48,7 @@ import static com.win.framework.common.exception.enums.GlobalErrorCodeConstants. *

* 但是,如果声明 @OperateLog 注解时,将 enable 属性设置为 false 时,强制不记录。 * - * @author 芋道源码 + * @author 闻荫源码 */ @Aspect @Slf4j diff --git a/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/core/service/OperateLog.java b/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/core/service/OperateLog.java index 9ae6c500..7c5a9413 100644 --- a/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/core/service/OperateLog.java +++ b/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/core/service/OperateLog.java @@ -8,7 +8,7 @@ import java.util.Map; /** * 操作日志 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class OperateLog { diff --git a/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/core/service/OperateLogFrameworkService.java b/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/core/service/OperateLogFrameworkService.java index e2db088a..f6f16310 100644 --- a/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/core/service/OperateLogFrameworkService.java +++ b/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/core/service/OperateLogFrameworkService.java @@ -3,7 +3,7 @@ package com.win.framework.operatelog.core.service; /** * 操作日志 Framework Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface OperateLogFrameworkService { diff --git a/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/core/service/OperateLogFrameworkServiceImpl.java b/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/core/service/OperateLogFrameworkServiceImpl.java index 1005f753..bd523318 100644 --- a/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/core/service/OperateLogFrameworkServiceImpl.java +++ b/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/core/service/OperateLogFrameworkServiceImpl.java @@ -11,7 +11,7 @@ import org.springframework.scheduling.annotation.Async; * * 基于 {@link OperateLogApi} 实现,记录操作日志 * - * @author 芋道源码 + * @author 闻荫源码 */ @RequiredArgsConstructor public class OperateLogFrameworkServiceImpl implements OperateLogFrameworkService { diff --git a/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/core/util/OperateLogUtils.java b/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/core/util/OperateLogUtils.java index 50c5ec13..3042ad11 100644 --- a/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/core/util/OperateLogUtils.java +++ b/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/core/util/OperateLogUtils.java @@ -6,7 +6,7 @@ import com.win.framework.operatelog.core.aop.OperateLogAspect; * 操作日志工具类 * 目前主要的作用,是提供给业务代码,记录操作明细和拓展字段 * - * @author 芋道源码 + * @author 闻荫源码 */ public class OperateLogUtils { diff --git a/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/package-info.java b/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/package-info.java index 8989d9d5..83db0ea5 100644 --- a/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/package-info.java +++ b/win-framework/win-spring-boot-starter-biz-operatelog/src/main/java/com/win/framework/operatelog/package-info.java @@ -1,6 +1,6 @@ /** * 用户操作日志:记录用户的操作,用于对用户的操作的审计与追溯,永久保存。 * - * @author 芋道源码 + * @author 闻荫源码 */ package com.win.framework.operatelog; diff --git a/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/config/WinSmsAutoConfiguration.java b/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/config/WinSmsAutoConfiguration.java index bd653f32..eb145975 100644 --- a/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/config/WinSmsAutoConfiguration.java +++ b/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/config/WinSmsAutoConfiguration.java @@ -8,7 +8,7 @@ import org.springframework.context.annotation.Bean; /** * 短信配置类 * - * @author 芋道源码 + * @author 闻荫源码 */ @AutoConfiguration public class WinSmsAutoConfiguration { diff --git a/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/SmsCodeMapping.java b/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/SmsCodeMapping.java index 589e5f0d..670e91f3 100644 --- a/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/SmsCodeMapping.java +++ b/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/SmsCodeMapping.java @@ -11,7 +11,7 @@ import java.util.function.Function; * @see SmsCommonResult * @see SmsFrameworkErrorCodeConstants * - * @author 芋道源码 + * @author 闻荫源码 */ public interface SmsCodeMapping extends Function { } diff --git a/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/SmsCommonResult.java b/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/SmsCommonResult.java index fc486519..43319d3f 100644 --- a/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/SmsCommonResult.java +++ b/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/SmsCommonResult.java @@ -16,7 +16,7 @@ import lombok.ToString; * * 另外,一些短信平台(例如说阿里云、腾讯云)会返回一个请求编号,用于排查请求失败的问题,我们设置到 {@link #apiRequestId} 字段 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data @EqualsAndHashCode(callSuper = true) diff --git a/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/dto/SmsReceiveRespDTO.java b/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/dto/SmsReceiveRespDTO.java index d8b342eb..b7185d09 100644 --- a/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/dto/SmsReceiveRespDTO.java +++ b/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/dto/SmsReceiveRespDTO.java @@ -7,7 +7,7 @@ import java.time.LocalDateTime; /** * 消息接收 Response DTO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class SmsReceiveRespDTO { diff --git a/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/dto/SmsSendRespDTO.java b/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/dto/SmsSendRespDTO.java index bc252497..3a95ce33 100644 --- a/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/dto/SmsSendRespDTO.java +++ b/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/dto/SmsSendRespDTO.java @@ -5,7 +5,7 @@ import lombok.Data; /** * 短信发送 Response DTO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class SmsSendRespDTO { diff --git a/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/dto/SmsTemplateRespDTO.java b/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/dto/SmsTemplateRespDTO.java index eb13b2c9..d43f476a 100644 --- a/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/dto/SmsTemplateRespDTO.java +++ b/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/dto/SmsTemplateRespDTO.java @@ -6,7 +6,7 @@ import lombok.Data; /** * 短信模板 Response DTO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class SmsTemplateRespDTO { diff --git a/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/impl/aliyun/AliyunSmsClient.java b/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/impl/aliyun/AliyunSmsClient.java index 1af9d1d6..4dd5fa6e 100644 --- a/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/impl/aliyun/AliyunSmsClient.java +++ b/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/impl/aliyun/AliyunSmsClient.java @@ -151,7 +151,7 @@ public class AliyunSmsClient extends AbstractSmsClient { * * 参见 https://help.aliyun.com/document_detail/101867.html 文档 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public static class SmsReceiveStatus { diff --git a/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/impl/aliyun/AliyunSmsCodeMapping.java b/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/impl/aliyun/AliyunSmsCodeMapping.java index 55e7ba53..1c852430 100644 --- a/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/impl/aliyun/AliyunSmsCodeMapping.java +++ b/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/impl/aliyun/AliyunSmsCodeMapping.java @@ -10,7 +10,7 @@ import com.win.framework.sms.core.enums.SmsFrameworkErrorCodeConstants; * * 参见 https://help.aliyun.com/document_detail/101346.htm 文档 * - * @author 芋道源码 + * @author 闻荫源码 */ public class AliyunSmsCodeMapping implements SmsCodeMapping { diff --git a/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/impl/debug/DebugDingTalkCodeMapping.java b/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/impl/debug/DebugDingTalkCodeMapping.java index 7c558b9f..874c8bd5 100644 --- a/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/impl/debug/DebugDingTalkCodeMapping.java +++ b/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/impl/debug/DebugDingTalkCodeMapping.java @@ -10,7 +10,7 @@ import java.util.Objects; /** * 钉钉的 SmsCodeMapping 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class DebugDingTalkCodeMapping implements SmsCodeMapping { diff --git a/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/impl/debug/DebugDingTalkSmsClient.java b/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/impl/debug/DebugDingTalkSmsClient.java index 66123c9a..6a3d949d 100644 --- a/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/impl/debug/DebugDingTalkSmsClient.java +++ b/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/client/impl/debug/DebugDingTalkSmsClient.java @@ -27,7 +27,7 @@ import java.util.Map; * * 考虑到省钱,我们使用钉钉 WebHook 模拟发送短信,方便调试。 * - * @author 芋道源码 + * @author 闻荫源码 */ public class DebugDingTalkSmsClient extends AbstractSmsClient { diff --git a/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/enums/SmsFrameworkErrorCodeConstants.java b/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/enums/SmsFrameworkErrorCodeConstants.java index 0fd5e5f6..995862fe 100644 --- a/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/enums/SmsFrameworkErrorCodeConstants.java +++ b/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/enums/SmsFrameworkErrorCodeConstants.java @@ -7,7 +7,7 @@ import com.win.framework.common.exception.ErrorCode; * * 短信框架,使用 2-001-000-000 段 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface SmsFrameworkErrorCodeConstants { diff --git a/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/enums/SmsTemplateAuditStatusEnum.java b/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/enums/SmsTemplateAuditStatusEnum.java index f957bd65..84971217 100644 --- a/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/enums/SmsTemplateAuditStatusEnum.java +++ b/win-framework/win-spring-boot-starter-biz-sms/src/main/java/com/win/framework/sms/core/enums/SmsTemplateAuditStatusEnum.java @@ -6,7 +6,7 @@ import lombok.Getter; /** * 短信模板的审核状态枚举 * - * @author 芋道源码 + * @author 闻荫源码 */ @AllArgsConstructor @Getter diff --git a/win-framework/win-spring-boot-starter-biz-sms/src/test-integration/java/com/win/framework/sms/core/client/impl/aliyun/AliyunSmsClientIntegrationTest.java b/win-framework/win-spring-boot-starter-biz-sms/src/test-integration/java/com/win/framework/sms/core/client/impl/aliyun/AliyunSmsClientIntegrationTest.java deleted file mode 100644 index 22247b2b..00000000 --- a/win-framework/win-spring-boot-starter-biz-sms/src/test-integration/java/com/win/framework/sms/core/client/impl/aliyun/AliyunSmsClientIntegrationTest.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.win.framework.sms.core.client.impl.aliyun; - -import com.win.framework.common.core.KeyValue; -import com.win.framework.sms.core.client.SmsCommonResult; -import com.win.framework.sms.core.client.dto.SmsSendRespDTO; -import com.win.framework.sms.core.client.dto.SmsTemplateRespDTO; -import com.win.framework.sms.core.client.impl.aliyun.AliyunSmsClient; -import com.win.framework.sms.core.enums.SmsChannelEnum; -import com.win.framework.sms.core.property.SmsChannelProperties; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; - -import java.util.ArrayList; -import java.util.List; - -/** - * {@link AliyunSmsClient} 的集成测试 - */ -public class AliyunSmsClientIntegrationTest { - - private static AliyunSmsClient smsClient; - - @BeforeAll - public static void before() { - // 创建配置类 - SmsChannelProperties properties = new SmsChannelProperties(); - properties.setId(1L); - properties.setSignature("Ballcat"); - properties.setCode(SmsChannelEnum.ALIYUN.getCode()); - properties.setApiKey(System.getenv("ALIYUN_ACCESS_KEY")); - properties.setApiSecret(System.getenv("ALIYUN_SECRET_KEY")); - // 创建客户端 - smsClient = new AliyunSmsClient(properties); - smsClient.init(); - } - - @Test - public void testSendSms() { - List> templateParams = new ArrayList<>(); - templateParams.add(new KeyValue<>("code", "1024")); -// templateParams.put("operation", "嘿嘿"); -// SmsResult result = smsClient.send(1L, "15601691399", "4372216", templateParams); - SmsCommonResult result = smsClient.sendSms(1L, "15601691399", - "SMS_207945135", templateParams); - System.out.println(result); - } - - @Test - public void testGetSmsTemplate() { - String apiTemplateId = "SMS_2079451351"; - SmsCommonResult result = smsClient.getSmsTemplate(apiTemplateId); - System.out.println(result); - } - -} diff --git a/win-framework/win-spring-boot-starter-biz-sms/src/test-integration/java/com/win/framework/sms/core/client/impl/debug/DebugDingTalkSmsClientIntegrationTest.java b/win-framework/win-spring-boot-starter-biz-sms/src/test-integration/java/com/win/framework/sms/core/client/impl/debug/DebugDingTalkSmsClientIntegrationTest.java deleted file mode 100644 index 8af2693e..00000000 --- a/win-framework/win-spring-boot-starter-biz-sms/src/test-integration/java/com/win/framework/sms/core/client/impl/debug/DebugDingTalkSmsClientIntegrationTest.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.win.framework.sms.core.client.impl.debug; - -import com.win.framework.common.core.KeyValue; -import com.win.framework.sms.core.client.SmsCommonResult; -import com.win.framework.sms.core.client.dto.SmsSendRespDTO; -import com.win.framework.sms.core.client.impl.debug.DebugDingTalkSmsClient; -import com.win.framework.sms.core.enums.SmsChannelEnum; -import com.win.framework.sms.core.property.SmsChannelProperties; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; - -import java.util.ArrayList; -import java.util.List; - -/** - * {@link DebugDingTalkSmsClient} 的集成测试 - */ -public class DebugDingTalkSmsClientIntegrationTest { - - private static DebugDingTalkSmsClient smsClient; - - @BeforeAll - public static void init() { - // 创建配置类 - SmsChannelProperties properties = new SmsChannelProperties(); - properties.setId(1L); - properties.setSignature("芋道"); - properties.setCode(SmsChannelEnum.DEBUG_DING_TALK.getCode()); - properties.setApiKey("696b5d8ead48071237e4aa5861ff08dbadb2b4ded1c688a7b7c9afc615579859"); - properties.setApiSecret("SEC5c4e5ff888bc8a9923ae47f59e7ccd30af1f14d93c55b4e2c9cb094e35aeed67"); - // 创建客户端 - smsClient = new DebugDingTalkSmsClient(properties); - smsClient.init(); - } - - @Test - public void testSendSms() { - List> templateParams = new ArrayList<>(); - templateParams.add(new KeyValue<>("code", "1024")); - templateParams.add(new KeyValue<>("operation", "嘿嘿")); -// SmsResult result = smsClient.send(1L, "15601691399", "4372216", templateParams); - SmsCommonResult result = smsClient.sendSms(1L, "15601691399", "4383920", templateParams); - System.out.println(result); - } - -} diff --git a/win-framework/win-spring-boot-starter-biz-sms/src/test/java/com/win/framework/sms/core/client/impl/aliyun/AliyunSmsClientTest.java b/win-framework/win-spring-boot-starter-biz-sms/src/test/java/com/win/framework/sms/core/client/impl/aliyun/AliyunSmsClientTest.java deleted file mode 100644 index 7fac50a2..00000000 --- a/win-framework/win-spring-boot-starter-biz-sms/src/test/java/com/win/framework/sms/core/client/impl/aliyun/AliyunSmsClientTest.java +++ /dev/null @@ -1,225 +0,0 @@ -package com.win.framework.sms.core.client.impl.aliyun; - -import cn.hutool.core.util.ReflectUtil; -import com.win.framework.test.core.ut.BaseMockitoUnitTest; -import com.win.framework.common.core.KeyValue; -import com.win.framework.common.exception.enums.GlobalErrorCodeConstants; -import com.win.framework.sms.core.client.SmsCommonResult; -import com.win.framework.sms.core.client.dto.SmsReceiveRespDTO; -import com.win.framework.sms.core.client.dto.SmsSendRespDTO; -import com.win.framework.sms.core.client.dto.SmsTemplateRespDTO; -import com.win.framework.sms.core.enums.SmsTemplateAuditStatusEnum; -import com.win.framework.sms.core.property.SmsChannelProperties; -import com.win.framework.common.util.collection.MapUtils; -import com.win.framework.sms.core.enums.SmsFrameworkErrorCodeConstants; -import com.aliyuncs.AcsRequest; -import com.aliyuncs.IAcsClient; -import com.aliyuncs.dysmsapi.model.v20170525.QuerySmsTemplateRequest; -import com.aliyuncs.dysmsapi.model.v20170525.QuerySmsTemplateResponse; -import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest; -import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; -import com.aliyuncs.exceptions.ClientException; -import com.google.common.collect.Lists; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.mockito.ArgumentMatcher; -import org.mockito.InjectMocks; -import org.mockito.Mock; - -import java.time.LocalDateTime; -import java.util.List; -import java.util.function.Function; - -import static com.win.framework.common.util.json.JsonUtils.toJsonString; -import static com.win.framework.test.core.util.RandomUtils.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.argThat; -import static org.mockito.Mockito.when; - -/** - * {@link AliyunSmsClient} 的单元测试 - * - * @author 芋道源码 - */ -public class AliyunSmsClientTest extends BaseMockitoUnitTest { - - private final SmsChannelProperties properties = new SmsChannelProperties() - .setApiKey(randomString()) // 随机一个 apiKey,避免构建报错 - .setApiSecret(randomString()) // 随机一个 apiSecret,避免构建报错 - .setSignature("芋道源码"); - - @InjectMocks - private final AliyunSmsClient smsClient = new AliyunSmsClient(properties); - - @Mock - private IAcsClient client; - - @Test - public void testDoInit() { - // 准备参数 - // mock 方法 - - // 调用 - smsClient.doInit(); - // 断言 - assertNotSame(client, ReflectUtil.getFieldValue(smsClient, "acsClient")); - } - - @Test - @SuppressWarnings("unchecked") - public void testDoSendSms() throws ClientException { - // 准备参数 - Long sendLogId = randomLongId(); - String mobile = randomString(); - String apiTemplateId = randomString(); - List> templateParams = Lists.newArrayList( - new KeyValue<>("code", 1234), new KeyValue<>("op", "login")); - // mock 方法 - SendSmsResponse response = randomPojo(SendSmsResponse.class, o -> o.setCode("OK")); - when(client.getAcsResponse(argThat((ArgumentMatcher) acsRequest -> { - assertEquals(mobile, acsRequest.getPhoneNumbers()); - assertEquals(properties.getSignature(), acsRequest.getSignName()); - assertEquals(apiTemplateId, acsRequest.getTemplateCode()); - assertEquals(toJsonString(MapUtils.convertMap(templateParams)), acsRequest.getTemplateParam()); - assertEquals(sendLogId.toString(), acsRequest.getOutId()); - return true; - }))).thenReturn(response); - - // 调用 - SmsCommonResult result = smsClient.doSendSms(sendLogId, mobile, - apiTemplateId, templateParams); - // 断言 - assertEquals(response.getCode(), result.getApiCode()); - assertEquals(response.getMessage(), result.getApiMsg()); - assertEquals(GlobalErrorCodeConstants.SUCCESS.getCode(), result.getCode()); - assertEquals(GlobalErrorCodeConstants.SUCCESS.getMsg(), result.getMsg()); - assertEquals(response.getRequestId(), result.getApiRequestId()); - // 断言结果 - assertEquals(response.getBizId(), result.getData().getSerialNo()); - } - - @Test - public void testDoTParseSmsReceiveStatus() throws Throwable { - // 准备参数 - String text = "[\n" + - " {\n" + - " \"phone_number\" : \"13900000001\",\n" + - " \"send_time\" : \"2017-01-01 11:12:13\",\n" + - " \"report_time\" : \"2017-02-02 22:23:24\",\n" + - " \"success\" : true,\n" + - " \"err_code\" : \"DELIVERED\",\n" + - " \"err_msg\" : \"用户接收成功\",\n" + - " \"sms_size\" : \"1\",\n" + - " \"biz_id\" : \"12345\",\n" + - " \"out_id\" : \"67890\"\n" + - " }\n" + - "]"; - // mock 方法 - - // 调用 - List statuses = smsClient.doParseSmsReceiveStatus(text); - // 断言 - assertEquals(1, statuses.size()); - assertTrue(statuses.get(0).getSuccess()); - assertEquals("DELIVERED", statuses.get(0).getErrorCode()); - assertEquals("用户接收成功", statuses.get(0).getErrorMsg()); - assertEquals("13900000001", statuses.get(0).getMobile()); - assertEquals(LocalDateTime.of(2017, 2, 2, 22, 23, 24), statuses.get(0).getReceiveTime()); - assertEquals("12345", statuses.get(0).getSerialNo()); - assertEquals(67890L, statuses.get(0).getLogId()); - } - - @Test - public void testDoGetSmsTemplate() throws ClientException { - // 准备参数 - String apiTemplateId = randomString(); - // mock 方法 - QuerySmsTemplateResponse response = randomPojo(QuerySmsTemplateResponse.class, o -> { - o.setCode("OK"); - o.setTemplateStatus(1); // 设置模板通过 - }); - when(client.getAcsResponse(argThat((ArgumentMatcher) acsRequest -> { - assertEquals(apiTemplateId, acsRequest.getTemplateCode()); - return true; - }))).thenReturn(response); - - // 调用 - SmsCommonResult result = smsClient.doGetSmsTemplate(apiTemplateId); - // 断言 - assertEquals(response.getCode(), result.getApiCode()); - assertEquals(response.getMessage(), result.getApiMsg()); - assertEquals(GlobalErrorCodeConstants.SUCCESS.getCode(), result.getCode()); - assertEquals(GlobalErrorCodeConstants.SUCCESS.getMsg(), result.getMsg()); - assertEquals(response.getRequestId(), result.getApiRequestId()); - // 断言结果 - assertEquals(response.getTemplateCode(), result.getData().getId()); - assertEquals(response.getTemplateContent(), result.getData().getContent()); - assertEquals(SmsTemplateAuditStatusEnum.SUCCESS.getStatus(), result.getData().getAuditStatus()); - assertEquals(response.getReason(), result.getData().getAuditReason()); - } - - @Test - public void testConvertSmsTemplateAuditStatus() { - assertEquals(SmsTemplateAuditStatusEnum.CHECKING.getStatus(), - smsClient.convertSmsTemplateAuditStatus(0)); - assertEquals(SmsTemplateAuditStatusEnum.SUCCESS.getStatus(), - smsClient.convertSmsTemplateAuditStatus(1)); - assertEquals(SmsTemplateAuditStatusEnum.FAIL.getStatus(), - smsClient.convertSmsTemplateAuditStatus(2)); - assertThrows(IllegalArgumentException.class, () -> smsClient.convertSmsTemplateAuditStatus(3), - "未知审核状态(3)"); - } - - @Test - @SuppressWarnings("unchecked") - public void testInvoke_throwable() throws ClientException { - // 准备参数 - QuerySmsTemplateRequest request = new QuerySmsTemplateRequest(); - // mock 方法 - ClientException ex = new ClientException("isv.INVALID_PARAMETERS", "参数不正确", randomString()); - when(client.getAcsResponse(any(AcsRequest.class))).thenThrow(ex); - - // 调用,并断言异常 - SmsCommonResult result = smsClient.invoke(request, null); - // 断言 - assertEquals(ex.getErrCode(), result.getApiCode()); - assertEquals(ex.getErrMsg(), result.getApiMsg()); - Assertions.assertEquals(SmsFrameworkErrorCodeConstants.SMS_API_PARAM_ERROR.getCode(), result.getCode()); - Assertions.assertEquals(SmsFrameworkErrorCodeConstants.SMS_API_PARAM_ERROR.getMsg(), result.getMsg()); - assertEquals(ex.getRequestId(), result.getApiRequestId()); - } - - @Test - public void testInvoke_success() throws ClientException { - // 准备参数 - QuerySmsTemplateRequest request = new QuerySmsTemplateRequest(); - Function responseConsumer = response -> { - SmsTemplateRespDTO data = new SmsTemplateRespDTO(); - data.setId(response.getTemplateCode()).setContent(response.getTemplateContent()); - data.setAuditStatus(SmsTemplateAuditStatusEnum.SUCCESS.getStatus()).setAuditReason(response.getReason()); - return data; - }; - // mock 方法 - QuerySmsTemplateResponse response = randomPojo(QuerySmsTemplateResponse.class, o -> { - o.setCode("OK"); - o.setTemplateStatus(1); // 设置模板通过 - }); - when(client.getAcsResponse(any(AcsRequest.class))).thenReturn(response); - - // 调用 - SmsCommonResult result = smsClient.invoke(request, responseConsumer); - // 断言 - assertEquals(response.getCode(), result.getApiCode()); - assertEquals(response.getMessage(), result.getApiMsg()); - assertEquals(GlobalErrorCodeConstants.SUCCESS.getCode(), result.getCode()); - assertEquals(GlobalErrorCodeConstants.SUCCESS.getMsg(), result.getMsg()); - assertEquals(response.getRequestId(), result.getApiRequestId()); - // 断言结果 - assertEquals(response.getTemplateCode(), result.getData().getId()); - assertEquals(response.getTemplateContent(), result.getData().getContent()); - assertEquals(SmsTemplateAuditStatusEnum.SUCCESS.getStatus(), result.getData().getAuditStatus()); - assertEquals(response.getReason(), result.getData().getAuditReason()); - } - -} diff --git a/win-framework/win-spring-boot-starter-biz-sms/src/test/java/com/win/framework/sms/core/client/impl/aliyun/AliyunSmsCodeMappingTest.java b/win-framework/win-spring-boot-starter-biz-sms/src/test/java/com/win/framework/sms/core/client/impl/aliyun/AliyunSmsCodeMappingTest.java deleted file mode 100644 index b410ee05..00000000 --- a/win-framework/win-spring-boot-starter-biz-sms/src/test/java/com/win/framework/sms/core/client/impl/aliyun/AliyunSmsCodeMappingTest.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.win.framework.sms.core.client.impl.aliyun; - -import com.win.framework.test.core.ut.BaseMockitoUnitTest; -import com.win.framework.common.exception.enums.GlobalErrorCodeConstants; -import com.win.framework.sms.core.enums.SmsFrameworkErrorCodeConstants; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -/** - * {@link AliyunSmsCodeMapping} 的单元测试 - * - * @author 芋道源码 - */ -public class AliyunSmsCodeMappingTest extends BaseMockitoUnitTest { - - @InjectMocks - private AliyunSmsCodeMapping codeMapping; - - @Test - public void testApply() { - assertEquals(GlobalErrorCodeConstants.SUCCESS, codeMapping.apply("OK")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_ACCOUNT_INVALID, codeMapping.apply("MissingAccessKeyId")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_ACCOUNT_INVALID, codeMapping.apply("isv.ACCOUNT_NOT_EXISTS")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_ACCOUNT_INVALID, codeMapping.apply("isv.ACCOUNT_ABNORMAL")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_SEND_DAY_LIMIT_CONTROL, codeMapping.apply("isv.DAY_LIMIT_CONTROL")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_SEND_CONTENT_INVALID, codeMapping.apply("isv.SMS_CONTENT_ILLEGAL")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_SIGN_INVALID, codeMapping.apply("isv.SMS_SIGN_ILLEGAL")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_SIGN_INVALID, codeMapping.apply("isv.SIGN_NAME_ILLEGAL")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_PERMISSION_DENY, codeMapping.apply("isp.RAM_PERMISSION_DENY")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_ACCOUNT_MONEY_NOT_ENOUGH, codeMapping.apply("isv.OUT_OF_SERVICE")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_ACCOUNT_MONEY_NOT_ENOUGH, codeMapping.apply("isv.AMOUNT_NOT_ENOUGH")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_TEMPLATE_INVALID, codeMapping.apply("isv.SMS_TEMPLATE_ILLEGAL")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_SIGN_INVALID, codeMapping.apply("isv.SMS_SIGNATURE_ILLEGAL")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_API_PARAM_ERROR, codeMapping.apply("isv.INVALID_PARAMETERS")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_API_PARAM_ERROR, codeMapping.apply("isv.INVALID_JSON_PARAM")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_MOBILE_INVALID, codeMapping.apply("isv.MOBILE_NUMBER_ILLEGAL")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_TEMPLATE_PARAM_ERROR, codeMapping.apply("isv.TEMPLATE_MISSING_PARAMETERS")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_SEND_BUSINESS_LIMIT_CONTROL, codeMapping.apply("isv.BUSINESS_LIMIT_CONTROL")); - } - -} diff --git a/win-framework/win-spring-boot-starter-biz-sms/src/test/java/com/win/framework/sms/core/client/impl/tencent/TencentSmsClientTest.java b/win-framework/win-spring-boot-starter-biz-sms/src/test/java/com/win/framework/sms/core/client/impl/tencent/TencentSmsClientTest.java deleted file mode 100644 index 2713cd88..00000000 --- a/win-framework/win-spring-boot-starter-biz-sms/src/test/java/com/win/framework/sms/core/client/impl/tencent/TencentSmsClientTest.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.win.framework.sms.core.client.impl.tencent; - -import cn.hutool.core.util.ReflectUtil; -import cn.hutool.core.util.StrUtil; -import com.win.framework.common.core.KeyValue; -import com.win.framework.common.exception.enums.GlobalErrorCodeConstants; -import com.win.framework.common.util.collection.ArrayUtils; -import com.win.framework.common.util.collection.MapUtils; -import com.win.framework.common.util.json.JsonUtils; -import com.win.framework.sms.core.client.SmsCommonResult; -import com.win.framework.sms.core.client.dto.SmsReceiveRespDTO; -import com.win.framework.sms.core.client.dto.SmsSendRespDTO; -import com.win.framework.sms.core.client.dto.SmsTemplateRespDTO; -import com.win.framework.sms.core.enums.SmsTemplateAuditStatusEnum; -import com.win.framework.sms.core.property.SmsChannelProperties; -import com.win.framework.test.core.ut.BaseMockitoUnitTest; -import com.google.common.collect.Lists; -import com.tencentcloudapi.sms.v20210111.SmsClient; -import com.tencentcloudapi.sms.v20210111.models.DescribeSmsTemplateListResponse; -import com.tencentcloudapi.sms.v20210111.models.DescribeTemplateListStatus; -import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse; -import com.tencentcloudapi.sms.v20210111.models.SendStatus; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; - -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; - -import static com.win.framework.common.util.json.JsonUtils.toJsonString; -import static com.win.framework.test.core.util.RandomUtils.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.mockito.ArgumentMatchers.argThat; -import static org.mockito.Mockito.when; - -/** - * {@link TencentSmsClient} 的单元测试 - * - * @author shiwp - */ -public class TencentSmsClientTest extends BaseMockitoUnitTest { - - private final SmsChannelProperties properties = new SmsChannelProperties() - .setApiKey(randomString() + " " + randomString()) // 随机一个 apiKey,避免构建报错 - .setApiSecret(randomString()) // 随机一个 apiSecret,避免构建报错 - .setSignature("芋道源码"); - - @InjectMocks - private TencentSmsClient smsClient = new TencentSmsClient(properties); - - @Mock - private SmsClient client; - - @Test - public void testDoInit() { - // 准备参数 - // mock 方法 - - // 调用 - smsClient.doInit(); - // 断言 - assertNotSame(client, ReflectUtil.getFieldValue(smsClient, "client")); - } - - @Test - public void testRefresh() { - // 准备参数 - SmsChannelProperties p = new SmsChannelProperties() - .setApiKey(randomString() + " " + randomString()) // 随机一个 apiKey,避免构建报错 - .setApiSecret(randomString()) // 随机一个 apiSecret,避免构建报错 - .setSignature("芋道源码"); - // 调用 - smsClient.refresh(p); - // 断言 - assertNotSame(client, ReflectUtil.getFieldValue(smsClient, "client")); - } - - @Test - public void testDoSendSms() throws Throwable { - // 准备参数 - Long sendLogId = randomLongId(); - String mobile = randomString(); - String apiTemplateId = randomString(); - List> templateParams = Lists.newArrayList( - new KeyValue<>("1", 1234), new KeyValue<>("2", "login")); - String requestId = randomString(); - String serialNo = randomString(); - // mock 方法 - SendSmsResponse response = randomPojo(SendSmsResponse.class, o -> { - o.setRequestId(requestId); - SendStatus[] sendStatuses = new SendStatus[1]; - o.setSendStatusSet(sendStatuses); - SendStatus sendStatus = new SendStatus(); - sendStatuses[0] = sendStatus; - sendStatus.setCode(TencentSmsClient.API_SUCCESS_CODE); - sendStatus.setMessage("send success"); - sendStatus.setSerialNo(serialNo); - }); - when(client.SendSms(argThat(request -> { - assertEquals(mobile, request.getPhoneNumberSet()[0]); - assertEquals(properties.getSignature(), request.getSignName()); - assertEquals(apiTemplateId, request.getTemplateId()); - assertEquals(toJsonString(ArrayUtils.toArray(new ArrayList<>(MapUtils.convertMap(templateParams).values()), String::valueOf)), - toJsonString(request.getTemplateParamSet())); - assertEquals(sendLogId, ReflectUtil.getFieldValue(JsonUtils.parseObject(request.getSessionContext(), TencentSmsClient.SessionContext.class), "logId")); - return true; - }))).thenReturn(response); - - // 调用 - SmsCommonResult result = smsClient.doSendSms(sendLogId, mobile, - apiTemplateId, templateParams); - // 断言 - assertEquals(response.getSendStatusSet()[0].getCode(), result.getApiCode()); - assertEquals(response.getSendStatusSet()[0].getMessage(), result.getApiMsg()); - assertEquals(GlobalErrorCodeConstants.SUCCESS.getCode(), result.getCode()); - assertEquals(GlobalErrorCodeConstants.SUCCESS.getMsg(), result.getMsg()); - assertEquals(response.getRequestId(), result.getApiRequestId()); - // 断言结果 - assertEquals(response.getSendStatusSet()[0].getSerialNo(), result.getData().getSerialNo()); - } - - @Test - public void testDoTParseSmsReceiveStatus() throws Throwable { - // 准备参数 - String text = "[\n" + - " {\n" + - " \"user_receive_time\": \"2015-10-17 08:03:04\",\n" + - " \"nationcode\": \"86\",\n" + - " \"mobile\": \"13900000001\",\n" + - " \"report_status\": \"SUCCESS\",\n" + - " \"errmsg\": \"DELIVRD\",\n" + - " \"description\": \"用户短信送达成功\",\n" + - " \"sid\": \"12345\",\n" + - " \"ext\": {\"logId\":\"67890\"}\n" + - " }\n" + - "]"; - // mock 方法 - - // 调用 - List statuses = smsClient.doParseSmsReceiveStatus(text); - // 断言 - assertEquals(1, statuses.size()); - assertTrue(statuses.get(0).getSuccess()); - assertEquals("DELIVRD", statuses.get(0).getErrorCode()); - assertEquals("用户短信送达成功", statuses.get(0).getErrorMsg()); - assertEquals("13900000001", statuses.get(0).getMobile()); - assertEquals(LocalDateTime.of(2015, 10, 17, 8, 3, 4), statuses.get(0).getReceiveTime()); - assertEquals("12345", statuses.get(0).getSerialNo()); - assertEquals(67890L, statuses.get(0).getLogId()); - } - - @Test - public void testDoGetSmsTemplate() throws Throwable { - // 准备参数 - Long apiTemplateId = randomLongId(); - String requestId = randomString(); - - // mock 方法 - DescribeSmsTemplateListResponse response = randomPojo(DescribeSmsTemplateListResponse.class, o -> { - DescribeTemplateListStatus[] describeTemplateListStatuses = new DescribeTemplateListStatus[1]; - DescribeTemplateListStatus templateStatus = new DescribeTemplateListStatus(); - templateStatus.setTemplateId(apiTemplateId); - templateStatus.setStatusCode(0L);// 设置模板通过 - describeTemplateListStatuses[0] = templateStatus; - o.setDescribeTemplateStatusSet(describeTemplateListStatuses); - o.setRequestId(requestId); - }); - when(client.DescribeSmsTemplateList(argThat(request -> { - assertEquals(apiTemplateId, request.getTemplateIdSet()[0]); - return true; - }))).thenReturn(response); - - // 调用 - SmsCommonResult result = smsClient.doGetSmsTemplate(apiTemplateId.toString()); - // 断言 - assertEquals(TencentSmsClient.API_SUCCESS_CODE, result.getApiCode()); - assertNull(result.getApiMsg()); - assertEquals(GlobalErrorCodeConstants.SUCCESS.getCode(), result.getCode()); - assertEquals(GlobalErrorCodeConstants.SUCCESS.getMsg(), result.getMsg()); - assertEquals(response.getRequestId(), result.getApiRequestId()); - // 断言结果 - assertEquals(response.getDescribeTemplateStatusSet()[0].getTemplateId().toString(), result.getData().getId()); - assertEquals(response.getDescribeTemplateStatusSet()[0].getTemplateContent(), result.getData().getContent()); - assertEquals(SmsTemplateAuditStatusEnum.SUCCESS.getStatus(), result.getData().getAuditStatus()); - assertEquals(response.getDescribeTemplateStatusSet()[0].getReviewReply(), result.getData().getAuditReason()); - } - - @Test - public void testConvertSuccessTemplateStatus() { - testTemplateStatus(SmsTemplateAuditStatusEnum.SUCCESS, 0L); - } - - @Test - public void testConvertCheckingTemplateStatus() { - testTemplateStatus(SmsTemplateAuditStatusEnum.CHECKING, 1L); - } - - @Test - public void testConvertFailTemplateStatus() { - testTemplateStatus(SmsTemplateAuditStatusEnum.FAIL, -1L); - } - - @Test - public void testConvertUnknownTemplateStatus() { - DescribeTemplateListStatus templateStatus = new DescribeTemplateListStatus(); - templateStatus.setStatusCode(3L); - Long templateId = randomLongId(); - // 调用,并断言结果 - assertThrows(IllegalStateException.class, () -> smsClient.convertTemplateStatusDTO(templateStatus), - StrUtil.format("不能解析短信模版审核状态[3],模版id[{}]", templateId)); - } - - private void testTemplateStatus(SmsTemplateAuditStatusEnum expected, Long value) { - DescribeTemplateListStatus templateStatus = new DescribeTemplateListStatus(); - templateStatus.setStatusCode(value); - SmsTemplateRespDTO result = smsClient.convertTemplateStatusDTO(templateStatus); - assertEquals(expected.getStatus(), result.getAuditStatus()); - } - -} diff --git a/win-framework/win-spring-boot-starter-biz-sms/src/test/java/com/win/framework/sms/core/client/impl/tencent/TencentSmsCodeMappingTest.java b/win-framework/win-spring-boot-starter-biz-sms/src/test/java/com/win/framework/sms/core/client/impl/tencent/TencentSmsCodeMappingTest.java deleted file mode 100644 index 0a2967f5..00000000 --- a/win-framework/win-spring-boot-starter-biz-sms/src/test/java/com/win/framework/sms/core/client/impl/tencent/TencentSmsCodeMappingTest.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.win.framework.sms.core.client.impl.tencent; - -import com.win.framework.common.exception.enums.GlobalErrorCodeConstants; -import com.win.framework.sms.core.enums.SmsFrameworkErrorCodeConstants; -import com.win.framework.test.core.ut.BaseMockitoUnitTest; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -/** - * {@link TencentSmsCodeMapping} 的单元测试 - * - * @author : shiwp - */ -public class TencentSmsCodeMappingTest extends BaseMockitoUnitTest { - - @InjectMocks - private TencentSmsCodeMapping codeMapping; - - @Test - public void testApply() { - assertEquals(GlobalErrorCodeConstants.SUCCESS, codeMapping.apply(TencentSmsClient.API_SUCCESS_CODE)); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_SEND_CONTENT_INVALID, codeMapping.apply("FailedOperation.ContainSensitiveWord")); - assertEquals(GlobalErrorCodeConstants.BAD_REQUEST, codeMapping.apply("FailedOperation.JsonParseFail")); - assertEquals(GlobalErrorCodeConstants.BAD_REQUEST, codeMapping.apply("MissingParameter.EmptyPhoneNumberSet")); - assertEquals(GlobalErrorCodeConstants.BAD_REQUEST, codeMapping.apply("LimitExceeded.PhoneNumberCountLimit")); - assertEquals(GlobalErrorCodeConstants.BAD_REQUEST, codeMapping.apply("FailedOperation.FailResolvePacket")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_ACCOUNT_MONEY_NOT_ENOUGH, codeMapping.apply("FailedOperation.InsufficientBalanceInSmsPackage")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_SEND_MARKET_LIMIT_CONTROL, codeMapping.apply("FailedOperation.MarketingSendTimeConstraint")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_MOBILE_BLACK, codeMapping.apply("FailedOperation.PhoneNumberInBlacklist")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_SIGN_INVALID, codeMapping.apply("FailedOperation.SignatureIncorrectOrUnapproved")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_TEMPLATE_INVALID, codeMapping.apply("FailedOperation.MissingTemplateToModify")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_TEMPLATE_INVALID, codeMapping.apply("FailedOperation.TemplateIncorrectOrUnapproved")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_MOBILE_INVALID, codeMapping.apply("InvalidParameterValue.IncorrectPhoneNumber")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_APP_ID_INVALID, codeMapping.apply("InvalidParameterValue.SdkAppIdNotExist")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_TEMPLATE_PARAM_ERROR, codeMapping.apply("InvalidParameterValue.TemplateParameterLengthLimit")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_TEMPLATE_PARAM_ERROR, codeMapping.apply("InvalidParameterValue.TemplateParameterFormatError")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_SEND_DAY_LIMIT_CONTROL, codeMapping.apply("LimitExceeded.PhoneNumberDailyLimit")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_SEND_BUSINESS_LIMIT_CONTROL, codeMapping.apply("LimitExceeded.PhoneNumberThirtySecondLimit")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_SEND_BUSINESS_LIMIT_CONTROL, codeMapping.apply("LimitExceeded.PhoneNumberOneHourLimit")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_PERMISSION_DENY, codeMapping.apply("UnauthorizedOperation.RequestPermissionDeny")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_PERMISSION_DENY, codeMapping.apply("FailedOperation.ForbidAddMarketingTemplates")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_PERMISSION_DENY, codeMapping.apply("FailedOperation.NotEnterpriseCertification")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_PERMISSION_DENY, codeMapping.apply("UnauthorizedOperation.IndividualUserMarketingSmsPermissionDeny")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_IP_DENY, codeMapping.apply("UnauthorizedOperation.RequestIpNotInWhitelist")); - assertEquals(SmsFrameworkErrorCodeConstants.SMS_ACCOUNT_INVALID, codeMapping.apply("AuthFailure.SecretIdNotFound")); - } - -} \ No newline at end of file diff --git a/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/config/TenantProperties.java b/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/config/TenantProperties.java index 7817cd49..04b21395 100644 --- a/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/config/TenantProperties.java +++ b/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/config/TenantProperties.java @@ -9,7 +9,7 @@ import java.util.Set; /** * 多租户配置 * - * @author 芋道源码 + * @author 闻荫源码 */ @ConfigurationProperties(prefix = "win.tenant") @Data diff --git a/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/aop/TenantIgnore.java b/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/aop/TenantIgnore.java index 1eb125a3..b8f8a0dc 100644 --- a/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/aop/TenantIgnore.java +++ b/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/aop/TenantIgnore.java @@ -9,7 +9,7 @@ import java.lang.annotation.*; * 1、Redis 场景:因为是基于 Key 实现多租户的能力,所以忽略没有意义,不像 DB 是一个 column 实现的 * 2、MQ 场景:有点难以抉择,目前可以通过 Consumer 手动在消费的方法上,添加 @TenantIgnore 进行忽略 * - * @author 芋道源码 + * @author 闻荫源码 */ @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) diff --git a/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/aop/TenantIgnoreAspect.java b/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/aop/TenantIgnoreAspect.java index 702ddfa8..abda3625 100644 --- a/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/aop/TenantIgnoreAspect.java +++ b/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/aop/TenantIgnoreAspect.java @@ -14,7 +14,7 @@ import org.aspectj.lang.annotation.Aspect; * * 整体逻辑的实现,和 {@link TenantUtils#executeIgnore(Runnable)} 需要保持一致 * - * @author 芋道源码 + * @author 闻荫源码 */ @Aspect @Slf4j diff --git a/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/context/TenantContextHolder.java b/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/context/TenantContextHolder.java index f16655ee..9814f8a7 100644 --- a/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/context/TenantContextHolder.java +++ b/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/context/TenantContextHolder.java @@ -6,7 +6,7 @@ import com.alibaba.ttl.TransmittableThreadLocal; /** * 多租户上下文 Holder * - * @author 芋道源码 + * @author 闻荫源码 */ public class TenantContextHolder { diff --git a/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/db/TenantBaseDO.java b/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/db/TenantBaseDO.java index cd4119dc..5968e3d1 100644 --- a/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/db/TenantBaseDO.java +++ b/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/db/TenantBaseDO.java @@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode; /** * 拓展多租户的 BaseDO 基类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data @EqualsAndHashCode(callSuper = true) diff --git a/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/db/TenantDatabaseInterceptor.java b/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/db/TenantDatabaseInterceptor.java index d19ac376..e893ae2b 100644 --- a/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/db/TenantDatabaseInterceptor.java +++ b/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/db/TenantDatabaseInterceptor.java @@ -13,7 +13,7 @@ import java.util.Set; /** * 基于 MyBatis Plus 多租户的功能,实现 DB 层面的多租户的功能 * - * @author 芋道源码 + * @author 闻荫源码 */ public class TenantDatabaseInterceptor implements TenantLineHandler { diff --git a/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/job/TenantJobAspect.java b/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/job/TenantJobAspect.java index bf9a0b65..17ce4f15 100644 --- a/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/job/TenantJobAspect.java +++ b/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/job/TenantJobAspect.java @@ -21,7 +21,7 @@ import java.util.concurrent.ConcurrentHashMap; * * 注意,需要保证 JobHandler 的幂等性。因为 Job 因为某个租户执行失败重试时,之前执行成功的租户也会再次执行。 * - * @author 芋道源码 + * @author 闻荫源码 */ @Aspect @RequiredArgsConstructor diff --git a/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/mq/TenantRedisMessageInterceptor.java b/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/mq/TenantRedisMessageInterceptor.java index 0c4615fc..561030e0 100644 --- a/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/mq/TenantRedisMessageInterceptor.java +++ b/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/mq/TenantRedisMessageInterceptor.java @@ -13,7 +13,7 @@ import static com.win.framework.web.core.util.WebFrameworkUtils.HEADER_TENANT_ID * 1. Producer 发送消息时,将 {@link TenantContextHolder} 租户编号,添加到消息的 Header 中 * 2. Consumer 消费消息时,将消息的 Header 的租户编号,添加到 {@link TenantContextHolder} 中 * - * @author 芋道源码 + * @author 闻荫源码 */ public class TenantRedisMessageInterceptor implements RedisMessageInterceptor { diff --git a/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/security/TenantSecurityWebFilter.java b/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/security/TenantSecurityWebFilter.java index 36569eb4..f31135fd 100644 --- a/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/security/TenantSecurityWebFilter.java +++ b/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/security/TenantSecurityWebFilter.java @@ -28,7 +28,7 @@ import java.util.Objects; * 2. 如果请求未带租户的编号,检查是否是忽略的 URL,否则也不允许访问。 * 3. 校验租户是合法,例如说被禁用、到期 * - * @author 芋道源码 + * @author 闻荫源码 */ @Slf4j public class TenantSecurityWebFilter extends ApiRequestFilter { diff --git a/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/service/TenantFrameworkService.java b/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/service/TenantFrameworkService.java index 5a5751d5..df605efa 100644 --- a/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/service/TenantFrameworkService.java +++ b/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/service/TenantFrameworkService.java @@ -5,7 +5,7 @@ import java.util.List; /** * Tenant 框架 Service 接口,定义获取租户信息 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface TenantFrameworkService { diff --git a/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/service/TenantFrameworkServiceImpl.java b/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/service/TenantFrameworkServiceImpl.java index 1b526fe2..f8d91316 100644 --- a/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/service/TenantFrameworkServiceImpl.java +++ b/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/service/TenantFrameworkServiceImpl.java @@ -14,7 +14,7 @@ import java.util.List; /** * Tenant 框架 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @RequiredArgsConstructor public class TenantFrameworkServiceImpl implements TenantFrameworkService { diff --git a/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/util/TenantUtils.java b/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/util/TenantUtils.java index 4516e278..232781a3 100644 --- a/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/util/TenantUtils.java +++ b/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/util/TenantUtils.java @@ -10,7 +10,7 @@ import static com.win.framework.web.core.util.WebFrameworkUtils.HEADER_TENANT_ID /** * 多租户 Util * - * @author 芋道源码 + * @author 闻荫源码 */ public class TenantUtils { diff --git a/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/web/TenantContextWebFilter.java b/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/web/TenantContextWebFilter.java index 465bb005..a2d7b4c2 100644 --- a/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/web/TenantContextWebFilter.java +++ b/win-framework/win-spring-boot-starter-biz-tenant/src/main/java/com/win/framework/tenant/core/web/TenantContextWebFilter.java @@ -14,7 +14,7 @@ import java.io.IOException; * 多租户 Context Web 过滤器 * 将请求 Header 中的 tenant-id 解析出来,添加到 {@link TenantContextHolder} 中,这样后续的 DB 等操作,可以获得到租户编号。 * - * @author 芋道源码 + * @author 闻荫源码 */ public class TenantContextWebFilter extends OncePerRequestFilter { diff --git a/win-framework/win-spring-boot-starter-biz-tenant/src/test/java/com/win/framework/tenant/core/job/TestJob.java b/win-framework/win-spring-boot-starter-biz-tenant/src/test/java/com/win/framework/tenant/core/job/TestJob.java deleted file mode 100644 index fd8492c5..00000000 --- a/win-framework/win-spring-boot-starter-biz-tenant/src/test/java/com/win/framework/tenant/core/job/TestJob.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.win.framework.tenant.core.job; - -import cn.hutool.core.collection.CollUtil; -import com.win.framework.quartz.core.handler.JobHandler; -import com.win.framework.tenant.core.context.TenantContextHolder; -import org.springframework.stereotype.Component; - -import java.util.List; -import java.util.concurrent.CopyOnWriteArrayList; - -@Component -public class TestJob implements JobHandler { - - private final List tenantIds = new CopyOnWriteArrayList<>(); - - @Override - @TenantJob // 标记多租户 - public String execute(String param) throws Exception { - tenantIds.add(TenantContextHolder.getTenantId()); - return "success"; - } - - public List getTenantIds() { - CollUtil.sort(tenantIds, Long::compareTo); - return tenantIds; - } - -} diff --git a/win-framework/win-spring-boot-starter-biz-weixin/src/test-integration/java/com/win/framework/weixin/WxMpServiceTest.java b/win-framework/win-spring-boot-starter-biz-weixin/src/test-integration/java/com/win/framework/weixin/WxMpServiceTest.java deleted file mode 100644 index a9cf00f8..00000000 --- a/win-framework/win-spring-boot-starter-biz-weixin/src/test-integration/java/com/win/framework/weixin/WxMpServiceTest.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.win.framework.weixin; - -import me.chanjar.weixin.common.error.WxErrorException; -import me.chanjar.weixin.mp.api.WxMpService; -import org.junit.jupiter.api.Test; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.test.context.SpringBootTest; - -import javax.annotation.Resource; - -@SpringBootTest(classes = WxMpServiceTest.Application.class) -public class WxMpServiceTest { - - @Resource - private WxMpService wxMpService; - - @Test - public void testGetAccessToken() throws WxErrorException { - String accessToken = wxMpService.getAccessToken(); - System.out.println(accessToken); - } - - @Test - public void testGet() throws WxErrorException { - String jsapiTicket = wxMpService.getJsapiTicket(); - System.out.println(jsapiTicket); - } - - @SpringBootApplication - public static class Application { - - } - -} diff --git a/win-framework/win-spring-boot-starter-biz-weixin/src/test-integration/resources/application.yml b/win-framework/win-spring-boot-starter-biz-weixin/src/test-integration/resources/application.yml deleted file mode 100644 index 9b30060a..00000000 --- a/win-framework/win-spring-boot-starter-biz-weixin/src/test-integration/resources/application.yml +++ /dev/null @@ -1,11 +0,0 @@ ---- #################### 微信公众号相关配置 #################### -wx: # 参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 文档 - mp: - # 公众号配置(必填) - app-id: wx041349c6f39b268b - secret: 5abee519483bc9f8cb37ce280e814bd0 - # 存储配置,解决 AccessToken 的跨节点的共享 -# config-storage: -# type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取 -# key-prefix: wx # Redis Key 的前缀 TODO 芋艿:解决下 Redis key 管理的配置 -# http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台 diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/java/com/win/framework/captcha/core/enums/CaptchaRedisKeyConstants.java b/win-framework/win-spring-boot-starter-captcha/src/main/java/com/win/framework/captcha/core/enums/CaptchaRedisKeyConstants.java index 55dbf802..5577db76 100644 --- a/win-framework/win-spring-boot-starter-captcha/src/main/java/com/win/framework/captcha/core/enums/CaptchaRedisKeyConstants.java +++ b/win-framework/win-spring-boot-starter-captcha/src/main/java/com/win/framework/captcha/core/enums/CaptchaRedisKeyConstants.java @@ -3,7 +3,7 @@ package com.win.framework.captcha.core.enums; /** * 验证码 Redis Key 枚举类 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface CaptchaRedisKeyConstants { diff --git a/win-framework/win-spring-boot-starter-desensitize/src/test/java/com/win/framework/desensitize/core/DesensitizeTest.java b/win-framework/win-spring-boot-starter-desensitize/src/test/java/com/win/framework/desensitize/core/DesensitizeTest.java deleted file mode 100644 index 496b4945..00000000 --- a/win-framework/win-spring-boot-starter-desensitize/src/test/java/com/win/framework/desensitize/core/DesensitizeTest.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.win.framework.desensitize.core; - -import com.win.framework.common.util.json.JsonUtils; -import com.win.framework.desensitize.core.regex.annotation.EmailDesensitize; -import com.win.framework.desensitize.core.regex.annotation.RegexDesensitize; -import com.win.framework.desensitize.core.annotation.Address; -import com.win.framework.desensitize.core.slider.annotation.BankCardDesensitize; -import com.win.framework.desensitize.core.slider.annotation.CarLicenseDesensitize; -import com.win.framework.desensitize.core.slider.annotation.ChineseNameDesensitize; -import com.win.framework.desensitize.core.slider.annotation.FixedPhoneDesensitize; -import com.win.framework.desensitize.core.slider.annotation.IdCardDesensitize; -import com.win.framework.desensitize.core.slider.annotation.PasswordDesensitize; -import com.win.framework.desensitize.core.slider.annotation.MobileDesensitize; -import com.win.framework.desensitize.core.slider.annotation.SliderDesensitize; -import com.win.framework.test.core.ut.BaseMockitoUnitTest; -import lombok.Data; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.*; - -/** - * {@link DesensitizeTest} 的单元测试 - */ -public class DesensitizeTest extends BaseMockitoUnitTest { - - @Test - public void test() { - // 准备参数 - DesensitizeDemo desensitizeDemo = new DesensitizeDemo(); - desensitizeDemo.setNickname("芋道源码"); - desensitizeDemo.setBankCard("9988002866797031"); - desensitizeDemo.setCarLicense("粤A66666"); - desensitizeDemo.setFixedPhone("01086551122"); - desensitizeDemo.setIdCard("530321199204074611"); - desensitizeDemo.setPassword("123456"); - desensitizeDemo.setPhoneNumber("13248765917"); - desensitizeDemo.setSlider1("ABCDEFG"); - desensitizeDemo.setSlider2("ABCDEFG"); - desensitizeDemo.setSlider3("ABCDEFG"); - desensitizeDemo.setEmail("1@email.com"); - desensitizeDemo.setRegex("你好,我是芋道源码"); - desensitizeDemo.setAddress("北京市海淀区上地十街10号"); - desensitizeDemo.setOrigin("芋道源码"); - - // 调用 - DesensitizeDemo d = JsonUtils.parseObject(JsonUtils.toJsonString(desensitizeDemo), DesensitizeDemo.class); - // 断言 - assertNotNull(d); - assertEquals("芋***", d.getNickname()); - assertEquals("998800********31", d.getBankCard()); - assertEquals("粤A6***6", d.getCarLicense()); - assertEquals("0108*****22", d.getFixedPhone()); - assertEquals("530321**********11", d.getIdCard()); - assertEquals("******", d.getPassword()); - assertEquals("132****5917", d.getPhoneNumber()); - assertEquals("#######", d.getSlider1()); - assertEquals("ABC*EFG", d.getSlider2()); - assertEquals("*******", d.getSlider3()); - assertEquals("1****@email.com", d.getEmail()); - assertEquals("你好,我是*", d.getRegex()); - assertEquals("北京市海淀区上地十街10号*", d.getAddress()); - assertEquals("芋道源码", d.getOrigin()); - } - - @Data - public static class DesensitizeDemo { - - @ChineseNameDesensitize - private String nickname; - @BankCardDesensitize - private String bankCard; - @CarLicenseDesensitize - private String carLicense; - @FixedPhoneDesensitize - private String fixedPhone; - @IdCardDesensitize - private String idCard; - @PasswordDesensitize - private String password; - @MobileDesensitize - private String phoneNumber; - @SliderDesensitize(prefixKeep = 6, suffixKeep = 1, replacer = "#") - private String slider1; - @SliderDesensitize(prefixKeep = 3, suffixKeep = 3) - private String slider2; - @SliderDesensitize(prefixKeep = 10) - private String slider3; - @EmailDesensitize - private String email; - @RegexDesensitize(regex = "芋道源码", replacer = "*") - private String regex; - @Address - private String address; - private String origin; - - } - -} diff --git a/win-framework/win-spring-boot-starter-desensitize/src/test/java/com/win/framework/desensitize/core/annotation/Address.java b/win-framework/win-spring-boot-starter-desensitize/src/test/java/com/win/framework/desensitize/core/annotation/Address.java deleted file mode 100644 index 0dce39b4..00000000 --- a/win-framework/win-spring-boot-starter-desensitize/src/test/java/com/win/framework/desensitize/core/annotation/Address.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.win.framework.desensitize.core.annotation; - -import com.win.framework.desensitize.core.DesensitizeTest; -import com.win.framework.desensitize.core.base.annotation.DesensitizeBy; -import com.win.framework.desensitize.core.handler.AddressHandler; -import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; - -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * 地址 - * - * 用于 {@link DesensitizeTest} 测试使用 - * - * @author gaibu - */ -@Documented -@Target({ElementType.FIELD}) -@Retention(RetentionPolicy.RUNTIME) -@JacksonAnnotationsInside -@DesensitizeBy(handler = AddressHandler.class) -public @interface Address { - - String replacer() default "*"; - -} diff --git a/win-framework/win-spring-boot-starter-desensitize/src/test/java/com/win/framework/desensitize/core/handler/AddressHandler.java b/win-framework/win-spring-boot-starter-desensitize/src/test/java/com/win/framework/desensitize/core/handler/AddressHandler.java deleted file mode 100644 index a4f23b58..00000000 --- a/win-framework/win-spring-boot-starter-desensitize/src/test/java/com/win/framework/desensitize/core/handler/AddressHandler.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.win.framework.desensitize.core.handler; - -import com.win.framework.desensitize.core.DesensitizeTest; -import com.win.framework.desensitize.core.base.handler.DesensitizationHandler; -import com.win.framework.desensitize.core.annotation.Address; - -/** - * {@link Address} 的脱敏处理器 - * - * 用于 {@link DesensitizeTest} 测试使用 - */ -public class AddressHandler implements DesensitizationHandler

{ - - @Override - public String desensitize(String origin, Address annotation) { - return origin + annotation.replacer(); - } - -} diff --git a/win-framework/win-spring-boot-starter-excel/src/main/java/com/win/framework/excel/core/convert/DictConvert.java b/win-framework/win-spring-boot-starter-excel/src/main/java/com/win/framework/excel/core/convert/DictConvert.java index d6862243..00369f47 100644 --- a/win-framework/win-spring-boot-starter-excel/src/main/java/com/win/framework/excel/core/convert/DictConvert.java +++ b/win-framework/win-spring-boot-starter-excel/src/main/java/com/win/framework/excel/core/convert/DictConvert.java @@ -14,7 +14,7 @@ import lombok.extern.slf4j.Slf4j; /** * Excel 数据字典转换器 * - * @author 芋道源码 + * @author 闻荫源码 */ @Slf4j public class DictConvert implements Converter { diff --git a/win-framework/win-spring-boot-starter-excel/src/main/java/com/win/framework/excel/core/convert/JsonConvert.java b/win-framework/win-spring-boot-starter-excel/src/main/java/com/win/framework/excel/core/convert/JsonConvert.java index a9487aa4..399e3cbf 100644 --- a/win-framework/win-spring-boot-starter-excel/src/main/java/com/win/framework/excel/core/convert/JsonConvert.java +++ b/win-framework/win-spring-boot-starter-excel/src/main/java/com/win/framework/excel/core/convert/JsonConvert.java @@ -10,7 +10,7 @@ import com.alibaba.excel.metadata.property.ExcelContentProperty; /** * Excel Json 转换器 * - * @author 芋道源码 + * @author 闻荫源码 */ public class JsonConvert implements Converter { diff --git a/win-framework/win-spring-boot-starter-excel/src/main/java/com/win/framework/excel/core/convert/MoneyConvert.java b/win-framework/win-spring-boot-starter-excel/src/main/java/com/win/framework/excel/core/convert/MoneyConvert.java index a22696bc..57fbe108 100644 --- a/win-framework/win-spring-boot-starter-excel/src/main/java/com/win/framework/excel/core/convert/MoneyConvert.java +++ b/win-framework/win-spring-boot-starter-excel/src/main/java/com/win/framework/excel/core/convert/MoneyConvert.java @@ -14,7 +14,7 @@ import java.math.RoundingMode; * * 金额单位:分 * - * @author 芋道源码 + * @author 闻荫源码 */ public class MoneyConvert implements Converter { diff --git a/win-framework/win-spring-boot-starter-excel/src/main/java/com/win/framework/excel/core/util/ExcelUtils.java b/win-framework/win-spring-boot-starter-excel/src/main/java/com/win/framework/excel/core/util/ExcelUtils.java index 1c98bc7f..575ecc11 100644 --- a/win-framework/win-spring-boot-starter-excel/src/main/java/com/win/framework/excel/core/util/ExcelUtils.java +++ b/win-framework/win-spring-boot-starter-excel/src/main/java/com/win/framework/excel/core/util/ExcelUtils.java @@ -12,7 +12,7 @@ import java.util.List; /** * Excel 工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class ExcelUtils { diff --git a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/config/WinFileAutoConfiguration.java b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/config/WinFileAutoConfiguration.java index 46a6a6bb..301bda3b 100644 --- a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/config/WinFileAutoConfiguration.java +++ b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/config/WinFileAutoConfiguration.java @@ -8,7 +8,7 @@ import org.springframework.context.annotation.Bean; /** * 文件配置类 * - * @author 芋道源码 + * @author 闻荫源码 */ @AutoConfiguration public class WinFileAutoConfiguration { diff --git a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/AbstractFileClient.java b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/AbstractFileClient.java index a8a3a303..4cc0ffbc 100644 --- a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/AbstractFileClient.java +++ b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/AbstractFileClient.java @@ -6,7 +6,7 @@ import lombok.extern.slf4j.Slf4j; /** * 文件客户端的抽象类,提供模板方法,减少子类的冗余代码 * - * @author 芋道源码 + * @author 闻荫源码 */ @Slf4j public abstract class AbstractFileClient implements FileClient { diff --git a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/FileClient.java b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/FileClient.java index f6963fa6..6c3c8eb8 100644 --- a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/FileClient.java +++ b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/FileClient.java @@ -3,7 +3,7 @@ package com.win.framework.file.core.client; /** * 文件客户端 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface FileClient { diff --git a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/FileClientConfig.java b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/FileClientConfig.java index b8ec7766..17b22d67 100644 --- a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/FileClientConfig.java +++ b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/FileClientConfig.java @@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonTypeInfo; * 文件客户端的配置 * 不同实现的客户端,需要不同的配置,通过子类来定义 * - * @author 芋道源码 + * @author 闻荫源码 */ @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS) // @JsonTypeInfo 注解的作用,Jackson 多态 diff --git a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/FileClientFactoryImpl.java b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/FileClientFactoryImpl.java index 01b3d6d9..2f720962 100644 --- a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/FileClientFactoryImpl.java +++ b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/FileClientFactoryImpl.java @@ -11,7 +11,7 @@ import java.util.concurrent.ConcurrentMap; /** * 文件客户端的工厂实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Slf4j public class FileClientFactoryImpl implements FileClientFactory { diff --git a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/db/DBFileClient.java b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/db/DBFileClient.java index b1c5c679..973b002b 100644 --- a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/db/DBFileClient.java +++ b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/db/DBFileClient.java @@ -6,7 +6,7 @@ import com.win.framework.file.core.client.AbstractFileClient; /** * 基于 DB 存储的文件客户端的配置类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class DBFileClient extends AbstractFileClient { diff --git a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/db/DBFileClientConfig.java b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/db/DBFileClientConfig.java index 4615acd3..aad1f00a 100644 --- a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/db/DBFileClientConfig.java +++ b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/db/DBFileClientConfig.java @@ -9,7 +9,7 @@ import javax.validation.constraints.NotEmpty; /** * 基于 DB 存储的文件客户端的配置类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class DBFileClientConfig implements FileClientConfig { diff --git a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/db/DBFileContentFrameworkDAO.java b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/db/DBFileContentFrameworkDAO.java index 649a7011..e024ac50 100644 --- a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/db/DBFileContentFrameworkDAO.java +++ b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/db/DBFileContentFrameworkDAO.java @@ -3,7 +3,7 @@ package com.win.framework.file.core.client.db; /** * 文件内容 Framework DAO 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface DBFileContentFrameworkDAO { diff --git a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/ftp/FtpFileClient.java b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/ftp/FtpFileClient.java index c653b9b3..dc9b8ca6 100644 --- a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/ftp/FtpFileClient.java +++ b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/ftp/FtpFileClient.java @@ -14,7 +14,7 @@ import java.io.ByteArrayOutputStream; /** * Ftp 文件客户端 * - * @author 芋道源码 + * @author 闻荫源码 */ public class FtpFileClient extends AbstractFileClient { diff --git a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/ftp/FtpFileClientConfig.java b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/ftp/FtpFileClientConfig.java index b94f0d01..06264681 100644 --- a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/ftp/FtpFileClientConfig.java +++ b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/ftp/FtpFileClientConfig.java @@ -10,7 +10,7 @@ import javax.validation.constraints.NotNull; /** * Ftp 文件客户端的配置类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class FtpFileClientConfig implements FileClientConfig { diff --git a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/local/LocalFileClient.java b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/local/LocalFileClient.java index 4bbac615..6484f090 100644 --- a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/local/LocalFileClient.java +++ b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/local/LocalFileClient.java @@ -8,7 +8,7 @@ import java.io.File; /** * 本地文件客户端 * - * @author 芋道源码 + * @author 闻荫源码 */ public class LocalFileClient extends AbstractFileClient { diff --git a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/local/LocalFileClientConfig.java b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/local/LocalFileClientConfig.java index 1da90379..c0dbbe83 100644 --- a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/local/LocalFileClientConfig.java +++ b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/local/LocalFileClientConfig.java @@ -9,7 +9,7 @@ import javax.validation.constraints.NotEmpty; /** * 本地文件客户端的配置类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class LocalFileClientConfig implements FileClientConfig { diff --git a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/s3/S3FileClient.java b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/s3/S3FileClient.java index d9232e4c..7300fe60 100644 --- a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/s3/S3FileClient.java +++ b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/s3/S3FileClient.java @@ -16,7 +16,7 @@ import static com.win.framework.file.core.client.s3.S3FileClientConfig.ENDPOINT_ *

* S3 协议的客户端,采用亚马逊提供的 software.amazon.awssdk.s3 库 * - * @author 芋道源码 + * @author 闻荫源码 */ public class S3FileClient extends AbstractFileClient { diff --git a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/s3/S3FileClientConfig.java b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/s3/S3FileClientConfig.java index 9567fc55..ce94af48 100644 --- a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/s3/S3FileClientConfig.java +++ b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/s3/S3FileClientConfig.java @@ -12,7 +12,7 @@ import javax.validation.constraints.NotNull; /** * S3 文件客户端的配置类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class S3FileClientConfig implements FileClientConfig { diff --git a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/sftp/SftpFileClient.java b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/sftp/SftpFileClient.java index d70033f7..e48e2b73 100644 --- a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/sftp/SftpFileClient.java +++ b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/sftp/SftpFileClient.java @@ -10,7 +10,7 @@ import java.io.File; /** * Sftp 文件客户端 * - * @author 芋道源码 + * @author 闻荫源码 */ public class SftpFileClient extends AbstractFileClient { diff --git a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/sftp/SftpFileClientConfig.java b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/sftp/SftpFileClientConfig.java index 96675ec4..fc3b679a 100644 --- a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/sftp/SftpFileClientConfig.java +++ b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/client/sftp/SftpFileClientConfig.java @@ -10,7 +10,7 @@ import javax.validation.constraints.NotNull; /** * Sftp 文件客户端的配置类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class SftpFileClientConfig implements FileClientConfig { diff --git a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/enums/FileStorageEnum.java b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/enums/FileStorageEnum.java index e181b1cd..bbf26451 100644 --- a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/enums/FileStorageEnum.java +++ b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/enums/FileStorageEnum.java @@ -19,7 +19,7 @@ import lombok.Getter; /** * 文件存储器枚举 * - * @author 芋道源码 + * @author 闻荫源码 */ @AllArgsConstructor @Getter diff --git a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/utils/FileTypeUtils.java b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/utils/FileTypeUtils.java index 02d3bf7d..61806e11 100644 --- a/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/utils/FileTypeUtils.java +++ b/win-framework/win-spring-boot-starter-file/src/main/java/com/win/framework/file/core/utils/FileTypeUtils.java @@ -7,7 +7,7 @@ import org.apache.tika.Tika; /** * 文件类型 Utils * - * @author 芋道源码 + * @author 闻荫源码 */ public class FileTypeUtils { diff --git a/win-framework/win-spring-boot-starter-file/src/test/java/com/win/framework/file/config/package-info.java b/win-framework/win-spring-boot-starter-file/src/test/java/com/win/framework/file/config/package-info.java deleted file mode 100644 index 174b75db..00000000 --- a/win-framework/win-spring-boot-starter-file/src/test/java/com/win/framework/file/config/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * 占位,避免 package 无法提交到 Git 仓库 - */ -package com.win.framework.file.config; diff --git a/win-framework/win-spring-boot-starter-file/src/test/java/com/win/framework/file/core/client/ftp/FtpFileClientTest.java b/win-framework/win-spring-boot-starter-file/src/test/java/com/win/framework/file/core/client/ftp/FtpFileClientTest.java deleted file mode 100644 index b504bb58..00000000 --- a/win-framework/win-spring-boot-starter-file/src/test/java/com/win/framework/file/core/client/ftp/FtpFileClientTest.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.win.framework.file.core.client.ftp; - -import cn.hutool.core.io.resource.ResourceUtil; -import cn.hutool.core.util.IdUtil; -import cn.hutool.extra.ftp.FtpMode; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; - -public class FtpFileClientTest { - - @Test - @Disabled - public void test() { - // 创建客户端 - FtpFileClientConfig config = new FtpFileClientConfig(); - config.setDomain("http://127.0.0.1:48080"); - config.setBasePath("/home/ftp"); - config.setHost("kanchai.club"); - config.setPort(221); - config.setUsername(""); - config.setPassword(""); - config.setMode(FtpMode.Passive.name()); - FtpFileClient client = new FtpFileClient(0L, config); - client.init(); - // 上传文件 - String path = IdUtil.fastSimpleUUID() + ".jpg"; - byte[] content = ResourceUtil.readBytes("file/erweima.jpg"); - String fullPath = client.upload(content, path, "image/jpeg"); - System.out.println("访问地址:" + fullPath); - if (false) { - byte[] bytes = client.getContent(path); - System.out.println("文件内容:" + bytes); - } - if (false) { - client.delete(path); - } - } - -} diff --git a/win-framework/win-spring-boot-starter-file/src/test/java/com/win/framework/file/core/client/local/LocalFileClientTest.java b/win-framework/win-spring-boot-starter-file/src/test/java/com/win/framework/file/core/client/local/LocalFileClientTest.java deleted file mode 100644 index 2742c73a..00000000 --- a/win-framework/win-spring-boot-starter-file/src/test/java/com/win/framework/file/core/client/local/LocalFileClientTest.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.win.framework.file.core.client.local; - -import cn.hutool.core.io.resource.ResourceUtil; -import cn.hutool.core.util.IdUtil; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; - -public class LocalFileClientTest { - - @Test - @Disabled - public void test() { - // 创建客户端 - LocalFileClientConfig config = new LocalFileClientConfig(); - config.setDomain("http://127.0.0.1:48080"); - config.setBasePath("/Users/yunai/file_test"); - LocalFileClient client = new LocalFileClient(0L, config); - client.init(); - // 上传文件 - String path = IdUtil.fastSimpleUUID() + ".jpg"; - byte[] content = ResourceUtil.readBytes("file/erweima.jpg"); - String fullPath = client.upload(content, path, "image/jpeg"); - System.out.println("访问地址:" + fullPath); - client.delete(path); - } - -} diff --git a/win-framework/win-spring-boot-starter-file/src/test/java/com/win/framework/file/core/client/s3/S3FileClientTest.java b/win-framework/win-spring-boot-starter-file/src/test/java/com/win/framework/file/core/client/s3/S3FileClientTest.java deleted file mode 100644 index 5ca055dd..00000000 --- a/win-framework/win-spring-boot-starter-file/src/test/java/com/win/framework/file/core/client/s3/S3FileClientTest.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.win.framework.file.core.client.s3; - -import cn.hutool.core.io.resource.ResourceUtil; -import cn.hutool.core.util.IdUtil; -import com.win.framework.common.util.validation.ValidationUtils; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; - -import javax.validation.Validation; - -public class S3FileClientTest { - - @Test - @Disabled // MinIO,如果要集成测试,可以注释本行 - public void testMinIO() throws Exception { - S3FileClientConfig config = new S3FileClientConfig(); - // 配置成你自己的 - config.setAccessKey("admin"); - config.setAccessSecret("password"); - config.setBucket("winyuanma"); - config.setDomain(null); - // 默认 9000 endpoint - config.setEndpoint("http://127.0.0.1:9000"); - - // 执行上传 - testExecuteUpload(config); - } - - @Test - @Disabled // 阿里云 OSS,如果要集成测试,可以注释本行 - public void testAliyun() throws Exception { - S3FileClientConfig config = new S3FileClientConfig(); - // 配置成你自己的 - config.setAccessKey(System.getenv("ALIYUN_ACCESS_KEY")); - config.setAccessSecret(System.getenv("ALIYUN_SECRET_KEY")); - config.setBucket("yunai-aoteman"); - config.setDomain(null); // 如果有自定义域名,则可以设置。http://ali-oss.iocoder.cn - // 默认北京的 endpoint - config.setEndpoint("oss-cn-beijing.aliyuncs.com"); - - // 执行上传 - testExecuteUpload(config); - } - - @Test - @Disabled // 腾讯云 COS,如果要集成测试,可以注释本行 - public void testQCloud() throws Exception { - S3FileClientConfig config = new S3FileClientConfig(); - // 配置成你自己的 - config.setAccessKey(System.getenv("QCLOUD_ACCESS_KEY")); - config.setAccessSecret(System.getenv("QCLOUD_SECRET_KEY")); - config.setBucket("aoteman-1255880240"); - config.setDomain(null); // 如果有自定义域名,则可以设置。http://tengxun-oss.iocoder.cn - // 默认上海的 endpoint - config.setEndpoint("cos.ap-shanghai.myqcloud.com"); - - // 执行上传 - testExecuteUpload(config); - } - - @Test - @Disabled // 七牛云存储,如果要集成测试,可以注释本行 - public void testQiniu() throws Exception { - S3FileClientConfig config = new S3FileClientConfig(); - // 配置成你自己的 -// config.setAccessKey(System.getenv("QINIU_ACCESS_KEY")); -// config.setAccessSecret(System.getenv("QINIU_SECRET_KEY")); - config.setAccessKey("b7yvuhBSAGjmtPhMFcn9iMOxUOY_I06cA_p0ZUx8"); - config.setAccessSecret("kXM1l5ia1RvSX3QaOEcwI3RLz3Y2rmNszWonKZtP"); - config.setBucket("ruoyi-vue-pro"); - config.setDomain("http://test.win.iocoder.cn"); // 如果有自定义域名,则可以设置。http://static.win.iocoder.cn - // 默认上海的 endpoint - config.setEndpoint("s3-cn-south-1.qiniucs.com"); - - // 执行上传 - testExecuteUpload(config); - } - - @Test - @Disabled // 华为云存储,如果要集成测试,可以注释本行 - public void testHuaweiCloud() throws Exception { - S3FileClientConfig config = new S3FileClientConfig(); - // 配置成你自己的 -// config.setAccessKey(System.getenv("HUAWEI_CLOUD_ACCESS_KEY")); -// config.setAccessSecret(System.getenv("HUAWEI_CLOUD_SECRET_KEY")); - config.setBucket("win"); - config.setDomain(null); // 如果有自定义域名,则可以设置。 - // 默认上海的 endpoint - config.setEndpoint("obs.cn-east-3.myhuaweicloud.com"); - - // 执行上传 - testExecuteUpload(config); - } - - private void testExecuteUpload(S3FileClientConfig config) throws Exception { - // 校验配置 - ValidationUtils.validate(Validation.buildDefaultValidatorFactory().getValidator(), config); - // 创建 Client - S3FileClient client = new S3FileClient(0L, config); - client.init(); - // 上传文件 - String path = IdUtil.fastSimpleUUID() + ".jpg"; - byte[] content = ResourceUtil.readBytes("file/erweima.jpg"); - String fullPath = client.upload(content, path, "image/jpeg"); - System.out.println("访问地址:" + fullPath); - // 读取文件 - if (true) { - byte[] bytes = client.getContent(path); - System.out.println("文件内容:" + bytes.length); - } - // 删除文件 - if (false) { - client.delete(path); - } - } - -} diff --git a/win-framework/win-spring-boot-starter-file/src/test/java/com/win/framework/file/core/client/sftp/SftpFileClientTest.java b/win-framework/win-spring-boot-starter-file/src/test/java/com/win/framework/file/core/client/sftp/SftpFileClientTest.java deleted file mode 100644 index 7c02e755..00000000 --- a/win-framework/win-spring-boot-starter-file/src/test/java/com/win/framework/file/core/client/sftp/SftpFileClientTest.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.win.framework.file.core.client.sftp; - -import cn.hutool.core.io.resource.ResourceUtil; -import cn.hutool.core.util.IdUtil; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; - -public class SftpFileClientTest { - - @Test - @Disabled - public void test() { - // 创建客户端 - SftpFileClientConfig config = new SftpFileClientConfig(); - config.setDomain("http://127.0.0.1:48080"); - config.setBasePath("/home/ftp"); - config.setHost("kanchai.club"); - config.setPort(222); - config.setUsername(""); - config.setPassword(""); - SftpFileClient client = new SftpFileClient(0L, config); - client.init(); - // 上传文件 - String path = IdUtil.fastSimpleUUID() + ".jpg"; - byte[] content = ResourceUtil.readBytes("file/erweima.jpg"); - String fullPath = client.upload(content, path, "image/jpeg"); - System.out.println("访问地址:" + fullPath); - if (false) { - byte[] bytes = client.getContent(path); - System.out.println("文件内容:" + bytes); - } - if (false) { - client.delete(path); - } - } - -} diff --git a/win-framework/win-spring-boot-starter-file/src/test/java/com/win/framework/file/core/enums/package-info.java b/win-framework/win-spring-boot-starter-file/src/test/java/com/win/framework/file/core/enums/package-info.java deleted file mode 100644 index 093b93dc..00000000 --- a/win-framework/win-spring-boot-starter-file/src/test/java/com/win/framework/file/core/enums/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * 占位,避免 package 无法提交到 Git 仓库 - */ -package com.win.framework.file.core.enums; diff --git a/win-framework/win-spring-boot-starter-flowable/src/main/java/com/win/framework/flowable/core/util/FlowableUtils.java b/win-framework/win-spring-boot-starter-flowable/src/main/java/com/win/framework/flowable/core/util/FlowableUtils.java index 495f68ea..796df971 100644 --- a/win-framework/win-spring-boot-starter-flowable/src/main/java/com/win/framework/flowable/core/util/FlowableUtils.java +++ b/win-framework/win-spring-boot-starter-flowable/src/main/java/com/win/framework/flowable/core/util/FlowableUtils.java @@ -12,7 +12,7 @@ import java.util.List; /** * Flowable 相关的工具方法 * - * @author 芋道源码 + * @author 闻荫源码 */ public class FlowableUtils { diff --git a/win-framework/win-spring-boot-starter-job/src/main/java/com/win/framework/quartz/core/handler/JobHandler.java b/win-framework/win-spring-boot-starter-job/src/main/java/com/win/framework/quartz/core/handler/JobHandler.java index a3069269..c4035969 100644 --- a/win-framework/win-spring-boot-starter-job/src/main/java/com/win/framework/quartz/core/handler/JobHandler.java +++ b/win-framework/win-spring-boot-starter-job/src/main/java/com/win/framework/quartz/core/handler/JobHandler.java @@ -3,7 +3,7 @@ package com.win.framework.quartz.core.handler; /** * 任务处理器 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface JobHandler { diff --git a/win-framework/win-spring-boot-starter-job/src/main/java/com/win/framework/quartz/core/handler/JobHandlerInvoker.java b/win-framework/win-spring-boot-starter-job/src/main/java/com/win/framework/quartz/core/handler/JobHandlerInvoker.java index 109a03f9..ce6106c1 100644 --- a/win-framework/win-spring-boot-starter-job/src/main/java/com/win/framework/quartz/core/handler/JobHandlerInvoker.java +++ b/win-framework/win-spring-boot-starter-job/src/main/java/com/win/framework/quartz/core/handler/JobHandlerInvoker.java @@ -22,7 +22,7 @@ import static cn.hutool.core.exceptions.ExceptionUtil.getRootCauseMessage; /** * 基础 Job 调用者,负责调用 {@link JobHandler#execute(String)} 执行任务 * - * @author 芋道源码 + * @author 闻荫源码 */ @DisallowConcurrentExecution @PersistJobDataAfterExecution diff --git a/win-framework/win-spring-boot-starter-job/src/main/java/com/win/framework/quartz/core/scheduler/SchedulerManager.java b/win-framework/win-spring-boot-starter-job/src/main/java/com/win/framework/quartz/core/scheduler/SchedulerManager.java index 479ef2c4..cf2841b7 100644 --- a/win-framework/win-spring-boot-starter-job/src/main/java/com/win/framework/quartz/core/scheduler/SchedulerManager.java +++ b/win-framework/win-spring-boot-starter-job/src/main/java/com/win/framework/quartz/core/scheduler/SchedulerManager.java @@ -16,7 +16,7 @@ import static com.win.framework.common.exception.util.ServiceExceptionUtil.excep * * 另外,jobHandlerName 对应到 Spring Bean 的名字,直接调用 * - * @author 芋道源码 + * @author 闻荫源码 */ public class SchedulerManager { diff --git a/win-framework/win-spring-boot-starter-job/src/main/java/com/win/framework/quartz/core/service/JobLogFrameworkService.java b/win-framework/win-spring-boot-starter-job/src/main/java/com/win/framework/quartz/core/service/JobLogFrameworkService.java index 49a3a6c4..dacb6575 100644 --- a/win-framework/win-spring-boot-starter-job/src/main/java/com/win/framework/quartz/core/service/JobLogFrameworkService.java +++ b/win-framework/win-spring-boot-starter-job/src/main/java/com/win/framework/quartz/core/service/JobLogFrameworkService.java @@ -7,7 +7,7 @@ import java.time.LocalDateTime; /** * Job 日志 Framework Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface JobLogFrameworkService { diff --git a/win-framework/win-spring-boot-starter-job/src/main/java/com/win/framework/quartz/core/util/CronUtils.java b/win-framework/win-spring-boot-starter-job/src/main/java/com/win/framework/quartz/core/util/CronUtils.java index ce739172..337c4606 100644 --- a/win-framework/win-spring-boot-starter-job/src/main/java/com/win/framework/quartz/core/util/CronUtils.java +++ b/win-framework/win-spring-boot-starter-job/src/main/java/com/win/framework/quartz/core/util/CronUtils.java @@ -12,7 +12,7 @@ import java.util.List; /** * Quartz Cron 表达式的工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class CronUtils { diff --git a/win-framework/win-spring-boot-starter-job/《芋道 Spring Boot 定时任务入门》.md b/win-framework/win-spring-boot-starter-job/《芋道 Spring Boot 定时任务入门》.md deleted file mode 100644 index 9a8a16cf..00000000 --- a/win-framework/win-spring-boot-starter-job/《芋道 Spring Boot 定时任务入门》.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/win-framework/win-spring-boot-starter-job/《芋道 Spring Boot 异步任务入门》.md b/win-framework/win-spring-boot-starter-job/《芋道 Spring Boot 异步任务入门》.md deleted file mode 100644 index 3161ffbc..00000000 --- a/win-framework/win-spring-boot-starter-job/《芋道 Spring Boot 异步任务入门》.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/win-framework/win-spring-boot-starter-monitor/src/main/java/com/win/framework/tracer/config/WinMetricsAutoConfiguration.java b/win-framework/win-spring-boot-starter-monitor/src/main/java/com/win/framework/tracer/config/WinMetricsAutoConfiguration.java index 26dece1b..4e336f56 100644 --- a/win-framework/win-spring-boot-starter-monitor/src/main/java/com/win/framework/tracer/config/WinMetricsAutoConfiguration.java +++ b/win-framework/win-spring-boot-starter-monitor/src/main/java/com/win/framework/tracer/config/WinMetricsAutoConfiguration.java @@ -11,7 +11,7 @@ import org.springframework.context.annotation.Bean; /** * Metrics 配置类 * - * @author 芋道源码 + * @author 闻荫源码 */ @AutoConfiguration @ConditionalOnClass({MeterRegistryCustomizer.class}) diff --git a/win-framework/win-spring-boot-starter-monitor/src/main/java/com/win/framework/tracer/core/filter/TraceFilter.java b/win-framework/win-spring-boot-starter-monitor/src/main/java/com/win/framework/tracer/core/filter/TraceFilter.java index a111ee3f..7030061f 100644 --- a/win-framework/win-spring-boot-starter-monitor/src/main/java/com/win/framework/tracer/core/filter/TraceFilter.java +++ b/win-framework/win-spring-boot-starter-monitor/src/main/java/com/win/framework/tracer/core/filter/TraceFilter.java @@ -12,7 +12,7 @@ import java.io.IOException; /** * Trace 过滤器,打印 traceId 到 header 中返回 * - * @author 芋道源码 + * @author 闻荫源码 */ public class TraceFilter extends OncePerRequestFilter { diff --git a/win-framework/win-spring-boot-starter-monitor/src/main/java/com/win/framework/tracer/core/util/TracerFrameworkUtils.java b/win-framework/win-spring-boot-starter-monitor/src/main/java/com/win/framework/tracer/core/util/TracerFrameworkUtils.java index 0a9d6bb3..391b5462 100644 --- a/win-framework/win-spring-boot-starter-monitor/src/main/java/com/win/framework/tracer/core/util/TracerFrameworkUtils.java +++ b/win-framework/win-spring-boot-starter-monitor/src/main/java/com/win/framework/tracer/core/util/TracerFrameworkUtils.java @@ -11,7 +11,7 @@ import java.util.Map; /** * 链路追踪 Util * - * @author 芋道源码 + * @author 闻荫源码 */ public class TracerFrameworkUtils { diff --git a/win-framework/win-spring-boot-starter-monitor/src/main/java/com/win/framework/tracer/package-info.java b/win-framework/win-spring-boot-starter-monitor/src/main/java/com/win/framework/tracer/package-info.java index f068d71e..7479d09c 100644 --- a/win-framework/win-spring-boot-starter-monitor/src/main/java/com/win/framework/tracer/package-info.java +++ b/win-framework/win-spring-boot-starter-monitor/src/main/java/com/win/framework/tracer/package-info.java @@ -1,6 +1,6 @@ /** * 使用 SkyWalking 组件,作为链路追踪、日志中心。 * - * @author 芋道源码 + * @author 闻荫源码 */ package com.win.framework.tracer; diff --git a/win-framework/win-spring-boot-starter-monitor/《芋道 Spring Boot 监控工具 Admin 入门》.md b/win-framework/win-spring-boot-starter-monitor/《芋道 Spring Boot 监控工具 Admin 入门》.md deleted file mode 100644 index 47f328ba..00000000 --- a/win-framework/win-spring-boot-starter-monitor/《芋道 Spring Boot 监控工具 Admin 入门》.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/win-framework/win-spring-boot-starter-monitor/《芋道 Spring Boot 监控端点 Actuator 入门》.md b/win-framework/win-spring-boot-starter-monitor/《芋道 Spring Boot 监控端点 Actuator 入门》.md deleted file mode 100644 index b36e7a06..00000000 --- a/win-framework/win-spring-boot-starter-monitor/《芋道 Spring Boot 监控端点 Actuator 入门》.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/win-framework/win-spring-boot-starter-monitor/《芋道 Spring Boot 链路追踪 SkyWalking 入门》.md b/win-framework/win-spring-boot-starter-monitor/《芋道 Spring Boot 链路追踪 SkyWalking 入门》.md deleted file mode 100644 index 83ce7389..00000000 --- a/win-framework/win-spring-boot-starter-monitor/《芋道 Spring Boot 链路追踪 SkyWalking 入门》.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/config/WinMQAutoConfiguration.java b/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/config/WinMQAutoConfiguration.java index e49113bd..c43a92b6 100644 --- a/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/config/WinMQAutoConfiguration.java +++ b/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/config/WinMQAutoConfiguration.java @@ -37,7 +37,7 @@ import java.util.Properties; /** * 消息队列配置类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Slf4j @EnableScheduling // 启用定时任务,用于 RedisPendingMessageResendJob 重发消息 diff --git a/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/RedisMQTemplate.java b/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/RedisMQTemplate.java index d21fd7d5..104d9779 100644 --- a/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/RedisMQTemplate.java +++ b/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/RedisMQTemplate.java @@ -17,7 +17,7 @@ import java.util.List; /** * Redis MQ 操作模板类 * - * @author 芋道源码 + * @author 闻荫源码 */ @AllArgsConstructor public class RedisMQTemplate { diff --git a/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/interceptor/RedisMessageInterceptor.java b/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/interceptor/RedisMessageInterceptor.java index 0d7c00e1..7e37782f 100644 --- a/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/interceptor/RedisMessageInterceptor.java +++ b/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/interceptor/RedisMessageInterceptor.java @@ -7,7 +7,7 @@ import com.win.framework.mq.core.message.AbstractRedisMessage; * 通过拦截器,作为插件机制,实现拓展。 * 例如说,多租户场景下的 MQ 消息处理 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface RedisMessageInterceptor { diff --git a/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/message/AbstractRedisMessage.java b/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/message/AbstractRedisMessage.java index 2e08c7a3..87a6d204 100644 --- a/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/message/AbstractRedisMessage.java +++ b/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/message/AbstractRedisMessage.java @@ -8,7 +8,7 @@ import java.util.Map; /** * Redis 消息抽象基类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public abstract class AbstractRedisMessage { diff --git a/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/pubsub/AbstractChannelMessage.java b/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/pubsub/AbstractChannelMessage.java index e023c429..54e3531b 100644 --- a/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/pubsub/AbstractChannelMessage.java +++ b/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/pubsub/AbstractChannelMessage.java @@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; /** * Redis Channel Message 抽象类 * - * @author 芋道源码 + * @author 闻荫源码 */ public abstract class AbstractChannelMessage extends AbstractRedisMessage { diff --git a/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/pubsub/AbstractChannelMessageListener.java b/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/pubsub/AbstractChannelMessageListener.java index 012c7bd3..73934a89 100644 --- a/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/pubsub/AbstractChannelMessageListener.java +++ b/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/pubsub/AbstractChannelMessageListener.java @@ -18,7 +18,7 @@ import java.util.List; * * @param 消息类型。一定要填写噢,不然会报错 * - * @author 芋道源码 + * @author 闻荫源码 */ public abstract class AbstractChannelMessageListener implements MessageListener { diff --git a/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/stream/AbstractStreamMessage.java b/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/stream/AbstractStreamMessage.java index 335849ae..1a9f0a5f 100644 --- a/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/stream/AbstractStreamMessage.java +++ b/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/stream/AbstractStreamMessage.java @@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; /** * Redis Stream Message 抽象类 * - * @author 芋道源码 + * @author 闻荫源码 */ public abstract class AbstractStreamMessage extends AbstractRedisMessage { diff --git a/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/stream/AbstractStreamMessageListener.java b/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/stream/AbstractStreamMessageListener.java index fb147235..52a6feb4 100644 --- a/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/stream/AbstractStreamMessageListener.java +++ b/win-framework/win-spring-boot-starter-mq/src/main/java/com/win/framework/mq/core/stream/AbstractStreamMessageListener.java @@ -20,7 +20,7 @@ import java.util.List; * * @param 消息类型。一定要填写噢,不然会报错 * - * @author 芋道源码 + * @author 闻荫源码 */ public abstract class AbstractStreamMessageListener implements StreamListener> { diff --git a/win-framework/win-spring-boot-starter-mq/src/main/java/org/springframework/data/redis/stream/DefaultStreamMessageListenerContainerX.java b/win-framework/win-spring-boot-starter-mq/src/main/java/org/springframework/data/redis/stream/DefaultStreamMessageListenerContainerX.java index b4cf4c55..abf74252 100644 --- a/win-framework/win-spring-boot-starter-mq/src/main/java/org/springframework/data/redis/stream/DefaultStreamMessageListenerContainerX.java +++ b/win-framework/win-spring-boot-starter-mq/src/main/java/org/springframework/data/redis/stream/DefaultStreamMessageListenerContainerX.java @@ -16,7 +16,7 @@ import java.util.function.Function; * 对应 issue:https://github.com/spring-projects/spring-data-redis/issues/2147 和 https://github.com/redisson/redisson/issues/4006 * 目前看下来 Spring Data Redis 不肯加 null 判断,Redisson 暂时也没改返回 null 到空 List 的打算,所以暂时只能自己改,哽咽! * - * @author 芋道源码 + * @author 闻荫源码 */ public class DefaultStreamMessageListenerContainerX> extends DefaultStreamMessageListenerContainer { diff --git a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/datasource/config/WinDataSourceAutoConfiguration.java b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/datasource/config/WinDataSourceAutoConfiguration.java index b37fbb5e..2f444b5b 100644 --- a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/datasource/config/WinDataSourceAutoConfiguration.java +++ b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/datasource/config/WinDataSourceAutoConfiguration.java @@ -12,7 +12,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; /** * 数据库配置类 * - * @author 芋道源码 + * @author 闻荫源码 */ @AutoConfiguration @EnableTransactionManagement(proxyTargetClass = true) // 启动事务管理 diff --git a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/datasource/core/filter/DruidAdRemoveFilter.java b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/datasource/core/filter/DruidAdRemoveFilter.java index 54ac3b97..f808e273 100644 --- a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/datasource/core/filter/DruidAdRemoveFilter.java +++ b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/datasource/core/filter/DruidAdRemoveFilter.java @@ -12,7 +12,7 @@ import java.io.IOException; /** * Druid 底部广告过滤器 * - * @author 芋道源码 + * @author 闻荫源码 */ public class DruidAdRemoveFilter extends OncePerRequestFilter { diff --git a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/config/IdTypeEnvironmentPostProcessor.java b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/config/IdTypeEnvironmentPostProcessor.java index 864901ab..ce7a938e 100644 --- a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/config/IdTypeEnvironmentPostProcessor.java +++ b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/config/IdTypeEnvironmentPostProcessor.java @@ -16,7 +16,7 @@ import java.util.Set; /** * 当 IdType 为 {@link IdType#NONE} 时,根据 PRIMARY 数据源所使用的数据库,自动设置 * - * @author 芋道源码 + * @author 闻荫源码 */ @Slf4j public class IdTypeEnvironmentPostProcessor implements EnvironmentPostProcessor { diff --git a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/config/WinMybatisAutoConfiguration.java b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/config/WinMybatisAutoConfiguration.java index 2c2aff8b..7cf5c9d9 100644 --- a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/config/WinMybatisAutoConfiguration.java +++ b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/config/WinMybatisAutoConfiguration.java @@ -18,7 +18,7 @@ import org.springframework.core.env.ConfigurableEnvironment; /** * MyBaits 配置类 * - * @author 芋道源码 + * @author 闻荫源码 */ @AutoConfiguration @MapperScan(value = "${win.info.base-package}", annotationClass = Mapper.class, diff --git a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/dataobject/BaseDO.java b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/dataobject/BaseDO.java index 79fb14d7..757ebf84 100644 --- a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/dataobject/BaseDO.java +++ b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/dataobject/BaseDO.java @@ -12,7 +12,7 @@ import java.time.LocalDateTime; /** * 基础实体对象 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public abstract class BaseDO implements Serializable { diff --git a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/enums/SqlConstants.java b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/enums/SqlConstants.java index d1824dd2..88b159cd 100644 --- a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/enums/SqlConstants.java +++ b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/enums/SqlConstants.java @@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.annotation.DbType; /** * SQL相关常量类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class SqlConstants { diff --git a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/type/EncryptTypeHandler.java b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/type/EncryptTypeHandler.java index 520fadbb..2310ba3d 100644 --- a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/type/EncryptTypeHandler.java +++ b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/type/EncryptTypeHandler.java @@ -16,7 +16,7 @@ import java.sql.SQLException; * 字段字段的 TypeHandler 实现类,基于 {@link cn.hutool.crypto.symmetric.AES} 实现 * 可通过 jasypt.encryptor.password 配置项,设置密钥 * - * @author 芋道源码 + * @author 闻荫源码 */ public class EncryptTypeHandler extends BaseTypeHandler { diff --git a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/type/JsonLongSetTypeHandler.java b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/type/JsonLongSetTypeHandler.java index 986f8273..d98bcf51 100644 --- a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/type/JsonLongSetTypeHandler.java +++ b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/type/JsonLongSetTypeHandler.java @@ -12,7 +12,7 @@ import java.util.Set; * * 例如说哦,SysUserDO 的 postIds 属性 * - * @author 芋道源码 + * @author 闻荫源码 */ public class JsonLongSetTypeHandler extends AbstractJsonTypeHandler { diff --git a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/type/LongListTypeHandler.java b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/type/LongListTypeHandler.java index 79aae893..9aa0d538 100644 --- a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/type/LongListTypeHandler.java +++ b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/type/LongListTypeHandler.java @@ -16,7 +16,7 @@ import java.util.List; /** * List 的类型转换器实现类,对应数据库的 varchar 类型 * - * @author 芋道源码 + * @author 闻荫源码 */ @MappedJdbcTypes(JdbcType.VARCHAR) @MappedTypes(List.class) diff --git a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/util/JdbcUtils.java b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/util/JdbcUtils.java index d32c6d37..b908be9a 100644 --- a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/util/JdbcUtils.java +++ b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/util/JdbcUtils.java @@ -8,7 +8,7 @@ import java.sql.DriverManager; /** * JDBC 工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class JdbcUtils { diff --git a/win-framework/win-spring-boot-starter-mybatis/《芋道 Spring Boot MyBatis 入门》.md b/win-framework/win-spring-boot-starter-mybatis/《芋道 Spring Boot MyBatis 入门》.md deleted file mode 100644 index 7c6d7245..00000000 --- a/win-framework/win-spring-boot-starter-mybatis/《芋道 Spring Boot MyBatis 入门》.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/win-framework/win-spring-boot-starter-mybatis/《芋道 Spring Boot 多数据源(读写分离)入门》.md b/win-framework/win-spring-boot-starter-mybatis/《芋道 Spring Boot 多数据源(读写分离)入门》.md deleted file mode 100644 index ad52a19a..00000000 --- a/win-framework/win-spring-boot-starter-mybatis/《芋道 Spring Boot 多数据源(读写分离)入门》.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/win-framework/win-spring-boot-starter-mybatis/《芋道 Spring Boot 数据库连接池入门》.md b/win-framework/win-spring-boot-starter-mybatis/《芋道 Spring Boot 数据库连接池入门》.md deleted file mode 100644 index fc9ef1c7..00000000 --- a/win-framework/win-spring-boot-starter-mybatis/《芋道 Spring Boot 数据库连接池入门》.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/idempotent/core/annotation/Idempotent.java b/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/idempotent/core/annotation/Idempotent.java index 32afa17b..30409330 100644 --- a/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/idempotent/core/annotation/Idempotent.java +++ b/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/idempotent/core/annotation/Idempotent.java @@ -12,7 +12,7 @@ import java.util.concurrent.TimeUnit; /** * 幂等注解 * - * @author 芋道源码 + * @author 闻荫源码 */ @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) diff --git a/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/idempotent/core/aop/IdempotentAspect.java b/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/idempotent/core/aop/IdempotentAspect.java index 9bd246e3..c4842137 100644 --- a/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/idempotent/core/aop/IdempotentAspect.java +++ b/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/idempotent/core/aop/IdempotentAspect.java @@ -18,7 +18,7 @@ import java.util.Map; /** * 拦截声明了 {@link Idempotent} 注解的方法,实现幂等操作 * - * @author 芋道源码 + * @author 闻荫源码 */ @Aspect @Slf4j diff --git a/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/idempotent/core/keyresolver/IdempotentKeyResolver.java b/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/idempotent/core/keyresolver/IdempotentKeyResolver.java index 412443c3..5202acab 100644 --- a/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/idempotent/core/keyresolver/IdempotentKeyResolver.java +++ b/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/idempotent/core/keyresolver/IdempotentKeyResolver.java @@ -6,7 +6,7 @@ import org.aspectj.lang.JoinPoint; /** * 幂等 Key 解析器接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface IdempotentKeyResolver { diff --git a/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/idempotent/core/keyresolver/impl/DefaultIdempotentKeyResolver.java b/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/idempotent/core/keyresolver/impl/DefaultIdempotentKeyResolver.java index e0cdd071..8a6087c9 100644 --- a/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/idempotent/core/keyresolver/impl/DefaultIdempotentKeyResolver.java +++ b/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/idempotent/core/keyresolver/impl/DefaultIdempotentKeyResolver.java @@ -11,7 +11,7 @@ import org.aspectj.lang.JoinPoint; * * 为了避免 Key 过长,使用 MD5 进行“压缩” * - * @author 芋道源码 + * @author 闻荫源码 */ public class DefaultIdempotentKeyResolver implements IdempotentKeyResolver { diff --git a/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/idempotent/core/keyresolver/impl/ExpressionIdempotentKeyResolver.java b/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/idempotent/core/keyresolver/impl/ExpressionIdempotentKeyResolver.java index d590b63f..79a854da 100644 --- a/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/idempotent/core/keyresolver/impl/ExpressionIdempotentKeyResolver.java +++ b/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/idempotent/core/keyresolver/impl/ExpressionIdempotentKeyResolver.java @@ -17,7 +17,7 @@ import java.lang.reflect.Method; /** * 基于 Spring EL 表达式, * - * @author 芋道源码 + * @author 闻荫源码 */ public class ExpressionIdempotentKeyResolver implements IdempotentKeyResolver { diff --git a/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/idempotent/core/redis/IdempotentRedisDAO.java b/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/idempotent/core/redis/IdempotentRedisDAO.java index a9b94430..e2ed12a7 100644 --- a/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/idempotent/core/redis/IdempotentRedisDAO.java +++ b/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/idempotent/core/redis/IdempotentRedisDAO.java @@ -8,7 +8,7 @@ import java.util.concurrent.TimeUnit; /** * 幂等 Redis DAO * - * @author 芋道源码 + * @author 闻荫源码 */ @AllArgsConstructor public class IdempotentRedisDAO { diff --git a/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/lock4j/core/Lock4jRedisKeyConstants.java b/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/lock4j/core/Lock4jRedisKeyConstants.java index 5fded71c..4b7b4ee2 100644 --- a/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/lock4j/core/Lock4jRedisKeyConstants.java +++ b/win-framework/win-spring-boot-starter-protection/src/main/java/com/win/framework/lock4j/core/Lock4jRedisKeyConstants.java @@ -3,7 +3,7 @@ package com.win.framework.lock4j.core; /** * Lock4j Redis Key 枚举类 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface Lock4jRedisKeyConstants { diff --git a/win-framework/win-spring-boot-starter-redis/src/main/java/com/win/framework/redis/core/TimeoutRedisCacheManager.java b/win-framework/win-spring-boot-starter-redis/src/main/java/com/win/framework/redis/core/TimeoutRedisCacheManager.java index 594ebe94..2dd406ea 100644 --- a/win-framework/win-spring-boot-starter-redis/src/main/java/com/win/framework/redis/core/TimeoutRedisCacheManager.java +++ b/win-framework/win-spring-boot-starter-redis/src/main/java/com/win/framework/redis/core/TimeoutRedisCacheManager.java @@ -16,7 +16,7 @@ import java.time.Duration; * 在 {@link Cacheable#cacheNames()} 格式为 "key#ttl" 时,# 后面的 ttl 为过期时间。 * 单位为最后一个字母(支持的单位有:d 天,h 小时,m 分钟,s 秒),默认单位为 s 秒 * - * @author 芋道源码 + * @author 闻荫源码 */ public class TimeoutRedisCacheManager extends RedisCacheManager { diff --git a/win-framework/win-spring-boot-starter-redis/《芋道 Spring Boot Cache 入门》.md b/win-framework/win-spring-boot-starter-redis/《芋道 Spring Boot Cache 入门》.md deleted file mode 100644 index 50ce4c7c..00000000 --- a/win-framework/win-spring-boot-starter-redis/《芋道 Spring Boot Cache 入门》.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/win-framework/win-spring-boot-starter-redis/《芋道 Spring Boot Redis 入门》.md b/win-framework/win-spring-boot-starter-redis/《芋道 Spring Boot Redis 入门》.md deleted file mode 100644 index c5c959b5..00000000 --- a/win-framework/win-spring-boot-starter-redis/《芋道 Spring Boot Redis 入门》.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/config/AuthorizeRequestsCustomizer.java b/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/config/AuthorizeRequestsCustomizer.java index 299dacd3..0da27d9e 100644 --- a/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/config/AuthorizeRequestsCustomizer.java +++ b/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/config/AuthorizeRequestsCustomizer.java @@ -12,7 +12,7 @@ import javax.annotation.Resource; * 自定义的 URL 的安全配置 * 目的:每个 Maven Module 可以自定义规则! * - * @author 芋道源码 + * @author 闻荫源码 */ public abstract class AuthorizeRequestsCustomizer implements Customizer.ExpressionInterceptUrlRegistry>, Ordered { diff --git a/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/config/WinSecurityAutoConfiguration.java b/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/config/WinSecurityAutoConfiguration.java index 4e651808..f1a8dd26 100644 --- a/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/config/WinSecurityAutoConfiguration.java +++ b/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/config/WinSecurityAutoConfiguration.java @@ -28,7 +28,7 @@ import javax.annotation.Resource; * 注意,不能和 {@link WinWebSecurityConfigurerAdapter} 用一个,原因是会导致初始化报错。 * 参见 https://stackoverflow.com/questions/53847050/spring-boot-delegatebuilder-cannot-be-null-on-autowiring-authenticationmanager 文档。 * - * @author 芋道源码 + * @author 闻荫源码 */ @AutoConfiguration @EnableConfigurationProperties(SecurityProperties.class) diff --git a/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/config/WinWebSecurityConfigurerAdapter.java b/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/config/WinWebSecurityConfigurerAdapter.java index 0240c90a..0a31be24 100644 --- a/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/config/WinWebSecurityConfigurerAdapter.java +++ b/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/config/WinWebSecurityConfigurerAdapter.java @@ -30,7 +30,7 @@ import java.util.Set; /** * 自定义的 Spring Security 配置适配器实现 * - * @author 芋道源码 + * @author 闻荫源码 */ @AutoConfiguration @EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true) diff --git a/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/LoginUser.java b/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/LoginUser.java index 5778745d..4d3bba45 100644 --- a/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/LoginUser.java +++ b/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/LoginUser.java @@ -12,7 +12,7 @@ import java.util.Map; /** * 登录用户信息 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class LoginUser { diff --git a/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/annotations/PreAuthenticated.java b/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/annotations/PreAuthenticated.java index 880367ce..3c047bc9 100644 --- a/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/annotations/PreAuthenticated.java +++ b/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/annotations/PreAuthenticated.java @@ -7,7 +7,7 @@ import java.lang.annotation.*; * * 为什么不使用 {@link org.springframework.security.access.prepost.PreAuthorize} 注解,原因是不通过时,抛出的是认证不通过,而不是未登录 * - * @author 芋道源码 + * @author 闻荫源码 */ @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) diff --git a/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/context/TransmittableThreadLocalSecurityContextHolderStrategy.java b/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/context/TransmittableThreadLocalSecurityContextHolderStrategy.java index dfc7f9c9..cf5556b8 100644 --- a/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/context/TransmittableThreadLocalSecurityContextHolderStrategy.java +++ b/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/context/TransmittableThreadLocalSecurityContextHolderStrategy.java @@ -10,7 +10,7 @@ import org.springframework.util.Assert; * 基于 TransmittableThreadLocal 实现的 Security Context 持有者策略 * 目的是,避免 @Async 等异步执行时,原生 ThreadLocal 的丢失问题 * - * @author 芋道源码 + * @author 闻荫源码 */ public class TransmittableThreadLocalSecurityContextHolderStrategy implements SecurityContextHolderStrategy { diff --git a/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/filter/TokenAuthenticationFilter.java b/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/filter/TokenAuthenticationFilter.java index 4a4ad188..d2c8bde1 100644 --- a/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/filter/TokenAuthenticationFilter.java +++ b/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/filter/TokenAuthenticationFilter.java @@ -26,7 +26,7 @@ import java.io.IOException; * Token 过滤器,验证 token 的有效性 * 验证通过后,获得 {@link LoginUser} 信息,并加入到 Spring Security 上下文 * - * @author 芋道源码 + * @author 闻荫源码 */ @RequiredArgsConstructor public class TokenAuthenticationFilter extends OncePerRequestFilter { diff --git a/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/handler/AccessDeniedHandlerImpl.java b/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/handler/AccessDeniedHandlerImpl.java index 9b0034e0..58822c53 100644 --- a/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/handler/AccessDeniedHandlerImpl.java +++ b/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/handler/AccessDeniedHandlerImpl.java @@ -24,7 +24,7 @@ import static com.win.framework.common.exception.enums.GlobalErrorCodeConstants. * * 补充:Spring Security 通过 {@link ExceptionTranslationFilter#handleAccessDeniedException(HttpServletRequest, HttpServletResponse, FilterChain, AccessDeniedException)} 方法,调用当前类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Slf4j @SuppressWarnings("JavadocReference") diff --git a/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/service/SecurityFrameworkService.java b/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/service/SecurityFrameworkService.java index 442768ec..a036d6b5 100644 --- a/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/service/SecurityFrameworkService.java +++ b/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/service/SecurityFrameworkService.java @@ -3,7 +3,7 @@ package com.win.framework.security.core.service; /** * Security 框架 Service 接口,定义权限相关的校验操作 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface SecurityFrameworkService { diff --git a/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/service/SecurityFrameworkServiceImpl.java b/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/service/SecurityFrameworkServiceImpl.java index 7ce903e7..d098acd5 100644 --- a/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/service/SecurityFrameworkServiceImpl.java +++ b/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/service/SecurityFrameworkServiceImpl.java @@ -13,7 +13,7 @@ import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLog /** * 默认的 {@link SecurityFrameworkService} 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @AllArgsConstructor public class SecurityFrameworkServiceImpl implements SecurityFrameworkService { diff --git a/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/util/SecurityFrameworkUtils.java b/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/util/SecurityFrameworkUtils.java index 90df1ba9..441697d9 100644 --- a/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/util/SecurityFrameworkUtils.java +++ b/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/core/util/SecurityFrameworkUtils.java @@ -16,7 +16,7 @@ import java.util.Collections; /** * 安全服务工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class SecurityFrameworkUtils { diff --git a/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/package-info.java b/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/package-info.java index ade6ce05..ef8046d2 100644 --- a/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/package-info.java +++ b/win-framework/win-spring-boot-starter-security/src/main/java/com/win/framework/security/package-info.java @@ -2,6 +2,6 @@ * 基于 Spring Security 框架 * 实现安全认证功能 * - * @author 芋道源码 + * @author 闻荫源码 */ package com.win.framework.security; diff --git a/win-framework/win-spring-boot-starter-security/《芋道 Spring Boot 安全框架 Spring Security 入门》.md b/win-framework/win-spring-boot-starter-security/《芋道 Spring Boot 安全框架 Spring Security 入门》.md deleted file mode 100644 index e42ca540..00000000 --- a/win-framework/win-spring-boot-starter-security/《芋道 Spring Boot 安全框架 Spring Security 入门》.md +++ /dev/null @@ -1,2 +0,0 @@ -* 芋道 Spring Security 入门: -* Spring Security 基本概念: diff --git a/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/config/RedisTestConfiguration.java b/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/config/RedisTestConfiguration.java index 412765e5..b9fe3681 100644 --- a/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/config/RedisTestConfiguration.java +++ b/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/config/RedisTestConfiguration.java @@ -12,7 +12,7 @@ import java.io.IOException; /** * Redis 测试 Configuration,主要实现内嵌 Redis 的启动 * - * @author 芋道源码 + * @author 闻荫源码 */ @Configuration(proxyBeanMethods = false) @Lazy(false) // 禁止延迟加载 diff --git a/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/config/SqlInitializationTestConfiguration.java b/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/config/SqlInitializationTestConfiguration.java index eb40849f..67918e64 100644 --- a/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/config/SqlInitializationTestConfiguration.java +++ b/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/config/SqlInitializationTestConfiguration.java @@ -21,7 +21,7 @@ import javax.sql.DataSource; * 因为我们在单元测试会使用 spring.main.lazy-initialization 为 true,开启延迟加载。此时,会导致 DataSourceInitializationConfiguration 初始化 * 不过呢,当前类的实现代码,基本是复制 DataSourceInitializationConfiguration 的哈! * - * @author 芋道源码 + * @author 闻荫源码 */ @Configuration(proxyBeanMethods = false) @ConditionalOnMissingBean(AbstractScriptDatabaseInitializer.class) diff --git a/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/core/ut/BaseDbAndRedisUnitTest.java b/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/core/ut/BaseDbAndRedisUnitTest.java index da09c8da..5e60a9c7 100644 --- a/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/core/ut/BaseDbAndRedisUnitTest.java +++ b/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/core/ut/BaseDbAndRedisUnitTest.java @@ -20,7 +20,7 @@ import org.springframework.test.context.jdbc.Sql; * * 相比 {@link BaseDbUnitTest} 来说,额外增加了内存 Redis * - * @author 芋道源码 + * @author 闻荫源码 */ @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseDbAndRedisUnitTest.Application.class) @ActiveProfiles("unit-test") // 设置使用 application-unit-test 配置文件 diff --git a/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/core/ut/BaseDbUnitTest.java b/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/core/ut/BaseDbUnitTest.java index 70bbacb3..119322f2 100644 --- a/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/core/ut/BaseDbUnitTest.java +++ b/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/core/ut/BaseDbUnitTest.java @@ -18,7 +18,7 @@ import org.springframework.test.context.jdbc.Sql; * * 注意,Service 层同样适用。对于 Service 层的单元测试,我们针对自己模块的 Mapper 走的是 H2 内存数据库,针对别的模块的 Service 走的是 Mock 方法 * - * @author 芋道源码 + * @author 闻荫源码 */ @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseDbUnitTest.Application.class) @ActiveProfiles("unit-test") // 设置使用 application-unit-test 配置文件 diff --git a/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/core/ut/BaseMockitoUnitTest.java b/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/core/ut/BaseMockitoUnitTest.java index 73c9ce41..719dbf99 100644 --- a/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/core/ut/BaseMockitoUnitTest.java +++ b/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/core/ut/BaseMockitoUnitTest.java @@ -6,7 +6,7 @@ import org.mockito.junit.jupiter.MockitoExtension; /** * 纯 Mockito 的单元测试 * - * @author 芋道源码 + * @author 闻荫源码 */ @ExtendWith(MockitoExtension.class) public class BaseMockitoUnitTest { diff --git a/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/core/ut/BaseRedisUnitTest.java b/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/core/ut/BaseRedisUnitTest.java index ec589fd7..b09f82ef 100644 --- a/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/core/ut/BaseRedisUnitTest.java +++ b/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/core/ut/BaseRedisUnitTest.java @@ -13,7 +13,7 @@ import org.springframework.test.context.ActiveProfiles; * * 相比 {@link BaseDbUnitTest} 来说,从内存 DB 改成了内存 Redis * - * @author 芋道源码 + * @author 闻荫源码 */ @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseRedisUnitTest.Application.class) @ActiveProfiles("unit-test") // 设置使用 application-unit-test 配置文件 diff --git a/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/core/util/AssertUtils.java b/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/core/util/AssertUtils.java index 2520d436..224db435 100644 --- a/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/core/util/AssertUtils.java +++ b/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/core/util/AssertUtils.java @@ -17,7 +17,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; /** * 单元测试,assert 断言工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class AssertUtils { diff --git a/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/core/util/RandomUtils.java b/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/core/util/RandomUtils.java index e00e5689..9c0e1ff9 100644 --- a/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/core/util/RandomUtils.java +++ b/win-framework/win-spring-boot-starter-test/src/main/java/com/win/framework/test/core/util/RandomUtils.java @@ -24,7 +24,7 @@ import java.util.stream.Stream; /** * 随机工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class RandomUtils { diff --git a/win-framework/win-spring-boot-starter-test/《芋道 Spring Boot 单元测试 Test 入门》.md b/win-framework/win-spring-boot-starter-test/《芋道 Spring Boot 单元测试 Test 入门》.md deleted file mode 100644 index 0f191d7d..00000000 --- a/win-framework/win-spring-boot-starter-test/《芋道 Spring Boot 单元测试 Test 入门》.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/filter/ApiAccessLogFilter.java b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/filter/ApiAccessLogFilter.java index fdf9a637..936c626b 100644 --- a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/filter/ApiAccessLogFilter.java +++ b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/filter/ApiAccessLogFilter.java @@ -28,7 +28,7 @@ import static com.win.framework.common.util.json.JsonUtils.toJsonString; /** * API 访问日志 Filter * - * @author 芋道源码 + * @author 闻荫源码 */ @Slf4j public class ApiAccessLogFilter extends ApiRequestFilter { diff --git a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/service/ApiAccessLog.java b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/service/ApiAccessLog.java index e86ddc64..08c3a490 100644 --- a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/service/ApiAccessLog.java +++ b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/service/ApiAccessLog.java @@ -8,7 +8,7 @@ import java.time.LocalDateTime; /** * API 访问日志 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class ApiAccessLog { diff --git a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/service/ApiAccessLogFrameworkService.java b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/service/ApiAccessLogFrameworkService.java index 68368586..29418f9a 100644 --- a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/service/ApiAccessLogFrameworkService.java +++ b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/service/ApiAccessLogFrameworkService.java @@ -3,7 +3,7 @@ package com.win.framework.apilog.core.service; /** * API 访问日志 Framework Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface ApiAccessLogFrameworkService { diff --git a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/service/ApiAccessLogFrameworkServiceImpl.java b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/service/ApiAccessLogFrameworkServiceImpl.java index 8e52a234..61252de0 100644 --- a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/service/ApiAccessLogFrameworkServiceImpl.java +++ b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/service/ApiAccessLogFrameworkServiceImpl.java @@ -11,7 +11,7 @@ import org.springframework.scheduling.annotation.Async; * * 基于 {@link ApiAccessLogApi} 服务,记录访问日志 * - * @author 芋道源码 + * @author 闻荫源码 */ @RequiredArgsConstructor public class ApiAccessLogFrameworkServiceImpl implements ApiAccessLogFrameworkService { diff --git a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/service/ApiErrorLog.java b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/service/ApiErrorLog.java index 64c0a8d7..b2a24ff7 100644 --- a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/service/ApiErrorLog.java +++ b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/service/ApiErrorLog.java @@ -8,7 +8,7 @@ import java.time.LocalDateTime; /** * API 错误日志 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class ApiErrorLog { diff --git a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/service/ApiErrorLogFrameworkService.java b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/service/ApiErrorLogFrameworkService.java index 46319fa8..587b5951 100644 --- a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/service/ApiErrorLogFrameworkService.java +++ b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/service/ApiErrorLogFrameworkService.java @@ -3,7 +3,7 @@ package com.win.framework.apilog.core.service; /** * API 错误日志 Framework Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface ApiErrorLogFrameworkService { diff --git a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/service/ApiErrorLogFrameworkServiceImpl.java b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/service/ApiErrorLogFrameworkServiceImpl.java index e6cdaa39..a16cd733 100644 --- a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/service/ApiErrorLogFrameworkServiceImpl.java +++ b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/core/service/ApiErrorLogFrameworkServiceImpl.java @@ -11,7 +11,7 @@ import org.springframework.scheduling.annotation.Async; * * 基于 {@link ApiErrorLogApi} 服务,记录错误日志 * - * @author 芋道源码 + * @author 闻荫源码 */ @RequiredArgsConstructor public class ApiErrorLogFrameworkServiceImpl implements ApiErrorLogFrameworkService { diff --git a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/package-info.java b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/package-info.java index df97937e..4395aa9b 100644 --- a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/package-info.java +++ b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/apilog/package-info.java @@ -3,6 +3,6 @@ * 1. API 访问日志:记录用户访问 API 的访问日志,定期归档历史日志。 * 2. 异常日志:记录用户访问 API 的系统异常,方便日常排查问题与告警。 * - * @author 芋道源码 + * @author 闻荫源码 */ package com.win.framework.apilog; diff --git a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/swagger/config/SwaggerProperties.java b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/swagger/config/SwaggerProperties.java index c7366784..b4cc1f88 100644 --- a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/swagger/config/SwaggerProperties.java +++ b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/swagger/config/SwaggerProperties.java @@ -8,7 +8,7 @@ import javax.validation.constraints.NotEmpty; /** * Swagger 配置属性 * - * @author 芋道源码 + * @author 闻荫源码 */ @ConfigurationProperties("win.swagger") @Data diff --git a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/swagger/config/WinSwaggerAutoConfiguration.java b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/swagger/config/WinSwaggerAutoConfiguration.java index c1d5e0b7..76ca3281 100644 --- a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/swagger/config/WinSwaggerAutoConfiguration.java +++ b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/swagger/config/WinSwaggerAutoConfiguration.java @@ -35,7 +35,7 @@ import static com.win.framework.web.core.util.WebFrameworkUtils.HEADER_TENANT_ID * 1. Springdoc 文档地址:仓库 * 2. Swagger 规范,于 2015 更名为 OpenAPI 规范,本质是一个东西 * - * @author 芋道源码 + * @author 闻荫源码 */ @AutoConfiguration @ConditionalOnClass({OpenAPI.class}) diff --git a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/swagger/package-info.java b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/swagger/package-info.java index 8fafb3bf..315ab04c 100644 --- a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/swagger/package-info.java +++ b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/swagger/package-info.java @@ -1,6 +1,6 @@ /** * 基于 Swagger + Knife4j 实现 API 接口文档 * - * @author 芋道源码 + * @author 闻荫源码 */ package com.win.framework.swagger; diff --git a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/filter/ApiRequestFilter.java b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/filter/ApiRequestFilter.java index 79683aeb..2b8a676e 100644 --- a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/filter/ApiRequestFilter.java +++ b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/filter/ApiRequestFilter.java @@ -10,7 +10,7 @@ import javax.servlet.http.HttpServletRequest; /** * 过滤 /admin-api、/app-api 等 API 请求的过滤器 * - * @author 芋道源码 + * @author 闻荫源码 */ @RequiredArgsConstructor public abstract class ApiRequestFilter extends OncePerRequestFilter { diff --git a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/filter/CacheRequestBodyFilter.java b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/filter/CacheRequestBodyFilter.java index 42dc7d16..d4f247d3 100644 --- a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/filter/CacheRequestBodyFilter.java +++ b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/filter/CacheRequestBodyFilter.java @@ -12,7 +12,7 @@ import java.io.IOException; /** * Request Body 缓存 Filter,实现它的可重复读取 * - * @author 芋道源码 + * @author 闻荫源码 */ public class CacheRequestBodyFilter extends OncePerRequestFilter { diff --git a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/filter/CacheRequestBodyWrapper.java b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/filter/CacheRequestBodyWrapper.java index 1e56e889..857b16a1 100644 --- a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/filter/CacheRequestBodyWrapper.java +++ b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/filter/CacheRequestBodyWrapper.java @@ -14,7 +14,7 @@ import java.io.InputStreamReader; /** * Request Body 缓存 Wrapper * - * @author 芋道源码 + * @author 闻荫源码 */ public class CacheRequestBodyWrapper extends HttpServletRequestWrapper { diff --git a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/filter/DemoFilter.java b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/filter/DemoFilter.java index 456d05a7..1527f8a0 100644 --- a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/filter/DemoFilter.java +++ b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/filter/DemoFilter.java @@ -15,7 +15,7 @@ import static com.win.framework.common.exception.enums.GlobalErrorCodeConstants. /** * 演示 Filter,禁止用户发起写操作,避免影响测试数据 * - * @author 芋道源码 + * @author 闻荫源码 */ public class DemoFilter extends OncePerRequestFilter { diff --git a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/handler/GlobalExceptionHandler.java b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/handler/GlobalExceptionHandler.java index d8f72d45..8bdac41c 100644 --- a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/handler/GlobalExceptionHandler.java +++ b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/handler/GlobalExceptionHandler.java @@ -39,7 +39,7 @@ import static com.win.framework.common.exception.enums.GlobalErrorCodeConstants. /** * 全局异常处理器,将 Exception 翻译成 CommonResult + 对应的异常编号 * - * @author 芋道源码 + * @author 闻荫源码 */ @RestControllerAdvice @AllArgsConstructor diff --git a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/util/WebFrameworkUtils.java b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/util/WebFrameworkUtils.java index 00e4e082..32edfc1b 100644 --- a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/util/WebFrameworkUtils.java +++ b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/util/WebFrameworkUtils.java @@ -14,7 +14,7 @@ import javax.servlet.http.HttpServletRequest; /** * 专属于 web 包的工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class WebFrameworkUtils { diff --git a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/xss/config/XssProperties.java b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/xss/config/XssProperties.java index 0ef3ad49..4e3100aa 100644 --- a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/xss/config/XssProperties.java +++ b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/xss/config/XssProperties.java @@ -10,7 +10,7 @@ import java.util.List; /** * Xss 配置属性 * - * @author 芋道源码 + * @author 闻荫源码 */ @ConfigurationProperties(prefix = "win.xss") @Validated diff --git a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/xss/core/filter/XssFilter.java b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/xss/core/filter/XssFilter.java index a6bb2bd4..65d5e7b3 100644 --- a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/xss/core/filter/XssFilter.java +++ b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/xss/core/filter/XssFilter.java @@ -15,7 +15,7 @@ import java.io.IOException; /** * Xss 过滤器 * - * @author 芋道源码 + * @author 闻荫源码 */ @AllArgsConstructor public class XssFilter extends OncePerRequestFilter { diff --git a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/xss/core/filter/XssRequestWrapper.java b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/xss/core/filter/XssRequestWrapper.java index 8c23b5f8..7a6781ef 100644 --- a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/xss/core/filter/XssRequestWrapper.java +++ b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/xss/core/filter/XssRequestWrapper.java @@ -10,7 +10,7 @@ import java.util.Map; /** * Xss 请求 Wrapper * - * @author 芋道源码 + * @author 闻荫源码 */ public class XssRequestWrapper extends HttpServletRequestWrapper { diff --git a/win-framework/win-spring-boot-starter-web/《芋道 Spring Boot API 接口文档 Swagger 入门》.md b/win-framework/win-spring-boot-starter-web/《芋道 Spring Boot API 接口文档 Swagger 入门》.md deleted file mode 100644 index f5f32c60..00000000 --- a/win-framework/win-spring-boot-starter-web/《芋道 Spring Boot API 接口文档 Swagger 入门》.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/win-framework/win-spring-boot-starter-web/《芋道 Spring Boot SpringMVC 入门》.md b/win-framework/win-spring-boot-starter-web/《芋道 Spring Boot SpringMVC 入门》.md deleted file mode 100644 index 0d6c7daf..00000000 --- a/win-framework/win-spring-boot-starter-web/《芋道 Spring Boot SpringMVC 入门》.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/api/task/BpmProcessInstanceApi.java b/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/api/task/BpmProcessInstanceApi.java index 72c243cb..89c4db43 100644 --- a/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/api/task/BpmProcessInstanceApi.java +++ b/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/api/task/BpmProcessInstanceApi.java @@ -7,7 +7,7 @@ import javax.validation.Valid; /** * 流程实例 Api 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface BpmProcessInstanceApi { diff --git a/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/api/task/dto/BpmProcessInstanceCreateReqDTO.java b/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/api/task/dto/BpmProcessInstanceCreateReqDTO.java index f9bb0f10..8d0c2044 100644 --- a/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/api/task/dto/BpmProcessInstanceCreateReqDTO.java +++ b/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/api/task/dto/BpmProcessInstanceCreateReqDTO.java @@ -8,7 +8,7 @@ import java.util.Map; /** * 流程实例的创建 Request DTO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class BpmProcessInstanceCreateReqDTO { diff --git a/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/DictTypeConstants.java b/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/DictTypeConstants.java index 78915acf..e7178a88 100644 --- a/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/DictTypeConstants.java +++ b/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/DictTypeConstants.java @@ -3,7 +3,7 @@ package com.win.module.bpm.enums; /** * BPM 字典类型的枚举类 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface DictTypeConstants { diff --git a/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/definition/BpmModelFormTypeEnum.java b/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/definition/BpmModelFormTypeEnum.java index d69ab8f1..55ec36ba 100644 --- a/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/definition/BpmModelFormTypeEnum.java +++ b/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/definition/BpmModelFormTypeEnum.java @@ -6,7 +6,7 @@ import lombok.Getter; /** * BPM 模型的表单类型的枚举 * - * @author 芋道源码 + * @author 闻荫源码 */ @Getter @AllArgsConstructor diff --git a/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/definition/BpmTaskAssignRuleTypeEnum.java b/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/definition/BpmTaskAssignRuleTypeEnum.java index af97f0b7..cfd935e6 100644 --- a/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/definition/BpmTaskAssignRuleTypeEnum.java +++ b/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/definition/BpmTaskAssignRuleTypeEnum.java @@ -6,7 +6,7 @@ import lombok.Getter; /** * BPM 任务分配规则的类型枚举 * - * @author 芋道源码 + * @author 闻荫源码 */ @Getter @AllArgsConstructor diff --git a/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/definition/BpmTaskRuleScriptEnum.java b/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/definition/BpmTaskRuleScriptEnum.java index cb78aa8e..2afcaca2 100644 --- a/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/definition/BpmTaskRuleScriptEnum.java +++ b/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/definition/BpmTaskRuleScriptEnum.java @@ -7,7 +7,7 @@ import lombok.Getter; * BPM 任务规则的脚本枚举 * 目前暂时通过 TODO 芋艿:硬编码,未来可以考虑 Groovy 动态脚本的方式 * - * @author 芋道源码 + * @author 闻荫源码 */ @Getter @AllArgsConstructor diff --git a/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/message/BpmMessageEnum.java b/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/message/BpmMessageEnum.java index c88b84b4..35256dce 100644 --- a/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/message/BpmMessageEnum.java +++ b/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/message/BpmMessageEnum.java @@ -6,7 +6,7 @@ import lombok.Getter; /** * Bpm 消息的枚举 * - * @author 芋道源码 + * @author 闻荫源码 */ @AllArgsConstructor @Getter diff --git a/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/task/BpmProcessInstanceDeleteReasonEnum.java b/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/task/BpmProcessInstanceDeleteReasonEnum.java index b4f3783a..b76568fb 100644 --- a/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/task/BpmProcessInstanceDeleteReasonEnum.java +++ b/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/task/BpmProcessInstanceDeleteReasonEnum.java @@ -7,7 +7,7 @@ import lombok.Getter; /** * 流程实例的删除原因 * - * @author 芋道源码 + * @author 闻荫源码 */ @Getter @AllArgsConstructor diff --git a/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/task/BpmProcessInstanceStatusEnum.java b/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/task/BpmProcessInstanceStatusEnum.java index 9e03e538..6196a37e 100644 --- a/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/task/BpmProcessInstanceStatusEnum.java +++ b/win-module-bpm/win-module-bpm-api/src/main/java/com/win/module/bpm/enums/task/BpmProcessInstanceStatusEnum.java @@ -6,7 +6,7 @@ import lombok.Getter; /** * 流程实例的状态 * - * @author 芋道源码 + * @author 闻荫源码 */ @Getter @AllArgsConstructor diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/api/task/BpmProcessInstanceApiImpl.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/api/task/BpmProcessInstanceApiImpl.java index 2787484e..dd7d78cb 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/api/task/BpmProcessInstanceApiImpl.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/api/task/BpmProcessInstanceApiImpl.java @@ -11,7 +11,7 @@ import javax.validation.Valid; /** * Flowable 流程实例 Api 实现类 * - * @author 芋道源码 + * @author 闻荫源码 * @author jason */ @Service diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/form/BpmFormBaseVO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/form/BpmFormBaseVO.java index b6103f60..84ddce24 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/form/BpmFormBaseVO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/form/BpmFormBaseVO.java @@ -10,7 +10,7 @@ import javax.validation.constraints.*; @Data public class BpmFormBaseVO { - @Schema(description = "表单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "表单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") @NotNull(message = "表单名称不能为空") private String name; diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/form/BpmFormPageReqVO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/form/BpmFormPageReqVO.java index 140ca4d2..a8e2ba10 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/form/BpmFormPageReqVO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/form/BpmFormPageReqVO.java @@ -12,7 +12,7 @@ import lombok.ToString; @ToString(callSuper = true) public class BpmFormPageReqVO extends PageParam { - @Schema(description = "表单名称", example = "芋道") + @Schema(description = "表单名称", example = "闻荫") private String name; } diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/form/BpmFormSimpleRespVO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/form/BpmFormSimpleRespVO.java index 6fc86912..df70fe8b 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/form/BpmFormSimpleRespVO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/form/BpmFormSimpleRespVO.java @@ -10,7 +10,7 @@ public class BpmFormSimpleRespVO { @Schema(description = "表单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Long id; - @Schema(description = "表单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "表单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") private String name; } diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/group/BpmUserGroupBaseVO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/group/BpmUserGroupBaseVO.java index 56370e70..2e4287fc 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/group/BpmUserGroupBaseVO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/group/BpmUserGroupBaseVO.java @@ -13,11 +13,11 @@ import java.util.Set; @Data public class BpmUserGroupBaseVO { - @Schema(description = "组名", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "组名", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") @NotNull(message = "组名不能为空") private String name; - @Schema(description = "描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道源码") + @Schema(description = "描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫源码") @NotNull(message = "描述不能为空") private String description; diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/group/BpmUserGroupPageReqVO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/group/BpmUserGroupPageReqVO.java index 28ff9f7c..b46b4ce6 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/group/BpmUserGroupPageReqVO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/group/BpmUserGroupPageReqVO.java @@ -16,7 +16,7 @@ import java.time.LocalDateTime; @ToString(callSuper = true) public class BpmUserGroupPageReqVO extends PageParam { - @Schema(description = "组名", example = "芋道") + @Schema(description = "组名", example = "闻荫") private String name; @Schema(description = "状态", example = "1") diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/group/BpmUserGroupSimpleRespVO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/group/BpmUserGroupSimpleRespVO.java index 6acf5637..94c45e57 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/group/BpmUserGroupSimpleRespVO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/group/BpmUserGroupSimpleRespVO.java @@ -14,7 +14,7 @@ public class BpmUserGroupSimpleRespVO { @Schema(description = "用户组编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Long id; - @Schema(description = "用户组名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "用户组名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") private String name; } diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/model/BpmModelBaseVO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/model/BpmModelBaseVO.java index a73a462a..70bc51d8 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/model/BpmModelBaseVO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/model/BpmModelBaseVO.java @@ -15,7 +15,7 @@ public class BpmModelBaseVO { @NotEmpty(message = "流程标识不能为空") private String key; - @Schema(description = "流程名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "流程名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") @NotEmpty(message = "流程名称不能为空") private String name; diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/model/BpmModelCreateReqVO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/model/BpmModelCreateReqVO.java index 5bd96982..9b29d5dd 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/model/BpmModelCreateReqVO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/model/BpmModelCreateReqVO.java @@ -15,7 +15,7 @@ public class BpmModelCreateReqVO { @NotEmpty(message = "流程标识不能为空") private String key; - @Schema(description = "流程名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "流程名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") @NotEmpty(message = "流程名称不能为空") private String name; diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/model/BpmModelPageReqVO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/model/BpmModelPageReqVO.java index 489208a1..87a6fd83 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/model/BpmModelPageReqVO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/model/BpmModelPageReqVO.java @@ -16,7 +16,7 @@ public class BpmModelPageReqVO extends PageParam { @Schema(description = "标识-精准匹配", example = "process1641042089407") private String key; - @Schema(description = "名字-模糊匹配", example = "芋道") + @Schema(description = "名字-模糊匹配", example = "闻荫") private String name; @Schema(description = "流程分类-参见 bpm_model_category 数据字典", example = "1") diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/model/BpmModelUpdateReqVO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/model/BpmModelUpdateReqVO.java index 2bbe9a44..48009b9f 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/model/BpmModelUpdateReqVO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/model/BpmModelUpdateReqVO.java @@ -13,7 +13,7 @@ public class BpmModelUpdateReqVO { @NotEmpty(message = "编号不能为空") private String id; - @Schema(description = "流程名称", example = "芋道") + @Schema(description = "流程名称", example = "闻荫") private String name; @Schema(description = "流程描述", example = "我是描述") diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/process/BpmProcessDefinitionRespVO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/process/BpmProcessDefinitionRespVO.java index c3fe350c..168e5783 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/process/BpmProcessDefinitionRespVO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/process/BpmProcessDefinitionRespVO.java @@ -16,7 +16,7 @@ public class BpmProcessDefinitionRespVO { @Schema(description = "版本", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") private Integer version; - @Schema(description = "流程名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "流程名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") @NotEmpty(message = "流程名称不能为空") private String name; diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/rule/BpmTaskAssignRuleRespVO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/rule/BpmTaskAssignRuleRespVO.java index 8ca76cfb..a41116c4 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/rule/BpmTaskAssignRuleRespVO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/definition/vo/rule/BpmTaskAssignRuleRespVO.java @@ -22,7 +22,7 @@ public class BpmTaskAssignRuleRespVO extends BpmTaskAssignRuleBaseVO { @Schema(description = "流程任务定义的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048") private String taskDefinitionKey; - @Schema(description = "流程任务定义的名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "关注芋道") + @Schema(description = "流程任务定义的名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "关注闻荫") private String taskDefinitionName; } diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/oa/BpmOALeaveController.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/oa/BpmOALeaveController.java index aa28c49e..43a17a74 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/oa/BpmOALeaveController.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/oa/BpmOALeaveController.java @@ -25,7 +25,7 @@ import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLog * OA 请假申请 Controller,用于演示自己存储数据,接入工作流的例子 * * @author jason - * @author 芋道源码 + * @author 闻荫源码 */ @Tag(name = "管理后台 - OA 请假申请") @RestController diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/oa/vo/BpmOALeaveBaseVO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/oa/vo/BpmOALeaveBaseVO.java index 671f6ddb..43dca5e1 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/oa/vo/BpmOALeaveBaseVO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/oa/vo/BpmOALeaveBaseVO.java @@ -27,7 +27,7 @@ public class BpmOALeaveBaseVO { @Schema(description = "请假类型-参见 bpm_oa_type 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") private Integer type; - @Schema(description = "原因", requiredMode = Schema.RequiredMode.REQUIRED, example = "阅读芋道源码") + @Schema(description = "原因", requiredMode = Schema.RequiredMode.REQUIRED, example = "阅读闻荫源码") private String reason; } diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/oa/vo/BpmOALeavePageReqVO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/oa/vo/BpmOALeavePageReqVO.java index b0933b71..f0350f81 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/oa/vo/BpmOALeavePageReqVO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/oa/vo/BpmOALeavePageReqVO.java @@ -19,7 +19,7 @@ public class BpmOALeavePageReqVO extends PageParam { @Schema(description = "请假类型-参见 bpm_oa_type", example = "1") private Integer type; - @Schema(description = "原因-模糊匹配", example = "阅读芋道源码") + @Schema(description = "原因-模糊匹配", example = "阅读闻荫源码") private String reason; @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceMyPageReqVO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceMyPageReqVO.java index d1102fd4..0462a784 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceMyPageReqVO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceMyPageReqVO.java @@ -17,7 +17,7 @@ import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY @ToString(callSuper = true) public class BpmProcessInstanceMyPageReqVO extends PageParam { - @Schema(description = "流程名称", example = "芋道") + @Schema(description = "流程名称", example = "闻荫") private String name; @Schema(description = "流程定义的编号", example = "2048") diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/task/vo/instance/BpmProcessInstancePageItemRespVO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/task/vo/instance/BpmProcessInstancePageItemRespVO.java index ca75ecb8..dccb2286 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/task/vo/instance/BpmProcessInstancePageItemRespVO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/task/vo/instance/BpmProcessInstancePageItemRespVO.java @@ -13,7 +13,7 @@ public class BpmProcessInstancePageItemRespVO { @Schema(description = "流程实例的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private String id; - @Schema(description = "流程名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "流程名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") private String name; @Schema(description = "流程定义的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048") @@ -46,7 +46,7 @@ public class BpmProcessInstancePageItemRespVO { @Schema(description = "流程任务的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private String id; - @Schema(description = "任务名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "任务名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") private String name; } diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceRespVO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceRespVO.java index bf5ad5e9..58d6c4cd 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceRespVO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceRespVO.java @@ -14,7 +14,7 @@ public class BpmProcessInstanceRespVO { @Schema(description = "流程实例的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private String id; - @Schema(description = "流程名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "流程名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") private String name; @Schema(description = "流程分类-参见 bpm_model_category 数据字典", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/task/vo/task/BpmTaskDonePageReqVO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/task/vo/task/BpmTaskDonePageReqVO.java index f23d62aa..3b01d0e3 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/task/vo/task/BpmTaskDonePageReqVO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/task/vo/task/BpmTaskDonePageReqVO.java @@ -17,7 +17,7 @@ import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY @ToString(callSuper = true) public class BpmTaskDonePageReqVO extends PageParam { - @Schema(description = "流程任务名", example = "芋道") + @Schema(description = "流程任务名", example = "闻荫") private String name; @Schema(description = "开始的创建收间") diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/task/vo/task/BpmTaskTodoPageItemRespVO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/task/vo/task/BpmTaskTodoPageItemRespVO.java index 1e1b11b7..df0d92f6 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/task/vo/task/BpmTaskTodoPageItemRespVO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/task/vo/task/BpmTaskTodoPageItemRespVO.java @@ -12,7 +12,7 @@ public class BpmTaskTodoPageItemRespVO { @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private String id; - @Schema(description = "任务名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "任务名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") private String name; @Schema(description = "接收时间", requiredMode = Schema.RequiredMode.REQUIRED) @@ -36,7 +36,7 @@ public class BpmTaskTodoPageItemRespVO { @Schema(description = "流程实例编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private String id; - @Schema(description = "流程实例名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "流程实例名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") private String name; @Schema(description = "发起人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/task/vo/task/BpmTaskTodoPageReqVO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/task/vo/task/BpmTaskTodoPageReqVO.java index 2382c7c9..84d34862 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/task/vo/task/BpmTaskTodoPageReqVO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/controller/admin/task/vo/task/BpmTaskTodoPageReqVO.java @@ -18,7 +18,7 @@ import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY @ToString(callSuper = true) public class BpmTaskTodoPageReqVO extends PageParam { - @Schema(description = "流程任务名", example = "芋道") + @Schema(description = "流程任务名", example = "闻荫") private String name; @Schema(description = "创建时间") diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/convert/definition/BpmUserGroupConvert.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/convert/definition/BpmUserGroupConvert.java index ff595963..68b78c9a 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/convert/definition/BpmUserGroupConvert.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/convert/definition/BpmUserGroupConvert.java @@ -15,7 +15,7 @@ import org.mapstruct.factory.Mappers; /** * 用户组 Convert * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper public interface BpmUserGroupConvert { diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/convert/task/BpmActivityConvert.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/convert/task/BpmActivityConvert.java index 2a672166..5d3a160b 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/convert/task/BpmActivityConvert.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/convert/task/BpmActivityConvert.java @@ -13,7 +13,7 @@ import java.util.List; /** * BPM 活动 Convert * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper(uses = DateUtils.class) public interface BpmActivityConvert { diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/convert/task/BpmProcessInstanceConvert.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/convert/task/BpmProcessInstanceConvert.java index b0c2e87e..3c2298db 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/convert/task/BpmProcessInstanceConvert.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/convert/task/BpmProcessInstanceConvert.java @@ -27,7 +27,7 @@ import java.util.Map; /** * 流程实例 Convert * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper(uses = DateUtils.class) public interface BpmProcessInstanceConvert { diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/convert/task/BpmTaskConvert.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/convert/task/BpmTaskConvert.java index ee938ed0..494423e6 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/convert/task/BpmTaskConvert.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/convert/task/BpmTaskConvert.java @@ -25,7 +25,7 @@ import java.util.Map; /** * Bpm 任务 Convert * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper(uses = DateUtils.class) public interface BpmTaskConvert { diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/definition/BpmFormDO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/definition/BpmFormDO.java index 7ba51d69..2d9ed89e 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/definition/BpmFormDO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/definition/BpmFormDO.java @@ -13,7 +13,7 @@ import java.util.List; * 工作流的表单定义 * 用于工作流的申请表单,需要动态配置的场景 * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName(value = "bpm_form", autoResultMap = true) @Data diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/definition/BpmProcessDefinitionExtDO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/definition/BpmProcessDefinitionExtDO.java index 68ac8dc8..c3608ab2 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/definition/BpmProcessDefinitionExtDO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/definition/BpmProcessDefinitionExtDO.java @@ -14,7 +14,7 @@ import java.util.List; * Bpm 流程定义的拓展表 * 主要解决 Activiti {@link ProcessDefinition} 不支持拓展字段,所以新建拓展表 * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName(value = "bpm_process_definition_ext", autoResultMap = true) @Data diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/definition/BpmTaskAssignRuleDO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/definition/BpmTaskAssignRuleDO.java index 80fcf223..ac782b33 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/definition/BpmTaskAssignRuleDO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/definition/BpmTaskAssignRuleDO.java @@ -18,7 +18,7 @@ import java.util.Set; * 1. 默认情况下,{@link #processDefinitionId} 为 {@link #PROCESS_DEFINITION_ID_NULL} 值,表示贵改则与流程模型关联 * 2. 在流程模型部署后,会将他的所有规则记录,复制出一份新部署出来的流程定义,通过设置 {@link #processDefinitionId} 为新的流程定义的编号进行关联 * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName(value = "bpm_task_assign_rule", autoResultMap = true) @Data diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/definition/BpmUserGroupDO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/definition/BpmUserGroupDO.java index 340872b4..387559bc 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/definition/BpmUserGroupDO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/definition/BpmUserGroupDO.java @@ -13,7 +13,7 @@ import java.util.Set; /** * Bpm 用户组 * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName(value = "bpm_user_group", autoResultMap = true) @Data diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/oa/BpmOALeaveDO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/oa/BpmOALeaveDO.java index a2138df4..66be9ca2 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/oa/BpmOALeaveDO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/oa/BpmOALeaveDO.java @@ -12,7 +12,7 @@ import com.win.framework.mybatis.core.dataobject.BaseDO; * {@link #day} 请假天数,目前先简单做。一般是分成请假上午和下午,可以是 1 整天,可以是 0.5 半天 * * @author jason - * @author 芋道源码 + * @author 闻荫源码 */ @TableName("bpm_oa_leave") @Data diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/task/BpmProcessInstanceExtDO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/task/BpmProcessInstanceExtDO.java index 1cae27a0..fd107fa1 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/task/BpmProcessInstanceExtDO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/task/BpmProcessInstanceExtDO.java @@ -18,7 +18,7 @@ import java.util.Map; * Bpm 流程实例的拓展表 * 主要解决 Activiti ProcessInstance 和 HistoricProcessInstance 不支持拓展字段,所以新建拓展表 * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName(value = "bpm_process_instance_ext", autoResultMap = true) @Data diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/task/BpmTaskExtDO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/task/BpmTaskExtDO.java index 93327875..2edc5173 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/task/BpmTaskExtDO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/dataobject/task/BpmTaskExtDO.java @@ -14,7 +14,7 @@ import java.time.LocalDateTime; * Bpm 流程任务的拓展表 * 主要解决 Flowable Task 和 HistoricTaskInstance 不支持拓展字段,所以新建拓展表 * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName(value = "bpm_task_ext", autoResultMap = true) @Data diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/mysql/definition/BpmUserGroupMapper.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/mysql/definition/BpmUserGroupMapper.java index 85375e64..87abe7ce 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/mysql/definition/BpmUserGroupMapper.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/mysql/definition/BpmUserGroupMapper.java @@ -12,7 +12,7 @@ import java.util.List; /** * 用户组 Mapper * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper public interface BpmUserGroupMapper extends BaseMapperX { diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/mysql/oa/BpmOALeaveMapper.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/mysql/oa/BpmOALeaveMapper.java index 310a0494..3e37cc54 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/mysql/oa/BpmOALeaveMapper.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/dal/mysql/oa/BpmOALeaveMapper.java @@ -11,7 +11,7 @@ import org.apache.ibatis.annotations.Mapper; * 请假申请 Mapper * * @author jason - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper public interface BpmOALeaveMapper extends BaseMapperX { diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/bpm/core/event/BpmProcessInstanceResultEvent.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/bpm/core/event/BpmProcessInstanceResultEvent.java index 4d182f32..d91ca5ef 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/bpm/core/event/BpmProcessInstanceResultEvent.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/bpm/core/event/BpmProcessInstanceResultEvent.java @@ -10,7 +10,7 @@ import javax.validation.constraints.NotNull; * 流程实例的结果发生变化的 Event * 定位:由于额外增加了 {@link BpmProcessInstanceExtDO#getResult()} 结果,所以增加该事件 * - * @author 芋道源码 + * @author 闻荫源码 */ @SuppressWarnings("ALL") @Data diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/bpm/core/event/BpmProcessInstanceResultEventListener.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/bpm/core/event/BpmProcessInstanceResultEventListener.java index 9b0cfc5d..6a8bfe38 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/bpm/core/event/BpmProcessInstanceResultEventListener.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/bpm/core/event/BpmProcessInstanceResultEventListener.java @@ -6,7 +6,7 @@ import org.springframework.context.ApplicationListener; /** * {@link BpmProcessInstanceResultEvent} 的监听器 * - * @author 芋道源码 + * @author 闻荫源码 */ public abstract class BpmProcessInstanceResultEventListener implements ApplicationListener { diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/bpm/core/event/BpmProcessInstanceResultEventPublisher.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/bpm/core/event/BpmProcessInstanceResultEventPublisher.java index 3f338388..c0758f56 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/bpm/core/event/BpmProcessInstanceResultEventPublisher.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/bpm/core/event/BpmProcessInstanceResultEventPublisher.java @@ -9,7 +9,7 @@ import javax.validation.Valid; /** * {@link BpmProcessInstanceResultEvent} 的生产者 * - * @author 芋道源码 + * @author 闻荫源码 */ @AllArgsConstructor @Validated diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/bpm/core/event/package-info.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/bpm/core/event/package-info.java index a62e523e..c6f06a55 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/bpm/core/event/package-info.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/bpm/core/event/package-info.java @@ -1,6 +1,6 @@ /** * 自定义 Event 实现,提供方便业务接入的 Listener! * - * @author 芋道源码 + * @author 闻荫源码 */ package com.win.module.bpm.framework.bpm.core.event; diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/bpm/package-info.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/bpm/package-info.java index 85a79291..42b13db2 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/bpm/package-info.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/bpm/package-info.java @@ -1,6 +1,6 @@ /** * 提供给 Activiti 和 Flowable 的通用封装 * - * @author 芋道源码 + * @author 闻荫源码 */ package com.win.module.bpm.framework.bpm; diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/BpmActivityBehaviorFactory.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/BpmActivityBehaviorFactory.java index e52b93ab..be1d4bbf 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/BpmActivityBehaviorFactory.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/BpmActivityBehaviorFactory.java @@ -16,7 +16,7 @@ import org.flowable.engine.impl.bpmn.parser.factory.DefaultActivityBehaviorFacto * 自定义的 ActivityBehaviorFactory 实现类,目的如下: * 1. 自定义 {@link #createUserTaskActivityBehavior(UserTask)}:实现自定义的流程任务的 assignee 负责人的分配 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data @EqualsAndHashCode(callSuper = true) diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/BpmUserTaskActivityBehavior.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/BpmUserTaskActivityBehavior.java index db9b086a..be715e69 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/BpmUserTaskActivityBehavior.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/BpmUserTaskActivityBehavior.java @@ -23,7 +23,7 @@ import java.util.Set; * 第一步,基于分配规则,计算出分配任务的【单个】候选人。如果找不到,则直接报业务异常,不继续执行后续的流程; * 第二步,随机选择一个候选人,则选择作为 assignee 负责人。 * - * @author 芋道源码 + * @author 闻荫源码 */ @Slf4j public class BpmUserTaskActivityBehavior extends UserTaskActivityBehavior { diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/script/BpmTaskAssignScript.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/script/BpmTaskAssignScript.java index f568946e..a913dcbd 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/script/BpmTaskAssignScript.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/script/BpmTaskAssignScript.java @@ -12,7 +12,7 @@ import java.util.Set; * 2. 设置审批人为发起人的 Leader * 3. 甚至审批人为发起人的 Leader 的 Leader * - * @author 芋道源码 + * @author 闻荫源码 */ public interface BpmTaskAssignScript { diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskAssignLeaderAbstractScript.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskAssignLeaderAbstractScript.java index 4ea74989..eda636db 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskAssignLeaderAbstractScript.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskAssignLeaderAbstractScript.java @@ -22,7 +22,7 @@ import static java.util.Collections.emptySet; * 分配给发起人的 Leader 审批的 Script 实现类 * 目前 Leader 的定义是, * - * @author 芋道源码 + * @author 闻荫源码 */ public abstract class BpmTaskAssignLeaderAbstractScript implements BpmTaskAssignScript { diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskAssignLeaderX1Script.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskAssignLeaderX1Script.java index 95d02e2e..44b8f021 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskAssignLeaderX1Script.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskAssignLeaderX1Script.java @@ -9,7 +9,7 @@ import java.util.Set; /** * 分配给发起人的一级 Leader 审批的 Script 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Component public class BpmTaskAssignLeaderX1Script extends BpmTaskAssignLeaderAbstractScript { diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskAssignLeaderX2Script.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskAssignLeaderX2Script.java index 5b2a8845..233ba998 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskAssignLeaderX2Script.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskAssignLeaderX2Script.java @@ -9,7 +9,7 @@ import java.util.Set; /** * 分配给发起人的二级 Leader 审批的 Script 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Component public class BpmTaskAssignLeaderX2Script extends BpmTaskAssignLeaderAbstractScript { diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskAssignStartUserScript.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskAssignStartUserScript.java index fdea6f9a..100647e0 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskAssignStartUserScript.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskAssignStartUserScript.java @@ -16,7 +16,7 @@ import java.util.Set; /** * 分配给发起人审批的 Script 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Component public class BpmTaskAssignStartUserScript implements BpmTaskAssignScript { diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/package-info.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/package-info.java index ad7f9d2d..aebcc55f 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/package-info.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/package-info.java @@ -1,6 +1,6 @@ /** * 属于 bpm 模块的 framework 封装 * - * @author 芋道源码 + * @author 闻荫源码 */ package com.win.module.bpm.framework; diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/web/config/BpmWebConfiguration.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/web/config/BpmWebConfiguration.java index f4ebdf82..fefbccd8 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/web/config/BpmWebConfiguration.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/framework/web/config/BpmWebConfiguration.java @@ -8,7 +8,7 @@ import org.springframework.context.annotation.Configuration; /** * bpm 模块的 web 组件的 Configuration * - * @author 芋道源码 + * @author 闻荫源码 */ @Configuration(proxyBeanMethods = false) public class BpmWebConfiguration { diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/BpmModelServiceImpl.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/BpmModelServiceImpl.java index c8ca4eca..537007a1 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/BpmModelServiceImpl.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/BpmModelServiceImpl.java @@ -41,7 +41,7 @@ import static com.win.module.bpm.enums.ErrorCodeConstants.*; * 主要进行 Flowable {@link Model} 的维护 * * @author yunlongn - * @author 芋道源码 + * @author 闻荫源码 * @author jason */ @Service diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/BpmProcessDefinitionService.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/BpmProcessDefinitionService.java index 2f5ec22a..456e0238 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/BpmProcessDefinitionService.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/BpmProcessDefinitionService.java @@ -21,7 +21,7 @@ import java.util.Set; * * @author yunlong.li * @author ZJQ - * @author 芋道源码 + * @author 闻荫源码 */ public interface BpmProcessDefinitionService { diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/BpmProcessDefinitionServiceImpl.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/BpmProcessDefinitionServiceImpl.java index ae1c26ca..e4691bd9 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/BpmProcessDefinitionServiceImpl.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/BpmProcessDefinitionServiceImpl.java @@ -44,7 +44,7 @@ import static java.util.Collections.emptyList; * * @author yunlongn * @author ZJQ - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/BpmTaskAssignRuleService.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/BpmTaskAssignRuleService.java index 4121026c..acbda944 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/BpmTaskAssignRuleService.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/BpmTaskAssignRuleService.java @@ -14,7 +14,7 @@ import java.util.Set; /** * BPM 任务分配规则 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface BpmTaskAssignRuleService { diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/BpmUserGroupService.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/BpmUserGroupService.java index 18938686..dbeee34e 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/BpmUserGroupService.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/BpmUserGroupService.java @@ -12,7 +12,7 @@ import com.win.framework.common.pojo.PageResult; /** * 用户组 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface BpmUserGroupService { diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/BpmUserGroupServiceImpl.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/BpmUserGroupServiceImpl.java index c227c2a5..878d2bf8 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/BpmUserGroupServiceImpl.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/BpmUserGroupServiceImpl.java @@ -26,7 +26,7 @@ import static com.win.module.bpm.enums.ErrorCodeConstants.*; /** * 用户组 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/dto/BpmFormFieldRespDTO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/dto/BpmFormFieldRespDTO.java index 107652b1..ac3b2a7f 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/dto/BpmFormFieldRespDTO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/dto/BpmFormFieldRespDTO.java @@ -7,7 +7,7 @@ import lombok.Data; * Bpm 表单的 Field 表单项 Response DTO * 字段的定义,可见 https://github.com/JakHuang/form-generator/issues/46 文档 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class BpmFormFieldRespDTO { diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/dto/BpmModelMetaInfoRespDTO.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/dto/BpmModelMetaInfoRespDTO.java index 450d777c..b6f30456 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/dto/BpmModelMetaInfoRespDTO.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/definition/dto/BpmModelMetaInfoRespDTO.java @@ -7,7 +7,7 @@ import lombok.Data; * BPM 流程 MetaInfo Response DTO * 主要用于 { Model#setMetaInfo(String)} 的存储 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class BpmModelMetaInfoRespDTO { diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/message/BpmMessageService.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/message/BpmMessageService.java index b2056692..46db9291 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/message/BpmMessageService.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/message/BpmMessageService.java @@ -11,7 +11,7 @@ import javax.validation.Valid; * * TODO 芋艿:未来支持消息的可配置;不同的流程,在什么场景下,需要发送什么消息,消息的内容是什么; * - * @author 芋道源码 + * @author 闻荫源码 */ public interface BpmMessageService { diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/message/BpmMessageServiceImpl.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/message/BpmMessageServiceImpl.java index 452b86ac..70a5e0e0 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/message/BpmMessageServiceImpl.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/message/BpmMessageServiceImpl.java @@ -18,7 +18,7 @@ import java.util.Map; /** * BPM 消息 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/oa/BpmOALeaveService.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/oa/BpmOALeaveService.java index 482c50e9..a9eee41c 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/oa/BpmOALeaveService.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/oa/BpmOALeaveService.java @@ -12,7 +12,7 @@ import javax.validation.Valid; * 请假申请 Service 接口 * * @author jason - * @author 芋道源码 + * @author 闻荫源码 */ public interface BpmOALeaveService { diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/oa/BpmOALeaveServiceImpl.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/oa/BpmOALeaveServiceImpl.java index 4fbfd8f6..8dbfbd37 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/oa/BpmOALeaveServiceImpl.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/oa/BpmOALeaveServiceImpl.java @@ -25,7 +25,7 @@ import static com.win.module.bpm.enums.ErrorCodeConstants.OA_LEAVE_NOT_EXISTS; * OA 请假申请 Service 实现类 * * @author jason - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/oa/listener/BpmOALeaveResultListener.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/oa/listener/BpmOALeaveResultListener.java index 783d7370..008ac52b 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/oa/listener/BpmOALeaveResultListener.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/oa/listener/BpmOALeaveResultListener.java @@ -11,7 +11,7 @@ import javax.annotation.Resource; /** * OA 请假单的结果的监听器实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Component public class BpmOALeaveResultListener extends BpmProcessInstanceResultEventListener { diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/task/BpmActivityService.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/task/BpmActivityService.java index ad35d87d..8ee8cbea 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/task/BpmActivityService.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/task/BpmActivityService.java @@ -8,7 +8,7 @@ import java.util.List; /** * BPM 活动实例 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface BpmActivityService { diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/task/BpmActivityServiceImpl.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/task/BpmActivityServiceImpl.java index 5b61198b..5f5b4107 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/task/BpmActivityServiceImpl.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/task/BpmActivityServiceImpl.java @@ -15,7 +15,7 @@ import java.util.List; /** * BPM 活动实例 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Slf4j diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/task/BpmProcessInstanceService.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/task/BpmProcessInstanceService.java index c537f895..e3b464a8 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/task/BpmProcessInstanceService.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/task/BpmProcessInstanceService.java @@ -16,7 +16,7 @@ import java.util.Set; /** * 流程实例 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface BpmProcessInstanceService { diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/task/BpmProcessInstanceServiceImpl.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/task/BpmProcessInstanceServiceImpl.java index 7921c618..fce2ac02 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/task/BpmProcessInstanceServiceImpl.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/task/BpmProcessInstanceServiceImpl.java @@ -1 +1 @@ -package com.win.module.bpm.service.task; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.win.framework.common.pojo.PageResult; import com.win.framework.common.util.number.NumberUtils; import com.win.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; import com.win.module.bpm.controller.admin.task.vo.instance.*; import com.win.module.bpm.convert.task.BpmProcessInstanceConvert; import com.win.module.bpm.dal.dataobject.definition.BpmProcessDefinitionExtDO; import com.win.module.bpm.dal.dataobject.task.BpmProcessInstanceExtDO; import com.win.module.bpm.dal.mysql.task.BpmProcessInstanceExtMapper; import com.win.module.bpm.enums.task.BpmProcessInstanceDeleteReasonEnum; import com.win.module.bpm.enums.task.BpmProcessInstanceResultEnum; import com.win.module.bpm.enums.task.BpmProcessInstanceStatusEnum; import com.win.module.bpm.framework.bpm.core.event.BpmProcessInstanceResultEventPublisher; import com.win.module.bpm.service.definition.BpmProcessDefinitionService; import com.win.module.bpm.service.message.BpmMessageService; import com.win.module.system.api.dept.DeptApi; import com.win.module.system.api.dept.dto.DeptRespDTO; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; import lombok.extern.slf4j.Slf4j; import org.flowable.engine.HistoryService; import org.flowable.engine.RuntimeService; import org.flowable.engine.delegate.event.FlowableCancelledEvent; import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.repository.ProcessDefinition; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.task.api.Task; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import javax.validation.Valid; import java.time.LocalDateTime; import java.util.*; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.win.framework.common.util.collection.CollectionUtils.convertList; import static com.win.module.bpm.enums.ErrorCodeConstants.*; /** * 流程实例 Service 实现类 * * ProcessDefinition & ProcessInstance & Execution & Task 的关系: * 1. * * HistoricProcessInstance & ProcessInstance 的关系: * 1. * * 简单来说,前者 = 历史 + 运行中的流程实例,后者仅是运行中的流程实例 * * @author 芋道源码 */ @Service @Validated @Slf4j public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService { @Resource private RuntimeService runtimeService; @Resource private BpmProcessInstanceExtMapper processInstanceExtMapper; @Resource @Lazy // 解决循环依赖 private BpmTaskService taskService; @Resource private BpmProcessDefinitionService processDefinitionService; @Resource private HistoryService historyService; @Resource private AdminUserApi adminUserApi; @Resource private DeptApi deptApi; @Resource private BpmProcessInstanceResultEventPublisher processInstanceResultEventPublisher; @Resource private BpmMessageService messageService; @Override public ProcessInstance getProcessInstance(String id) { return runtimeService.createProcessInstanceQuery().processInstanceId(id).singleResult(); } @Override public List getProcessInstances(Set ids) { return runtimeService.createProcessInstanceQuery().processInstanceIds(ids).list(); } @Override public PageResult getMyProcessInstancePage(Long userId, BpmProcessInstanceMyPageReqVO pageReqVO) { // 通过 BpmProcessInstanceExtDO 表,先查询到对应的分页 PageResult pageResult = processInstanceExtMapper.selectPage(userId, pageReqVO); if (CollUtil.isEmpty(pageResult.getList())) { return new PageResult<>(pageResult.getTotal()); } // 获得流程 Task Map List processInstanceIds = convertList(pageResult.getList(), BpmProcessInstanceExtDO::getProcessInstanceId); Map> taskMap = taskService.getTaskMapByProcessInstanceIds(processInstanceIds); // 转换返回 return BpmProcessInstanceConvert.INSTANCE.convertPage(pageResult, taskMap); } @Override @Transactional(rollbackFor = Exception.class) public String createProcessInstance(Long userId, @Valid BpmProcessInstanceCreateReqVO createReqVO) { // 获得流程定义 ProcessDefinition definition = processDefinitionService.getProcessDefinition(createReqVO.getProcessDefinitionId()); // 发起流程 return createProcessInstance0(userId, definition, createReqVO.getVariables(), null); } @Override public String createProcessInstance(Long userId, @Valid BpmProcessInstanceCreateReqDTO createReqDTO) { // 获得流程定义 ProcessDefinition definition = processDefinitionService.getActiveProcessDefinition(createReqDTO.getProcessDefinitionKey()); // 发起流程 return createProcessInstance0(userId, definition, createReqDTO.getVariables(), createReqDTO.getBusinessKey()); } @Override public BpmProcessInstanceRespVO getProcessInstanceVO(String id) { // 获得流程实例 HistoricProcessInstance processInstance = getHistoricProcessInstance(id); if (processInstance == null) { return null; } BpmProcessInstanceExtDO processInstanceExt = processInstanceExtMapper.selectByProcessInstanceId(id); Assert.notNull(processInstanceExt, "流程实例拓展({}) 不存在", id); // 获得流程定义 ProcessDefinition processDefinition = processDefinitionService .getProcessDefinition(processInstance.getProcessDefinitionId()); Assert.notNull(processDefinition, "流程定义({}) 不存在", processInstance.getProcessDefinitionId()); BpmProcessDefinitionExtDO processDefinitionExt = processDefinitionService.getProcessDefinitionExt( processInstance.getProcessDefinitionId()); Assert.notNull(processDefinitionExt, "流程定义拓展({}) 不存在", id); String bpmnXml = processDefinitionService.getProcessDefinitionBpmnXML(processInstance.getProcessDefinitionId()); // 获得 User AdminUserRespDTO startUser = adminUserApi.getUser(NumberUtils.parseLong(processInstance.getStartUserId())); DeptRespDTO dept = null; if (startUser != null) { dept = deptApi.getDept(startUser.getDeptId()); } // 拼接结果 return BpmProcessInstanceConvert.INSTANCE.convert2(processInstance, processInstanceExt, processDefinition, processDefinitionExt, bpmnXml, startUser, dept); } @Override public void cancelProcessInstance(Long userId, @Valid BpmProcessInstanceCancelReqVO cancelReqVO) { // 校验流程实例存在 ProcessInstance instance = getProcessInstance(cancelReqVO.getId()); if (instance == null) { throw exception(PROCESS_INSTANCE_CANCEL_FAIL_NOT_EXISTS); } // 只能取消自己的 if (!Objects.equals(instance.getStartUserId(), String.valueOf(userId))) { throw exception(PROCESS_INSTANCE_CANCEL_FAIL_NOT_SELF); } // 通过删除流程实例,实现流程实例的取消, // 删除流程实例,正则执行任务 ACT_RU_TASK. 任务会被删除。通过历史表查询 deleteProcessInstance(cancelReqVO.getId(), BpmProcessInstanceDeleteReasonEnum.CANCEL_TASK.format(cancelReqVO.getReason())); } /** * 获得历史的流程实例 * * @param id 流程实例的编号 * @return 历史的流程实例 */ @Override public HistoricProcessInstance getHistoricProcessInstance(String id) { return historyService.createHistoricProcessInstanceQuery().processInstanceId(id).singleResult(); } @Override public List getHistoricProcessInstances(Set ids) { return historyService.createHistoricProcessInstanceQuery().processInstanceIds(ids).list(); } @Override public void createProcessInstanceExt(ProcessInstance instance) { // 获得流程定义 ProcessDefinition definition = processDefinitionService.getProcessDefinition2(instance.getProcessDefinitionId()); // 插入 BpmProcessInstanceExtDO 对象 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO() .setProcessInstanceId(instance.getId()) .setProcessDefinitionId(definition.getId()) .setName(instance.getProcessDefinitionName()) .setStartUserId(Long.valueOf(instance.getStartUserId())) .setCategory(definition.getCategory()) .setStatus(BpmProcessInstanceStatusEnum.RUNNING.getStatus()) .setResult(BpmProcessInstanceResultEnum.PROCESS.getResult()); processInstanceExtMapper.insert(instanceExtDO); } @Override public void updateProcessInstanceExtCancel(FlowableCancelledEvent event) { // 判断是否为 Reject 不通过。如果是,则不进行更新. // 因为,updateProcessInstanceExtReject 方法,已经进行更新了 if (BpmProcessInstanceDeleteReasonEnum.isRejectReason((String)event.getCause())) { return; } // 需要主动查询,因为 instance 只有 id 属性 // 另外,此时如果去查询 ProcessInstance 的话,字段是不全的,所以去查询了 HistoricProcessInstance HistoricProcessInstance processInstance = getHistoricProcessInstance(event.getProcessInstanceId()); // 更新拓展表 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO() .setProcessInstanceId(event.getProcessInstanceId()) .setEndTime(LocalDateTime.now()) // 由于 ProcessInstance 里没有办法拿到 endTime,所以这里设置 .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) .setResult(BpmProcessInstanceResultEnum.CANCEL.getResult()); processInstanceExtMapper.updateByProcessInstanceId(instanceExtDO); // 发送流程实例的状态事件 processInstanceResultEventPublisher.sendProcessInstanceResultEvent( BpmProcessInstanceConvert.INSTANCE.convert(this, processInstance, instanceExtDO.getResult())); } @Override public void updateProcessInstanceExtComplete(ProcessInstance instance) { // 需要主动查询,因为 instance 只有 id 属性 // 另外,此时如果去查询 ProcessInstance 的话,字段是不全的,所以去查询了 HistoricProcessInstance HistoricProcessInstance processInstance = getHistoricProcessInstance(instance.getId()); // 更新拓展表 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO() .setProcessInstanceId(instance.getProcessInstanceId()) .setEndTime(LocalDateTime.now()) // 由于 ProcessInstance 里没有办法拿到 endTime,所以这里设置 .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) .setResult(BpmProcessInstanceResultEnum.APPROVE.getResult()); // 如果正常完全,说明审批通过 processInstanceExtMapper.updateByProcessInstanceId(instanceExtDO); // 发送流程被通过的消息 messageService.sendMessageWhenProcessInstanceApprove(BpmProcessInstanceConvert.INSTANCE.convert2ApprovedReq(instance)); // 发送流程实例的状态事件 processInstanceResultEventPublisher.sendProcessInstanceResultEvent( BpmProcessInstanceConvert.INSTANCE.convert(this, processInstance, instanceExtDO.getResult())); } @Override @Transactional(rollbackFor = Exception.class) public void updateProcessInstanceExtReject(String id, String reason) { // 需要主动查询,因为 instance 只有 id 属性 ProcessInstance processInstance = getProcessInstance(id); // 删除流程实例,以实现驳回任务时,取消整个审批流程 deleteProcessInstance(id, StrUtil.format(BpmProcessInstanceDeleteReasonEnum.REJECT_TASK.format(reason))); // 更新 status + result // 注意,不能和上面的逻辑更换位置。因为 deleteProcessInstance 会触发流程的取消,进而调用 updateProcessInstanceExtCancel 方法, // 设置 result 为 BpmProcessInstanceStatusEnum.CANCEL,显然和 result 不一定是一致的 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO().setProcessInstanceId(id) .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) .setResult(BpmProcessInstanceResultEnum.REJECT.getResult()); processInstanceExtMapper.updateByProcessInstanceId(instanceExtDO); // 发送流程被不通过的消息 messageService.sendMessageWhenProcessInstanceReject(BpmProcessInstanceConvert.INSTANCE.convert2RejectReq(processInstance, reason)); // 发送流程实例的状态事件 processInstanceResultEventPublisher.sendProcessInstanceResultEvent( BpmProcessInstanceConvert.INSTANCE.convert(this, processInstance, instanceExtDO.getResult())); } private void deleteProcessInstance(String id, String reason) { runtimeService.deleteProcessInstance(id, reason); } private String createProcessInstance0(Long userId, ProcessDefinition definition, Map variables, String businessKey) { // 校验流程定义 if (definition == null) { throw exception(PROCESS_DEFINITION_NOT_EXISTS); } if (definition.isSuspended()) { throw exception(PROCESS_DEFINITION_IS_SUSPENDED); } // 创建流程实例 ProcessInstance instance = runtimeService.createProcessInstanceBuilder() .processDefinitionId(definition.getId()) .businessKey(businessKey) .name(definition.getName().trim()) .variables(variables) .start(); // 设置流程名字 runtimeService.setProcessInstanceName(instance.getId(), definition.getName()); // 补全流程实例的拓展表 processInstanceExtMapper.updateByProcessInstanceId(new BpmProcessInstanceExtDO().setProcessInstanceId(instance.getId()) .setFormVariables(variables)); return instance.getId(); } } \ No newline at end of file +package com.win.module.bpm.service.task; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.win.framework.common.pojo.PageResult; import com.win.framework.common.util.number.NumberUtils; import com.win.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; import com.win.module.bpm.controller.admin.task.vo.instance.*; import com.win.module.bpm.convert.task.BpmProcessInstanceConvert; import com.win.module.bpm.dal.dataobject.definition.BpmProcessDefinitionExtDO; import com.win.module.bpm.dal.dataobject.task.BpmProcessInstanceExtDO; import com.win.module.bpm.dal.mysql.task.BpmProcessInstanceExtMapper; import com.win.module.bpm.enums.task.BpmProcessInstanceDeleteReasonEnum; import com.win.module.bpm.enums.task.BpmProcessInstanceResultEnum; import com.win.module.bpm.enums.task.BpmProcessInstanceStatusEnum; import com.win.module.bpm.framework.bpm.core.event.BpmProcessInstanceResultEventPublisher; import com.win.module.bpm.service.definition.BpmProcessDefinitionService; import com.win.module.bpm.service.message.BpmMessageService; import com.win.module.system.api.dept.DeptApi; import com.win.module.system.api.dept.dto.DeptRespDTO; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; import lombok.extern.slf4j.Slf4j; import org.flowable.engine.HistoryService; import org.flowable.engine.RuntimeService; import org.flowable.engine.delegate.event.FlowableCancelledEvent; import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.repository.ProcessDefinition; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.task.api.Task; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import javax.validation.Valid; import java.time.LocalDateTime; import java.util.*; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.win.framework.common.util.collection.CollectionUtils.convertList; import static com.win.module.bpm.enums.ErrorCodeConstants.*; /** * 流程实例 Service 实现类 * * ProcessDefinition & ProcessInstance & Execution & Task 的关系: * 1. * * HistoricProcessInstance & ProcessInstance 的关系: * 1. * * 简单来说,前者 = 历史 + 运行中的流程实例,后者仅是运行中的流程实例 * * @author 闻荫源码 */ @Service @Validated @Slf4j public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService { @Resource private RuntimeService runtimeService; @Resource private BpmProcessInstanceExtMapper processInstanceExtMapper; @Resource @Lazy // 解决循环依赖 private BpmTaskService taskService; @Resource private BpmProcessDefinitionService processDefinitionService; @Resource private HistoryService historyService; @Resource private AdminUserApi adminUserApi; @Resource private DeptApi deptApi; @Resource private BpmProcessInstanceResultEventPublisher processInstanceResultEventPublisher; @Resource private BpmMessageService messageService; @Override public ProcessInstance getProcessInstance(String id) { return runtimeService.createProcessInstanceQuery().processInstanceId(id).singleResult(); } @Override public List getProcessInstances(Set ids) { return runtimeService.createProcessInstanceQuery().processInstanceIds(ids).list(); } @Override public PageResult getMyProcessInstancePage(Long userId, BpmProcessInstanceMyPageReqVO pageReqVO) { // 通过 BpmProcessInstanceExtDO 表,先查询到对应的分页 PageResult pageResult = processInstanceExtMapper.selectPage(userId, pageReqVO); if (CollUtil.isEmpty(pageResult.getList())) { return new PageResult<>(pageResult.getTotal()); } // 获得流程 Task Map List processInstanceIds = convertList(pageResult.getList(), BpmProcessInstanceExtDO::getProcessInstanceId); Map> taskMap = taskService.getTaskMapByProcessInstanceIds(processInstanceIds); // 转换返回 return BpmProcessInstanceConvert.INSTANCE.convertPage(pageResult, taskMap); } @Override @Transactional(rollbackFor = Exception.class) public String createProcessInstance(Long userId, @Valid BpmProcessInstanceCreateReqVO createReqVO) { // 获得流程定义 ProcessDefinition definition = processDefinitionService.getProcessDefinition(createReqVO.getProcessDefinitionId()); // 发起流程 return createProcessInstance0(userId, definition, createReqVO.getVariables(), null); } @Override public String createProcessInstance(Long userId, @Valid BpmProcessInstanceCreateReqDTO createReqDTO) { // 获得流程定义 ProcessDefinition definition = processDefinitionService.getActiveProcessDefinition(createReqDTO.getProcessDefinitionKey()); // 发起流程 return createProcessInstance0(userId, definition, createReqDTO.getVariables(), createReqDTO.getBusinessKey()); } @Override public BpmProcessInstanceRespVO getProcessInstanceVO(String id) { // 获得流程实例 HistoricProcessInstance processInstance = getHistoricProcessInstance(id); if (processInstance == null) { return null; } BpmProcessInstanceExtDO processInstanceExt = processInstanceExtMapper.selectByProcessInstanceId(id); Assert.notNull(processInstanceExt, "流程实例拓展({}) 不存在", id); // 获得流程定义 ProcessDefinition processDefinition = processDefinitionService .getProcessDefinition(processInstance.getProcessDefinitionId()); Assert.notNull(processDefinition, "流程定义({}) 不存在", processInstance.getProcessDefinitionId()); BpmProcessDefinitionExtDO processDefinitionExt = processDefinitionService.getProcessDefinitionExt( processInstance.getProcessDefinitionId()); Assert.notNull(processDefinitionExt, "流程定义拓展({}) 不存在", id); String bpmnXml = processDefinitionService.getProcessDefinitionBpmnXML(processInstance.getProcessDefinitionId()); // 获得 User AdminUserRespDTO startUser = adminUserApi.getUser(NumberUtils.parseLong(processInstance.getStartUserId())); DeptRespDTO dept = null; if (startUser != null) { dept = deptApi.getDept(startUser.getDeptId()); } // 拼接结果 return BpmProcessInstanceConvert.INSTANCE.convert2(processInstance, processInstanceExt, processDefinition, processDefinitionExt, bpmnXml, startUser, dept); } @Override public void cancelProcessInstance(Long userId, @Valid BpmProcessInstanceCancelReqVO cancelReqVO) { // 校验流程实例存在 ProcessInstance instance = getProcessInstance(cancelReqVO.getId()); if (instance == null) { throw exception(PROCESS_INSTANCE_CANCEL_FAIL_NOT_EXISTS); } // 只能取消自己的 if (!Objects.equals(instance.getStartUserId(), String.valueOf(userId))) { throw exception(PROCESS_INSTANCE_CANCEL_FAIL_NOT_SELF); } // 通过删除流程实例,实现流程实例的取消, // 删除流程实例,正则执行任务 ACT_RU_TASK. 任务会被删除。通过历史表查询 deleteProcessInstance(cancelReqVO.getId(), BpmProcessInstanceDeleteReasonEnum.CANCEL_TASK.format(cancelReqVO.getReason())); } /** * 获得历史的流程实例 * * @param id 流程实例的编号 * @return 历史的流程实例 */ @Override public HistoricProcessInstance getHistoricProcessInstance(String id) { return historyService.createHistoricProcessInstanceQuery().processInstanceId(id).singleResult(); } @Override public List getHistoricProcessInstances(Set ids) { return historyService.createHistoricProcessInstanceQuery().processInstanceIds(ids).list(); } @Override public void createProcessInstanceExt(ProcessInstance instance) { // 获得流程定义 ProcessDefinition definition = processDefinitionService.getProcessDefinition2(instance.getProcessDefinitionId()); // 插入 BpmProcessInstanceExtDO 对象 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO() .setProcessInstanceId(instance.getId()) .setProcessDefinitionId(definition.getId()) .setName(instance.getProcessDefinitionName()) .setStartUserId(Long.valueOf(instance.getStartUserId())) .setCategory(definition.getCategory()) .setStatus(BpmProcessInstanceStatusEnum.RUNNING.getStatus()) .setResult(BpmProcessInstanceResultEnum.PROCESS.getResult()); processInstanceExtMapper.insert(instanceExtDO); } @Override public void updateProcessInstanceExtCancel(FlowableCancelledEvent event) { // 判断是否为 Reject 不通过。如果是,则不进行更新. // 因为,updateProcessInstanceExtReject 方法,已经进行更新了 if (BpmProcessInstanceDeleteReasonEnum.isRejectReason((String)event.getCause())) { return; } // 需要主动查询,因为 instance 只有 id 属性 // 另外,此时如果去查询 ProcessInstance 的话,字段是不全的,所以去查询了 HistoricProcessInstance HistoricProcessInstance processInstance = getHistoricProcessInstance(event.getProcessInstanceId()); // 更新拓展表 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO() .setProcessInstanceId(event.getProcessInstanceId()) .setEndTime(LocalDateTime.now()) // 由于 ProcessInstance 里没有办法拿到 endTime,所以这里设置 .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) .setResult(BpmProcessInstanceResultEnum.CANCEL.getResult()); processInstanceExtMapper.updateByProcessInstanceId(instanceExtDO); // 发送流程实例的状态事件 processInstanceResultEventPublisher.sendProcessInstanceResultEvent( BpmProcessInstanceConvert.INSTANCE.convert(this, processInstance, instanceExtDO.getResult())); } @Override public void updateProcessInstanceExtComplete(ProcessInstance instance) { // 需要主动查询,因为 instance 只有 id 属性 // 另外,此时如果去查询 ProcessInstance 的话,字段是不全的,所以去查询了 HistoricProcessInstance HistoricProcessInstance processInstance = getHistoricProcessInstance(instance.getId()); // 更新拓展表 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO() .setProcessInstanceId(instance.getProcessInstanceId()) .setEndTime(LocalDateTime.now()) // 由于 ProcessInstance 里没有办法拿到 endTime,所以这里设置 .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) .setResult(BpmProcessInstanceResultEnum.APPROVE.getResult()); // 如果正常完全,说明审批通过 processInstanceExtMapper.updateByProcessInstanceId(instanceExtDO); // 发送流程被通过的消息 messageService.sendMessageWhenProcessInstanceApprove(BpmProcessInstanceConvert.INSTANCE.convert2ApprovedReq(instance)); // 发送流程实例的状态事件 processInstanceResultEventPublisher.sendProcessInstanceResultEvent( BpmProcessInstanceConvert.INSTANCE.convert(this, processInstance, instanceExtDO.getResult())); } @Override @Transactional(rollbackFor = Exception.class) public void updateProcessInstanceExtReject(String id, String reason) { // 需要主动查询,因为 instance 只有 id 属性 ProcessInstance processInstance = getProcessInstance(id); // 删除流程实例,以实现驳回任务时,取消整个审批流程 deleteProcessInstance(id, StrUtil.format(BpmProcessInstanceDeleteReasonEnum.REJECT_TASK.format(reason))); // 更新 status + result // 注意,不能和上面的逻辑更换位置。因为 deleteProcessInstance 会触发流程的取消,进而调用 updateProcessInstanceExtCancel 方法, // 设置 result 为 BpmProcessInstanceStatusEnum.CANCEL,显然和 result 不一定是一致的 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO().setProcessInstanceId(id) .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) .setResult(BpmProcessInstanceResultEnum.REJECT.getResult()); processInstanceExtMapper.updateByProcessInstanceId(instanceExtDO); // 发送流程被不通过的消息 messageService.sendMessageWhenProcessInstanceReject(BpmProcessInstanceConvert.INSTANCE.convert2RejectReq(processInstance, reason)); // 发送流程实例的状态事件 processInstanceResultEventPublisher.sendProcessInstanceResultEvent( BpmProcessInstanceConvert.INSTANCE.convert(this, processInstance, instanceExtDO.getResult())); } private void deleteProcessInstance(String id, String reason) { runtimeService.deleteProcessInstance(id, reason); } private String createProcessInstance0(Long userId, ProcessDefinition definition, Map variables, String businessKey) { // 校验流程定义 if (definition == null) { throw exception(PROCESS_DEFINITION_NOT_EXISTS); } if (definition.isSuspended()) { throw exception(PROCESS_DEFINITION_IS_SUSPENDED); } // 创建流程实例 ProcessInstance instance = runtimeService.createProcessInstanceBuilder() .processDefinitionId(definition.getId()) .businessKey(businessKey) .name(definition.getName().trim()) .variables(variables) .start(); // 设置流程名字 runtimeService.setProcessInstanceName(instance.getId(), definition.getName()); // 补全流程实例的拓展表 processInstanceExtMapper.updateByProcessInstanceId(new BpmProcessInstanceExtDO().setProcessInstanceId(instance.getId()) .setFormVariables(variables)); return instance.getId(); } } \ No newline at end of file diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/task/BpmTaskService.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/task/BpmTaskService.java index 0533b5d4..ec618438 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/task/BpmTaskService.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/task/BpmTaskService.java @@ -14,7 +14,7 @@ import java.util.Map; * 流程任务实例 Service 接口 * * @author jason - * @author 芋道源码 + * @author 闻荫源码 */ public interface BpmTaskService { diff --git a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/task/BpmTaskServiceImpl.java b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/task/BpmTaskServiceImpl.java index c6f0a711..85aff1cb 100644 --- a/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/task/BpmTaskServiceImpl.java +++ b/win-module-bpm/win-module-bpm-biz/src/main/java/com/win/module/bpm/service/task/BpmTaskServiceImpl.java @@ -46,7 +46,7 @@ import static com.win.module.bpm.enums.ErrorCodeConstants.*; /** * 流程任务实例 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 * @author jason */ @Slf4j diff --git a/win-module-bpm/win-module-bpm-biz/src/test/java/com/win/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskAssignLeaderX2ScriptTest.java b/win-module-bpm/win-module-bpm-biz/src/test/java/com/win/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskAssignLeaderX2ScriptTest.java deleted file mode 100644 index d4c0571e..00000000 --- a/win-module-bpm/win-module-bpm-biz/src/test/java/com/win/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskAssignLeaderX2ScriptTest.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.win.module.bpm.framework.flowable.core.behavior.script.impl; - -import com.win.framework.test.core.ut.BaseMockitoUnitTest; -import com.win.module.bpm.service.task.BpmProcessInstanceService; -import com.win.module.system.api.dept.DeptApi; -import com.win.module.system.api.dept.dto.DeptRespDTO; -import com.win.module.system.api.user.AdminUserApi; -import com.win.module.system.api.user.dto.AdminUserRespDTO; -import org.flowable.engine.delegate.DelegateExecution; -import org.flowable.engine.impl.persistence.entity.ExecutionEntityImpl; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; - -import java.util.Set; - -import static com.win.framework.common.util.collection.SetUtils.asSet; -import static com.win.framework.test.core.util.RandomUtils.randomPojo; -import static com.win.framework.test.core.util.RandomUtils.randomString; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.when; - -public class BpmTaskAssignLeaderX2ScriptTest extends BaseMockitoUnitTest { - - @InjectMocks - private BpmTaskAssignLeaderX2Script script; - - @Mock - private AdminUserApi adminUserApi; - @Mock - private DeptApi deptApi; - @Mock - private BpmProcessInstanceService bpmProcessInstanceService; - - @Test - public void testCalculateTaskCandidateUsers_noDept() { - // 准备参数 - DelegateExecution execution = mockDelegateExecution(1L); - // mock 方法(startUser) - AdminUserRespDTO startUser = randomPojo(AdminUserRespDTO.class, o -> o.setDeptId(10L)); - when(adminUserApi.getUser(eq(1L))).thenReturn(startUser); - // mock 方法(getStartUserDept)没有部门 - when(deptApi.getDept(eq(10L))).thenReturn(null); - - // 调用 - Set result = script.calculateTaskCandidateUsers(execution); - // 断言 - assertEquals(0, result.size()); - } - - @Test - public void testCalculateTaskCandidateUsers_noParentDept() { - // 准备参数 - DelegateExecution execution = mockDelegateExecution(1L); - // mock 方法(startUser) - AdminUserRespDTO startUser = randomPojo(AdminUserRespDTO.class, o -> o.setDeptId(10L)); - when(adminUserApi.getUser(eq(1L))).thenReturn(startUser); - DeptRespDTO startUserDept = randomPojo(DeptRespDTO.class, o -> o.setId(10L).setParentId(100L) - .setLeaderUserId(20L)); - // mock 方法(getDept) - when(deptApi.getDept(eq(10L))).thenReturn(startUserDept); - when(deptApi.getDept(eq(100L))).thenReturn(null); - - // 调用 - Set result = script.calculateTaskCandidateUsers(execution); - // 断言 - assertEquals(asSet(20L), result); - } - - @Test - public void testCalculateTaskCandidateUsers_existParentDept() { - // 准备参数 - DelegateExecution execution = mockDelegateExecution(1L); - // mock 方法(startUser) - AdminUserRespDTO startUser = randomPojo(AdminUserRespDTO.class, o -> o.setDeptId(10L)); - when(adminUserApi.getUser(eq(1L))).thenReturn(startUser); - DeptRespDTO startUserDept = randomPojo(DeptRespDTO.class, o -> o.setId(10L).setParentId(100L) - .setLeaderUserId(20L)); - when(deptApi.getDept(eq(10L))).thenReturn(startUserDept); - // mock 方法(父 dept) - DeptRespDTO parentDept = randomPojo(DeptRespDTO.class, o -> o.setId(100L).setParentId(1000L) - .setLeaderUserId(200L)); - when(deptApi.getDept(eq(100L))).thenReturn(parentDept); - - // 调用 - Set result = script.calculateTaskCandidateUsers(execution); - // 断言 - assertEquals(asSet(200L), result); - } - - @SuppressWarnings("SameParameterValue") - private DelegateExecution mockDelegateExecution(Long startUserId) { - ExecutionEntityImpl execution = new ExecutionEntityImpl(); - execution.setProcessInstanceId(randomString()); - // mock 返回 startUserId - ExecutionEntityImpl processInstance = new ExecutionEntityImpl(); - processInstance.setStartUserId(String.valueOf(startUserId)); - when(bpmProcessInstanceService.getProcessInstance(eq(execution.getProcessInstanceId()))) - .thenReturn(processInstance); - return execution; - } - -} diff --git a/win-module-bpm/win-module-bpm-biz/src/test/java/com/win/module/bpm/service/definition/BpmFormServiceTest.java b/win-module-bpm/win-module-bpm-biz/src/test/java/com/win/module/bpm/service/definition/BpmFormServiceTest.java deleted file mode 100644 index f1dd75df..00000000 --- a/win-module-bpm/win-module-bpm-biz/src/test/java/com/win/module/bpm/service/definition/BpmFormServiceTest.java +++ /dev/null @@ -1,145 +0,0 @@ -package com.win.module.bpm.service.definition; - -import cn.hutool.core.util.RandomUtil; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.common.util.json.JsonUtils; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.bpm.controller.admin.definition.vo.form.BpmFormCreateReqVO; -import com.win.module.bpm.controller.admin.definition.vo.form.BpmFormPageReqVO; -import com.win.module.bpm.controller.admin.definition.vo.form.BpmFormUpdateReqVO; -import com.win.module.bpm.dal.dataobject.definition.BpmFormDO; -import com.win.module.bpm.dal.mysql.definition.BpmFormMapper; -import com.win.module.bpm.service.definition.dto.BpmFormFieldRespDTO; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.randomLongId; -import static com.win.framework.test.core.util.RandomUtils.randomPojo; -import static com.win.module.bpm.enums.ErrorCodeConstants.FORM_NOT_EXISTS; -import static org.junit.jupiter.api.Assertions.*; - -/** - * {@link BpmFormServiceImpl} 的单元测试类 - * - * @author 芋道源码 - */ -@Import(BpmFormServiceImpl.class) -public class BpmFormServiceTest extends BaseDbUnitTest { - - @Resource - private BpmFormServiceImpl formService; - - @Resource - private BpmFormMapper formMapper; - - @Test - public void testCreateForm_success() { - // 准备参数 - BpmFormCreateReqVO reqVO = randomPojo(BpmFormCreateReqVO.class, o -> { - o.setConf("{}"); - o.setFields(randomFields()); - }); - - // 调用 - Long formId = formService.createForm(reqVO); - // 断言 - assertNotNull(formId); - // 校验记录的属性是否正确 - BpmFormDO form = formMapper.selectById(formId); - assertPojoEquals(reqVO, form); - } - - @Test - public void testUpdateForm_success() { - // mock 数据 - BpmFormDO dbForm = randomPojo(BpmFormDO.class, o -> { - o.setConf("{}"); - o.setFields(randomFields()); - }); - formMapper.insert(dbForm);// @Sql: 先插入出一条存在的数据 - // 准备参数 - BpmFormUpdateReqVO reqVO = randomPojo(BpmFormUpdateReqVO.class, o -> { - o.setId(dbForm.getId()); // 设置更新的 ID - o.setConf("{'win': 'yuanma'}"); - o.setFields(randomFields()); - }); - - // 调用 - formService.updateForm(reqVO); - // 校验是否更新正确 - BpmFormDO form = formMapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, form); - } - - @Test - public void testUpdateForm_notExists() { - // 准备参数 - BpmFormUpdateReqVO reqVO = randomPojo(BpmFormUpdateReqVO.class, o -> { - o.setConf("{'win': 'yuanma'}"); - o.setFields(randomFields()); - }); - - // 调用, 并断言异常 - assertServiceException(() -> formService.updateForm(reqVO), FORM_NOT_EXISTS); - } - - @Test - public void testDeleteForm_success() { - // mock 数据 - BpmFormDO dbForm = randomPojo(BpmFormDO.class); - formMapper.insert(dbForm);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbForm.getId(); - - // 调用 - formService.deleteForm(id); - // 校验数据不存在了 - assertNull(formMapper.selectById(id)); - } - - @Test - public void testDeleteForm_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> formService.deleteForm(id), FORM_NOT_EXISTS); - } - - @Test - public void testGetFormPage() { - // mock 数据 - BpmFormDO dbForm = randomPojo(BpmFormDO.class, o -> { // 等会查询到 - o.setName("芋道源码"); - }); - formMapper.insert(dbForm); - // 测试 name 不匹配 - formMapper.insert(cloneIgnoreId(dbForm, o -> o.setName("源码"))); - // 准备参数 - BpmFormPageReqVO reqVO = new BpmFormPageReqVO(); - reqVO.setName("芋道"); - - // 调用 - PageResult pageResult = formService.getFormPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbForm, pageResult.getList().get(0)); - } - - private List randomFields() { - int size = RandomUtil.randomInt(1, 3); - return Stream.iterate(0, i -> i).limit(size) - .map(i -> JsonUtils.toJsonString(randomPojo(BpmFormFieldRespDTO.class))) - .collect(Collectors.toList()); - } - -} diff --git a/win-module-bpm/win-module-bpm-biz/src/test/java/com/win/module/bpm/service/definition/BpmTaskAssignRuleServiceImplTest.java b/win-module-bpm/win-module-bpm-biz/src/test/java/com/win/module/bpm/service/definition/BpmTaskAssignRuleServiceImplTest.java deleted file mode 100644 index 9de6ca4f..00000000 --- a/win-module-bpm/win-module-bpm-biz/src/test/java/com/win/module/bpm/service/definition/BpmTaskAssignRuleServiceImplTest.java +++ /dev/null @@ -1,227 +0,0 @@ -package com.win.module.bpm.service.definition; - -import cn.hutool.core.map.MapUtil; -import com.win.framework.common.enums.CommonStatusEnum; -import com.win.framework.common.util.collection.CollectionUtils; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.bpm.dal.dataobject.definition.BpmTaskAssignRuleDO; -import com.win.module.bpm.dal.dataobject.definition.BpmUserGroupDO; -import com.win.module.bpm.enums.definition.BpmTaskAssignRuleTypeEnum; -import com.win.module.bpm.enums.definition.BpmTaskRuleScriptEnum; -import com.win.module.bpm.framework.flowable.core.behavior.script.BpmTaskAssignScript; -import com.win.module.bpm.framework.flowable.core.behavior.script.impl.BpmTaskAssignStartUserScript; -import com.win.module.system.api.dept.DeptApi; -import com.win.module.system.api.dept.PostApi; -import com.win.module.system.api.dept.dto.DeptRespDTO; -import com.win.module.system.api.dict.DictDataApi; -import com.win.module.system.api.permission.PermissionApi; -import com.win.module.system.api.permission.RoleApi; -import com.win.module.system.api.user.AdminUserApi; -import com.win.module.system.api.user.dto.AdminUserRespDTO; -import org.flowable.engine.delegate.DelegateExecution; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import static com.win.framework.common.util.collection.SetUtils.asSet; -import static com.win.framework.test.core.util.RandomUtils.randomPojo; -import static java.util.Collections.singleton; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.when; - -/** - * {@link BpmTaskAssignRuleService} 的单元测试 - * - * @author 芋道源码 - */ -@Import({BpmTaskAssignRuleServiceImpl.class, BpmTaskAssignStartUserScript.class}) // Import 引入 BpmTaskAssignStartUserScript 目的是保证不报错 -public class BpmTaskAssignRuleServiceImplTest extends BaseDbUnitTest { - - @Resource - private BpmTaskAssignRuleServiceImpl bpmTaskRuleService; - - @MockBean - private BpmUserGroupService userGroupService; - @MockBean - private DeptApi deptApi; - @MockBean - private AdminUserApi adminUserApi; - @MockBean - private PermissionApi permissionApi; - @MockBean - private RoleApi roleApi; - @MockBean - private PostApi postApi; - @MockBean - private DictDataApi dictDataApi; - - @Test - public void testCalculateTaskCandidateUsers_Role() { - // 准备参数 - BpmTaskAssignRuleDO rule = new BpmTaskAssignRuleDO().setOptions(asSet(1L, 2L)) - .setType(BpmTaskAssignRuleTypeEnum.ROLE.getType()); - // mock 方法 - when(permissionApi.getUserRoleIdListByRoleIds(eq(rule.getOptions()))) - .thenReturn(asSet(11L, 22L)); - mockGetUserMap(asSet(11L, 22L)); - - // 调用 - Set results = bpmTaskRuleService.calculateTaskCandidateUsers(null, rule); - // 断言 - assertEquals(asSet(11L, 22L), results); - } - - @Test - public void testCalculateTaskCandidateUsers_DeptMember() { - // 准备参数 - BpmTaskAssignRuleDO rule = new BpmTaskAssignRuleDO().setOptions(asSet(1L, 2L)) - .setType(BpmTaskAssignRuleTypeEnum.DEPT_MEMBER.getType()); - // mock 方法 - List users = CollectionUtils.convertList(asSet(11L, 22L), - id -> new AdminUserRespDTO().setId(id)); - when(adminUserApi.getUserListByDeptIds(eq(rule.getOptions()))).thenReturn(users); - mockGetUserMap(asSet(11L, 22L)); - - // 调用 - Set results = bpmTaskRuleService.calculateTaskCandidateUsers(null, rule); - // 断言 - assertEquals(asSet(11L, 22L), results); - } - - @Test - public void testCalculateTaskCandidateUsers_DeptLeader() { - // 准备参数 - BpmTaskAssignRuleDO rule = new BpmTaskAssignRuleDO().setOptions(asSet(1L, 2L)) - .setType(BpmTaskAssignRuleTypeEnum.DEPT_LEADER.getType()); - // mock 方法 - DeptRespDTO dept1 = randomPojo(DeptRespDTO.class, o -> o.setLeaderUserId(11L)); - DeptRespDTO dept2 = randomPojo(DeptRespDTO.class, o -> o.setLeaderUserId(22L)); - when(deptApi.getDeptList(eq(rule.getOptions()))).thenReturn(Arrays.asList(dept1, dept2)); - mockGetUserMap(asSet(11L, 22L)); - - // 调用 - Set results = bpmTaskRuleService.calculateTaskCandidateUsers(null, rule); - // 断言 - assertEquals(asSet(11L, 22L), results); - } - - @Test - public void testCalculateTaskCandidateUsers_Post() { - // 准备参数 - BpmTaskAssignRuleDO rule = new BpmTaskAssignRuleDO().setOptions(asSet(1L, 2L)) - .setType(BpmTaskAssignRuleTypeEnum.POST.getType()); - // mock 方法 - List users = CollectionUtils.convertList(asSet(11L, 22L), - id -> new AdminUserRespDTO().setId(id)); - when(adminUserApi.getUserListByPostIds(eq(rule.getOptions()))).thenReturn(users); - mockGetUserMap(asSet(11L, 22L)); - - // 调用 - Set results = bpmTaskRuleService.calculateTaskCandidateUsers(null, rule); - // 断言 - assertEquals(asSet(11L, 22L), results); - } - - @Test - public void testCalculateTaskCandidateUsers_User() { - // 准备参数 - BpmTaskAssignRuleDO rule = new BpmTaskAssignRuleDO().setOptions(asSet(1L, 2L)) - .setType(BpmTaskAssignRuleTypeEnum.USER.getType()); - // mock 方法 - mockGetUserMap(asSet(1L, 2L)); - - // 调用 - Set results = bpmTaskRuleService.calculateTaskCandidateUsers(null, rule); - // 断言 - assertEquals(asSet(1L, 2L), results); - } - - @Test - public void testCalculateTaskCandidateUsers_UserGroup() { - // 准备参数 - BpmTaskAssignRuleDO rule = new BpmTaskAssignRuleDO().setOptions(asSet(1L, 2L)) - .setType(BpmTaskAssignRuleTypeEnum.USER_GROUP.getType()); - // mock 方法 - BpmUserGroupDO userGroup1 = randomPojo(BpmUserGroupDO.class, o -> o.setMemberUserIds(asSet(11L, 12L))); - BpmUserGroupDO userGroup2 = randomPojo(BpmUserGroupDO.class, o -> o.setMemberUserIds(asSet(21L, 22L))); - when(userGroupService.getUserGroupList(eq(rule.getOptions()))).thenReturn(Arrays.asList(userGroup1, userGroup2)); - mockGetUserMap(asSet(11L, 12L, 21L, 22L)); - - // 调用 - Set results = bpmTaskRuleService.calculateTaskCandidateUsers(null, rule); - // 断言 - assertEquals(asSet(11L, 12L, 21L, 22L), results); - } - - @Test - public void testCalculateTaskCandidateUsers_Script() { - // 准备参数 - BpmTaskAssignRuleDO rule = new BpmTaskAssignRuleDO().setOptions(asSet(20L, 21L)) - .setType(BpmTaskAssignRuleTypeEnum.SCRIPT.getType()); - // mock 方法 - BpmTaskAssignScript script1 = new BpmTaskAssignScript() { - - @Override - public Set calculateTaskCandidateUsers(DelegateExecution task) { - return singleton(11L); - } - - @Override - public BpmTaskRuleScriptEnum getEnum() { - return BpmTaskRuleScriptEnum.LEADER_X1; - } - }; - BpmTaskAssignScript script2 = new BpmTaskAssignScript() { - - @Override - public Set calculateTaskCandidateUsers(DelegateExecution task) { - return singleton(22L); - } - - @Override - public BpmTaskRuleScriptEnum getEnum() { - return BpmTaskRuleScriptEnum.LEADER_X2; - } - }; - bpmTaskRuleService.setScripts(Arrays.asList(script1, script2)); - mockGetUserMap(asSet(11L, 22L)); - - // 调用 - Set results = bpmTaskRuleService.calculateTaskCandidateUsers(null, rule); - // 断言 - assertEquals(asSet(11L, 22L), results); - } - - @Test - public void testRemoveDisableUsers() { - // 准备参数. 1L 可以找到;2L 是禁用的;3L 找不到 - Set assigneeUserIds = asSet(1L, 2L, 3L); - // mock 方法 - AdminUserRespDTO user1 = randomPojo(AdminUserRespDTO.class, o -> o.setId(1L) - .setStatus(CommonStatusEnum.ENABLE.getStatus())); - AdminUserRespDTO user2 = randomPojo(AdminUserRespDTO.class, o -> o.setId(2L) - .setStatus(CommonStatusEnum.DISABLE.getStatus())); - Map userMap = MapUtil.builder(user1.getId(), user1) - .put(user2.getId(), user2).build(); - when(adminUserApi.getUserMap(eq(assigneeUserIds))).thenReturn(userMap); - - // 调用 - bpmTaskRuleService.removeDisableUsers(assigneeUserIds); - // 断言 - assertEquals(asSet(1L), assigneeUserIds); - } - - private void mockGetUserMap(Set assigneeUserIds) { - Map userMap = CollectionUtils.convertMap(assigneeUserIds, id -> id, - id -> new AdminUserRespDTO().setId(id).setStatus(CommonStatusEnum.ENABLE.getStatus())); - when(adminUserApi.getUserMap(eq(assigneeUserIds))).thenReturn(userMap); - } - -} diff --git a/win-module-bpm/win-module-bpm-biz/src/test/java/com/win/module/bpm/service/definition/BpmUserGroupServiceTest.java b/win-module-bpm/win-module-bpm-biz/src/test/java/com/win/module/bpm/service/definition/BpmUserGroupServiceTest.java deleted file mode 100644 index 7198a9c7..00000000 --- a/win-module-bpm/win-module-bpm-biz/src/test/java/com/win/module/bpm/service/definition/BpmUserGroupServiceTest.java +++ /dev/null @@ -1,131 +0,0 @@ -package com.win.module.bpm.service.definition; - -import com.win.framework.common.enums.CommonStatusEnum; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.framework.test.core.util.AssertUtils; -import com.win.framework.test.core.util.RandomUtils; -import com.win.module.bpm.controller.admin.definition.vo.group.BpmUserGroupCreateReqVO; -import com.win.module.bpm.controller.admin.definition.vo.group.BpmUserGroupPageReqVO; -import com.win.module.bpm.controller.admin.definition.vo.group.BpmUserGroupUpdateReqVO; -import com.win.module.bpm.dal.dataobject.definition.BpmUserGroupDO; -import com.win.module.bpm.dal.mysql.definition.BpmUserGroupMapper; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; - -import java.time.LocalDateTime; - -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.module.bpm.enums.ErrorCodeConstants.USER_GROUP_NOT_EXISTS; - -/** - * {@link BpmUserGroupServiceImpl} 的单元测试类 - * - * @author 芋道源码 - */ -@Import(BpmUserGroupServiceImpl.class) -public class BpmUserGroupServiceTest extends BaseDbUnitTest { - - @Resource - private BpmUserGroupServiceImpl userGroupService; - - @Resource - private BpmUserGroupMapper userGroupMapper; - - @Test - public void testCreateUserGroup_success() { - // 准备参数 - BpmUserGroupCreateReqVO reqVO = RandomUtils.randomPojo(BpmUserGroupCreateReqVO.class); - - // 调用 - Long userGroupId = userGroupService.createUserGroup(reqVO); - // 断言 - Assertions.assertNotNull(userGroupId); - // 校验记录的属性是否正确 - BpmUserGroupDO userGroup = userGroupMapper.selectById(userGroupId); - AssertUtils.assertPojoEquals(reqVO, userGroup); - } - - @Test - public void testUpdateUserGroup_success() { - // mock 数据 - BpmUserGroupDO dbUserGroup = RandomUtils.randomPojo(BpmUserGroupDO.class); - userGroupMapper.insert(dbUserGroup);// @Sql: 先插入出一条存在的数据 - // 准备参数 - BpmUserGroupUpdateReqVO reqVO = RandomUtils.randomPojo(BpmUserGroupUpdateReqVO.class, o -> { - o.setId(dbUserGroup.getId()); // 设置更新的 ID - }); - - // 调用 - userGroupService.updateUserGroup(reqVO); - // 校验是否更新正确 - BpmUserGroupDO userGroup = userGroupMapper.selectById(reqVO.getId()); // 获取最新的 - AssertUtils.assertPojoEquals(reqVO, userGroup); - } - - @Test - public void testUpdateUserGroup_notExists() { - // 准备参数 - BpmUserGroupUpdateReqVO reqVO = RandomUtils.randomPojo(BpmUserGroupUpdateReqVO.class); - - // 调用, 并断言异常 - AssertUtils.assertServiceException(() -> userGroupService.updateUserGroup(reqVO), USER_GROUP_NOT_EXISTS); - } - - @Test - public void testDeleteUserGroup_success() { - // mock 数据 - BpmUserGroupDO dbUserGroup = RandomUtils.randomPojo(BpmUserGroupDO.class); - userGroupMapper.insert(dbUserGroup);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbUserGroup.getId(); - - // 调用 - userGroupService.deleteUserGroup(id); - // 校验数据不存在了 - Assertions.assertNull(userGroupMapper.selectById(id)); - } - - @Test - public void testDeleteUserGroup_notExists() { - // 准备参数 - Long id = RandomUtils.randomLongId(); - - // 调用, 并断言异常 - AssertUtils.assertServiceException(() -> userGroupService.deleteUserGroup(id), USER_GROUP_NOT_EXISTS); - } - - @Test - public void testGetUserGroupPage() { - // mock 数据 - BpmUserGroupDO dbUserGroup = RandomUtils.randomPojo(BpmUserGroupDO.class, o -> { // 等会查询到 - o.setName("芋道源码"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setCreateTime(buildTime(2021, 11, 11)); - }); - userGroupMapper.insert(dbUserGroup); - // 测试 name 不匹配 - userGroupMapper.insert(cloneIgnoreId(dbUserGroup, o -> o.setName("芋道"))); - // 测试 status 不匹配 - userGroupMapper.insert(cloneIgnoreId(dbUserGroup, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 测试 createTime 不匹配 - userGroupMapper.insert(cloneIgnoreId(dbUserGroup, o -> o.setCreateTime(buildTime(2021, 12, 12)))); - // 准备参数 - BpmUserGroupPageReqVO reqVO = new BpmUserGroupPageReqVO(); - reqVO.setName("源码"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - reqVO.setCreateTime((new LocalDateTime[]{buildTime(2021, 11, 10),buildTime(2021, 11, 12)})); - - // 调用 - PageResult pageResult = userGroupService.getUserGroupPage(reqVO); - // 断言 - Assertions.assertEquals(1, pageResult.getTotal()); - Assertions.assertEquals(1, pageResult.getList().size()); - AssertUtils.assertPojoEquals(dbUserGroup, pageResult.getList().get(0)); - } - -} diff --git a/win-module-bpm/win-module-bpm-biz/src/test/resources/application-unit-test.yaml b/win-module-bpm/win-module-bpm-biz/src/test/resources/application-unit-test.yaml index d6e5f2c1..eefc6e63 100644 --- a/win-module-bpm/win-module-bpm-biz/src/test/resources/application-unit-test.yaml +++ b/win-module-bpm/win-module-bpm-biz/src/test/resources/application-unit-test.yaml @@ -36,9 +36,9 @@ mybatis-plus: --- #################### 监控相关配置 #################### ---- #################### 芋道相关配置 #################### +--- #################### 闻荫相关配置 #################### -# 芋道配置项,设置当前项目所有自定义的配置 +# 闻荫配置项,设置当前项目所有自定义的配置 win: info: base-package: com.win.module diff --git a/win-module-infra/win-module-infra-api/src/main/java/com/win/module/infra/api/file/FileApi.java b/win-module-infra/win-module-infra-api/src/main/java/com/win/module/infra/api/file/FileApi.java index 02f19b70..6c15c21f 100644 --- a/win-module-infra/win-module-infra-api/src/main/java/com/win/module/infra/api/file/FileApi.java +++ b/win-module-infra/win-module-infra-api/src/main/java/com/win/module/infra/api/file/FileApi.java @@ -3,7 +3,7 @@ package com.win.module.infra.api.file; /** * 文件 API 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface FileApi { diff --git a/win-module-infra/win-module-infra-api/src/main/java/com/win/module/infra/api/logger/ApiAccessLogApi.java b/win-module-infra/win-module-infra-api/src/main/java/com/win/module/infra/api/logger/ApiAccessLogApi.java index 1fe20bad..24c94882 100644 --- a/win-module-infra/win-module-infra-api/src/main/java/com/win/module/infra/api/logger/ApiAccessLogApi.java +++ b/win-module-infra/win-module-infra-api/src/main/java/com/win/module/infra/api/logger/ApiAccessLogApi.java @@ -7,7 +7,7 @@ import javax.validation.Valid; /** * API 访问日志的 API 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface ApiAccessLogApi { diff --git a/win-module-infra/win-module-infra-api/src/main/java/com/win/module/infra/api/logger/ApiErrorLogApi.java b/win-module-infra/win-module-infra-api/src/main/java/com/win/module/infra/api/logger/ApiErrorLogApi.java index 8c892f2b..883707d2 100644 --- a/win-module-infra/win-module-infra-api/src/main/java/com/win/module/infra/api/logger/ApiErrorLogApi.java +++ b/win-module-infra/win-module-infra-api/src/main/java/com/win/module/infra/api/logger/ApiErrorLogApi.java @@ -7,7 +7,7 @@ import javax.validation.Valid; /** * API 错误日志的 API 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface ApiErrorLogApi { diff --git a/win-module-infra/win-module-infra-api/src/main/java/com/win/module/infra/api/logger/dto/ApiAccessLogCreateReqDTO.java b/win-module-infra/win-module-infra-api/src/main/java/com/win/module/infra/api/logger/dto/ApiAccessLogCreateReqDTO.java index 0962a174..a34b6083 100644 --- a/win-module-infra/win-module-infra-api/src/main/java/com/win/module/infra/api/logger/dto/ApiAccessLogCreateReqDTO.java +++ b/win-module-infra/win-module-infra-api/src/main/java/com/win/module/infra/api/logger/dto/ApiAccessLogCreateReqDTO.java @@ -8,7 +8,7 @@ import java.time.LocalDateTime; /** * API 访问日志 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class ApiAccessLogCreateReqDTO { diff --git a/win-module-infra/win-module-infra-api/src/main/java/com/win/module/infra/api/logger/dto/ApiErrorLogCreateReqDTO.java b/win-module-infra/win-module-infra-api/src/main/java/com/win/module/infra/api/logger/dto/ApiErrorLogCreateReqDTO.java index 25e596dd..3c8264f2 100644 --- a/win-module-infra/win-module-infra-api/src/main/java/com/win/module/infra/api/logger/dto/ApiErrorLogCreateReqDTO.java +++ b/win-module-infra/win-module-infra-api/src/main/java/com/win/module/infra/api/logger/dto/ApiErrorLogCreateReqDTO.java @@ -8,7 +8,7 @@ import java.time.LocalDateTime; /** * API 错误日志 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class ApiErrorLogCreateReqDTO { diff --git a/win-module-infra/win-module-infra-api/src/main/java/com/win/module/infra/enums/DictTypeConstants.java b/win-module-infra/win-module-infra-api/src/main/java/com/win/module/infra/enums/DictTypeConstants.java index ee3b2d33..625380b8 100644 --- a/win-module-infra/win-module-infra-api/src/main/java/com/win/module/infra/enums/DictTypeConstants.java +++ b/win-module-infra/win-module-infra-api/src/main/java/com/win/module/infra/enums/DictTypeConstants.java @@ -3,7 +3,7 @@ package com.win.module.infra.enums; /** * Infra 字典类型的枚举类 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface DictTypeConstants { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/api/file/FileApiImpl.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/api/file/FileApiImpl.java index e5ba5c23..dcc2ae97 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/api/file/FileApiImpl.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/api/file/FileApiImpl.java @@ -9,7 +9,7 @@ import javax.annotation.Resource; /** * 文件 API 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/api/logger/ApiAccessLogApiImpl.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/api/logger/ApiAccessLogApiImpl.java index 090b77d6..ab593eb4 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/api/logger/ApiAccessLogApiImpl.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/api/logger/ApiAccessLogApiImpl.java @@ -10,7 +10,7 @@ import javax.annotation.Resource; /** * API 访问日志的 API 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/api/logger/ApiErrorLogApiImpl.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/api/logger/ApiErrorLogApiImpl.java index fe5fd503..497a1035 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/api/logger/ApiErrorLogApiImpl.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/api/logger/ApiErrorLogApiImpl.java @@ -10,7 +10,7 @@ import javax.annotation.Resource; /** * API 访问日志的 API 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/codegen/CodegenController.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/codegen/CodegenController.java index a9dd63d6..4fb08e70 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/codegen/CodegenController.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/codegen/CodegenController.java @@ -50,7 +50,7 @@ public class CodegenController { @Parameters({ @Parameter(name = "dataSourceConfigId", description = "数据源配置的编号", required = true, example = "1"), @Parameter(name = "name", description = "表名,模糊匹配", example = "win"), - @Parameter(name = "comment", description = "描述,模糊匹配", example = "芋道") + @Parameter(name = "comment", description = "描述,模糊匹配", example = "闻荫") }) @PreAuthorize("@ss.hasPermission('infra:codegen:query')") public CommonResult> getDatabaseTableList( diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/codegen/vo/table/CodegenTableBaseVO.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/codegen/vo/table/CodegenTableBaseVO.java index c00c3061..77f396df 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/codegen/vo/table/CodegenTableBaseVO.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/codegen/vo/table/CodegenTableBaseVO.java @@ -20,7 +20,7 @@ public class CodegenTableBaseVO { @NotNull(message = "表名称不能为空") private String tableName; - @Schema(description = "表描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "表描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") @NotNull(message = "表描述不能为空") private String tableComment; @@ -43,7 +43,7 @@ public class CodegenTableBaseVO { @NotNull(message = "类描述不能为空") private String classComment; - @Schema(description = "作者", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道源码") + @Schema(description = "作者", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫源码") @NotNull(message = "作者不能为空") private String author; diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/codegen/vo/table/CodegenTablePageReqVO.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/codegen/vo/table/CodegenTablePageReqVO.java index 1ef6d90a..5b057a31 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/codegen/vo/table/CodegenTablePageReqVO.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/codegen/vo/table/CodegenTablePageReqVO.java @@ -20,7 +20,7 @@ public class CodegenTablePageReqVO extends PageParam { @Schema(description = "表名称,模糊匹配", example = "win") private String tableName; - @Schema(description = "表描述,模糊匹配", example = "芋道") + @Schema(description = "表描述,模糊匹配", example = "闻荫") private String tableComment; @Schema(description = "实体,模糊匹配", example = "Win") diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/codegen/vo/table/DatabaseTableRespVO.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/codegen/vo/table/DatabaseTableRespVO.java index 1c8d44d3..7a6a3790 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/codegen/vo/table/DatabaseTableRespVO.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/codegen/vo/table/DatabaseTableRespVO.java @@ -10,7 +10,7 @@ public class DatabaseTableRespVO { @Schema(description = "表名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "yuanma") private String name; - @Schema(description = "表描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道源码") + @Schema(description = "表描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫源码") private String comment; } diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/job/vo/job/JobExcelVO.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/job/vo/job/JobExcelVO.java index f0422587..3aeb015b 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/job/vo/job/JobExcelVO.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/job/vo/job/JobExcelVO.java @@ -11,7 +11,7 @@ import java.time.LocalDateTime; /** * 定时任务 Excel VO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class JobExcelVO { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogBaseVO.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogBaseVO.java index 17517a28..32bb6232 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogBaseVO.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogBaseVO.java @@ -69,7 +69,7 @@ public class ApiAccessLogBaseVO { @NotNull(message = "结果码不能为空") private Integer resultCode; - @Schema(description = "结果提示", example = "芋道源码,牛逼!") + @Schema(description = "结果提示", example = "闻荫源码,牛逼!") private String resultMsg; } diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogExcelVO.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogExcelVO.java index 290cc957..5cd7da60 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogExcelVO.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogExcelVO.java @@ -11,7 +11,7 @@ import java.time.LocalDateTime; /** * API 访问日志 Excel VO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class ApiAccessLogExcelVO { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogExcelVO.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogExcelVO.java index 2662632a..f2b82ec6 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogExcelVO.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogExcelVO.java @@ -11,7 +11,7 @@ import java.time.LocalDateTime; /** * API 错误日志 Excel VO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class ApiErrorLogExcelVO { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/test/vo/TestDemoExcelVO.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/test/vo/TestDemoExcelVO.java index 906bc9aa..c5dbde1e 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/test/vo/TestDemoExcelVO.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/controller/admin/test/vo/TestDemoExcelVO.java @@ -9,7 +9,7 @@ import com.alibaba.excel.annotation.ExcelProperty; /** * 字典类型 Excel VO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class TestDemoExcelVO { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/convert/db/DataSourceConfigConvert.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/convert/db/DataSourceConfigConvert.java index 4deafeef..9e6b224d 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/convert/db/DataSourceConfigConvert.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/convert/db/DataSourceConfigConvert.java @@ -12,7 +12,7 @@ import com.win.module.infra.dal.dataobject.db.DataSourceConfigDO; /** * 数据源配置 Convert * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper public interface DataSourceConfigConvert { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/convert/file/FileConfigConvert.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/convert/file/FileConfigConvert.java index 353661ca..65e6a9aa 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/convert/file/FileConfigConvert.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/convert/file/FileConfigConvert.java @@ -14,7 +14,7 @@ import java.util.List; /** * 文件配置 Convert * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper public interface FileConfigConvert { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/convert/job/JobConvert.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/convert/job/JobConvert.java index 565744ad..77fc339f 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/convert/job/JobConvert.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/convert/job/JobConvert.java @@ -14,7 +14,7 @@ import java.util.List; /** * 定时任务 Convert * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper public interface JobConvert { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/convert/logger/ApiAccessLogConvert.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/convert/logger/ApiAccessLogConvert.java index 21723b67..6b319871 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/convert/logger/ApiAccessLogConvert.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/convert/logger/ApiAccessLogConvert.java @@ -13,7 +13,7 @@ import java.util.List; /** * API 访问日志 Convert * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper public interface ApiAccessLogConvert { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/convert/logger/ApiErrorLogConvert.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/convert/logger/ApiErrorLogConvert.java index ae7bffd3..e169ce17 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/convert/logger/ApiErrorLogConvert.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/convert/logger/ApiErrorLogConvert.java @@ -13,7 +13,7 @@ import java.util.List; /** * API 错误日志 Convert * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper public interface ApiErrorLogConvert { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/convert/test/TestDemoConvert.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/convert/test/TestDemoConvert.java index 30336cc1..1de637cb 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/convert/test/TestDemoConvert.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/convert/test/TestDemoConvert.java @@ -14,7 +14,7 @@ import java.util.List; /** * 字典类型 Convert * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper public interface TestDemoConvert { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/codegen/CodegenColumnDO.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/codegen/CodegenColumnDO.java index 6de0b05f..b1e78919 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/codegen/CodegenColumnDO.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/codegen/CodegenColumnDO.java @@ -14,7 +14,7 @@ import lombok.experimental.Accessors; /** * 代码生成 column 字段定义 * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName(value = "infra_codegen_column", autoResultMap = true) @KeySequence("infra_codegen_column_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/codegen/CodegenTableDO.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/codegen/CodegenTableDO.java index 743b95f6..962fc2b2 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/codegen/CodegenTableDO.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/codegen/CodegenTableDO.java @@ -16,7 +16,7 @@ import lombok.experimental.Accessors; /** * 代码生成 table 表定义 * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName(value = "infra_codegen_table", autoResultMap = true) @KeySequence("infra_codegen_table_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/config/ConfigDO.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/config/ConfigDO.java index 02dd439b..c42e250b 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/config/ConfigDO.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/config/ConfigDO.java @@ -12,7 +12,7 @@ import lombok.ToString; /** * 参数配置表 * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName("infra_config") @KeySequence("infra_config_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/db/DataSourceConfigDO.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/db/DataSourceConfigDO.java index e04feae1..8ba15e17 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/db/DataSourceConfigDO.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/db/DataSourceConfigDO.java @@ -10,7 +10,7 @@ import lombok.Data; /** * 数据源配置 * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName(value = "infra_data_source_config", autoResultMap = true) @KeySequence("infra_data_source_config_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/file/FileConfigDO.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/file/FileConfigDO.java index 4b46ddeb..738b0f39 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/file/FileConfigDO.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/file/FileConfigDO.java @@ -12,7 +12,7 @@ import lombok.*; /** * 文件配置表 * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName(value = "infra_file_config", autoResultMap = true) @KeySequence("infra_file_config_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/file/FileContentDO.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/file/FileContentDO.java index a64ce7ca..a7d4c3fd 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/file/FileContentDO.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/file/FileContentDO.java @@ -12,7 +12,7 @@ import lombok.*; * * 专门用于存储 {@link com.win.framework.file.core.client.db.DBFileClient} 的文件内容 * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName("infra_file_content") @KeySequence("infra_file_content_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/file/FileDO.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/file/FileDO.java index c5bff8ef..83034a01 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/file/FileDO.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/file/FileDO.java @@ -9,7 +9,7 @@ import lombok.*; * 文件表 * 每次文件上传,都会记录一条记录到该表中 * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName("infra_file") @KeySequence("infra_file_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/job/JobDO.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/job/JobDO.java index 7f41fb86..421bde14 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/job/JobDO.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/job/JobDO.java @@ -10,7 +10,7 @@ import lombok.*; /** * 定时任务 DO * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName("infra_job") @KeySequence("infra_job_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/job/JobLogDO.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/job/JobLogDO.java index 5084529a..70e13c1c 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/job/JobLogDO.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/job/JobLogDO.java @@ -12,7 +12,7 @@ import java.time.LocalDateTime; /** * 定时任务的执行日志 * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName("infra_job_log") @KeySequence("infra_job_log_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/logger/ApiAccessLogDO.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/logger/ApiAccessLogDO.java index f9de9d6e..33774da4 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/logger/ApiAccessLogDO.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/logger/ApiAccessLogDO.java @@ -13,7 +13,7 @@ import java.time.LocalDateTime; /** * API 访问日志 * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName("infra_api_access_log") @KeySequence(value = "infra_api_access_log_seq") diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/logger/ApiErrorLogDO.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/logger/ApiErrorLogDO.java index 4079cdd1..87d602a3 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/logger/ApiErrorLogDO.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/logger/ApiErrorLogDO.java @@ -13,7 +13,7 @@ import java.time.LocalDateTime; /** * API 异常数据 * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName("infra_api_error_log") @Data diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/test/TestDemoDO.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/test/TestDemoDO.java index 11b82a93..6b900271 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/test/TestDemoDO.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/dataobject/test/TestDemoDO.java @@ -9,7 +9,7 @@ import lombok.*; /** * 字典类型 DO * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName("infra_test_demo") @KeySequence("infra_test_demo_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/db/DataSourceConfigMapper.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/db/DataSourceConfigMapper.java index 5d80ee99..510dd0e5 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/db/DataSourceConfigMapper.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/db/DataSourceConfigMapper.java @@ -7,7 +7,7 @@ import org.apache.ibatis.annotations.Mapper; /** * 数据源配置 Mapper * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper public interface DataSourceConfigMapper extends BaseMapperX { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/file/FileMapper.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/file/FileMapper.java index b2357f43..eaa19f4b 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/file/FileMapper.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/file/FileMapper.java @@ -10,7 +10,7 @@ import org.apache.ibatis.annotations.Mapper; /** * 文件操作 Mapper * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper public interface FileMapper extends BaseMapperX { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/job/JobLogMapper.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/job/JobLogMapper.java index e40cae04..f3cf680b 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/job/JobLogMapper.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/job/JobLogMapper.java @@ -13,7 +13,7 @@ import java.util.List; /** * 任务日志 Mapper * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper public interface JobLogMapper extends BaseMapperX { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/job/JobMapper.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/job/JobMapper.java index 05cea28f..42e3cd14 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/job/JobMapper.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/job/JobMapper.java @@ -13,7 +13,7 @@ import java.util.List; /** * 定时任务 Mapper * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper public interface JobMapper extends BaseMapperX { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/logger/ApiAccessLogMapper.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/logger/ApiAccessLogMapper.java index 1183d3af..282d9647 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/logger/ApiAccessLogMapper.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/logger/ApiAccessLogMapper.java @@ -13,7 +13,7 @@ import java.util.List; /** * API 访问日志 Mapper * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper public interface ApiAccessLogMapper extends BaseMapperX { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/logger/ApiErrorLogMapper.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/logger/ApiErrorLogMapper.java index 3ab7cf62..e0fef0e4 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/logger/ApiErrorLogMapper.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/logger/ApiErrorLogMapper.java @@ -13,7 +13,7 @@ import java.util.List; /** * API 错误日志 Mapper * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper public interface ApiErrorLogMapper extends BaseMapperX { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/test/TestDemoMapper.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/test/TestDemoMapper.java index efc56a9e..68419c85 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/test/TestDemoMapper.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/test/TestDemoMapper.java @@ -13,7 +13,7 @@ import java.util.List; /** * 字典类型 Mapper * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper public interface TestDemoMapper extends BaseMapperX { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/enums/codegen/CodegenFrontTypeEnum.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/enums/codegen/CodegenFrontTypeEnum.java index cf36f31c..ba8e1383 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/enums/codegen/CodegenFrontTypeEnum.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/enums/codegen/CodegenFrontTypeEnum.java @@ -6,7 +6,7 @@ import lombok.Getter; /** * 代码生成的前端类型枚举 * - * @author 芋道源码 + * @author 闻荫源码 */ @AllArgsConstructor @Getter diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/enums/codegen/CodegenSceneEnum.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/enums/codegen/CodegenSceneEnum.java index 3f03b0cc..932f81b3 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/enums/codegen/CodegenSceneEnum.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/enums/codegen/CodegenSceneEnum.java @@ -8,7 +8,7 @@ import static cn.hutool.core.util.ArrayUtil.*; /** * 代码生成的场景枚举 * - * @author 芋道源码 + * @author 闻荫源码 */ @AllArgsConstructor @Getter diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/enums/codegen/CodegenTemplateTypeEnum.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/enums/codegen/CodegenTemplateTypeEnum.java index e91ced02..fe4be880 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/enums/codegen/CodegenTemplateTypeEnum.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/enums/codegen/CodegenTemplateTypeEnum.java @@ -6,7 +6,7 @@ import lombok.Getter; /** * 代码生成模板类型 * - * @author 芋道源码 + * @author 闻荫源码 */ @AllArgsConstructor @Getter diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/enums/job/JobLogStatusEnum.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/enums/job/JobLogStatusEnum.java index 7aeccf18..230ce957 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/enums/job/JobLogStatusEnum.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/enums/job/JobLogStatusEnum.java @@ -6,7 +6,7 @@ import lombok.Getter; /** * 任务日志的状态枚举 * - * @author 芋道源码 + * @author 闻荫源码 */ @Getter @AllArgsConstructor diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/enums/job/JobStatusEnum.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/enums/job/JobStatusEnum.java index b5fbfcd7..d86bb943 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/enums/job/JobStatusEnum.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/enums/job/JobStatusEnum.java @@ -11,7 +11,7 @@ import java.util.Set; /** * 任务状态的枚举 * - * @author 芋道源码 + * @author 闻荫源码 */ @Getter @AllArgsConstructor diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/enums/logger/ApiErrorLogProcessStatusEnum.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/enums/logger/ApiErrorLogProcessStatusEnum.java index 89af0045..1f32105c 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/enums/logger/ApiErrorLogProcessStatusEnum.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/enums/logger/ApiErrorLogProcessStatusEnum.java @@ -6,7 +6,7 @@ import lombok.Getter; /** * API 异常数据的处理状态 * - * @author 芋道源码 + * @author 闻荫源码 */ @AllArgsConstructor @Getter diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/framework/package-info.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/framework/package-info.java index 0cb7189b..9b5fba99 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/framework/package-info.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/framework/package-info.java @@ -1,6 +1,6 @@ /** * 属于 infra 模块的 framework 封装 * - * @author 芋道源码 + * @author 闻荫源码 */ package com.win.module.infra.framework; diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/framework/web/config/InfraWebConfiguration.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/framework/web/config/InfraWebConfiguration.java index 0613a27c..f55a6edb 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/framework/web/config/InfraWebConfiguration.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/framework/web/config/InfraWebConfiguration.java @@ -8,7 +8,7 @@ import org.springframework.context.annotation.Configuration; /** * infra 模块的 web 组件的 Configuration * - * @author 芋道源码 + * @author 闻荫源码 */ @Configuration(proxyBeanMethods = false) public class InfraWebConfiguration { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/codegen/CodegenService.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/codegen/CodegenService.java index 712aff31..8f96e790 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/codegen/CodegenService.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/codegen/CodegenService.java @@ -14,7 +14,7 @@ import java.util.Map; /** * 代码生成 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface CodegenService { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/codegen/CodegenServiceImpl.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/codegen/CodegenServiceImpl.java index c91820fe..7aa4d64b 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/codegen/CodegenServiceImpl.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/codegen/CodegenServiceImpl.java @@ -38,7 +38,7 @@ import static com.win.module.infra.enums.ErrorCodeConstants.*; /** * 代码生成 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service public class CodegenServiceImpl implements CodegenService { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/codegen/inner/CodegenEngine.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/codegen/inner/CodegenEngine.java index 68f9f123..fc9fc6da 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/codegen/inner/CodegenEngine.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/codegen/inner/CodegenEngine.java @@ -47,7 +47,7 @@ import static cn.hutool.core.text.CharSequenceUtil.*; * * 考虑到 Java 模板引擎的框架非常多,Freemarker、Velocity、Thymeleaf 等等,所以我们采用 hutool 封装的 {@link cn.hutool.extra.template.Template} 抽象 * - * @author 芋道源码 + * @author 闻荫源码 */ @Component public class CodegenEngine { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/config/ConfigService.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/config/ConfigService.java index bae8114f..e73bd262 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/config/ConfigService.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/config/ConfigService.java @@ -13,7 +13,7 @@ import java.util.List; /** * 参数配置 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface ConfigService { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/db/DataSourceConfigService.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/db/DataSourceConfigService.java index 5da9397b..073a1ba1 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/db/DataSourceConfigService.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/db/DataSourceConfigService.java @@ -10,7 +10,7 @@ import java.util.List; /** * 数据源配置 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface DataSourceConfigService { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/db/DataSourceConfigServiceImpl.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/db/DataSourceConfigServiceImpl.java index f853db17..abdb6c9d 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/db/DataSourceConfigServiceImpl.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/db/DataSourceConfigServiceImpl.java @@ -22,7 +22,7 @@ import static com.win.module.infra.enums.ErrorCodeConstants.DATA_SOURCE_CONFIG_N /** * 数据源配置 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/db/DatabaseTableService.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/db/DatabaseTableService.java index 342dc8cc..7071019d 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/db/DatabaseTableService.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/db/DatabaseTableService.java @@ -7,7 +7,7 @@ import java.util.List; /** * 数据库表 Service * - * @author 芋道源码 + * @author 闻荫源码 */ public interface DatabaseTableService { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/db/DatabaseTableServiceImpl.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/db/DatabaseTableServiceImpl.java index f6b9b201..70e0a2d4 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/db/DatabaseTableServiceImpl.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/db/DatabaseTableServiceImpl.java @@ -20,7 +20,7 @@ import java.util.stream.Collectors; /** * 数据库表 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service public class DatabaseTableServiceImpl implements DatabaseTableService { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/file/FileConfigService.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/file/FileConfigService.java index 1549ab3d..1bf570a2 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/file/FileConfigService.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/file/FileConfigService.java @@ -12,7 +12,7 @@ import javax.validation.Valid; /** * 文件配置 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface FileConfigService { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/file/FileConfigServiceImpl.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/file/FileConfigServiceImpl.java index 7f3767c4..3f7ebdd5 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/file/FileConfigServiceImpl.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/file/FileConfigServiceImpl.java @@ -37,7 +37,7 @@ import static com.win.module.infra.enums.ErrorCodeConstants.FILE_CONFIG_NOT_EXIS /** * 文件配置 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/file/FileService.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/file/FileService.java index 45dda005..4eab45e2 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/file/FileService.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/file/FileService.java @@ -7,7 +7,7 @@ import com.win.module.infra.dal.dataobject.file.FileDO; /** * 文件 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface FileService { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/file/FileServiceImpl.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/file/FileServiceImpl.java index 1fc56e15..cd041810 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/file/FileServiceImpl.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/file/FileServiceImpl.java @@ -20,7 +20,7 @@ import static com.win.module.infra.enums.ErrorCodeConstants.FILE_NOT_EXISTS; /** * 文件 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service public class FileServiceImpl implements FileService { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/job/JobLogService.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/job/JobLogService.java index e84990dd..5308274f 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/job/JobLogService.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/job/JobLogService.java @@ -12,7 +12,7 @@ import java.util.List; /** * Job 日志 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface JobLogService extends JobLogFrameworkService { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/job/JobLogServiceImpl.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/job/JobLogServiceImpl.java index 85914295..25137e23 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/job/JobLogServiceImpl.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/job/JobLogServiceImpl.java @@ -19,7 +19,7 @@ import java.util.List; /** * Job 日志 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/job/JobService.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/job/JobService.java index 8e609522..2a85338b 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/job/JobService.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/job/JobService.java @@ -15,7 +15,7 @@ import java.util.List; /** * 定时任务 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface JobService { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/job/JobServiceImpl.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/job/JobServiceImpl.java index 55ebd940..a0d1ae6a 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/job/JobServiceImpl.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/job/JobServiceImpl.java @@ -27,7 +27,7 @@ import static com.win.framework.common.util.collection.CollectionUtils.containsA /** * 定时任务 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/logger/ApiAccessLogService.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/logger/ApiAccessLogService.java index 3088ae3a..180f4238 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/logger/ApiAccessLogService.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/logger/ApiAccessLogService.java @@ -11,7 +11,7 @@ import java.util.List; /** * API 访问日志 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface ApiAccessLogService { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/logger/ApiAccessLogServiceImpl.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/logger/ApiAccessLogServiceImpl.java index 9b130665..47d9f118 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/logger/ApiAccessLogServiceImpl.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/logger/ApiAccessLogServiceImpl.java @@ -16,7 +16,7 @@ import java.util.List; /** * API 访问日志 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/logger/ApiErrorLogService.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/logger/ApiErrorLogService.java index 0e7cf6c0..cc78a6a6 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/logger/ApiErrorLogService.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/logger/ApiErrorLogService.java @@ -11,7 +11,7 @@ import java.util.List; /** * API 错误日志 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface ApiErrorLogService { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/logger/ApiErrorLogServiceImpl.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/logger/ApiErrorLogServiceImpl.java index 13a665fe..13d9d0b2 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/logger/ApiErrorLogServiceImpl.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/logger/ApiErrorLogServiceImpl.java @@ -22,7 +22,7 @@ import static com.win.module.infra.enums.ErrorCodeConstants.API_ERROR_LOG_PROCES /** * API 错误日志 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/test/TestDemoService.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/test/TestDemoService.java index e1ce9742..991a4480 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/test/TestDemoService.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/test/TestDemoService.java @@ -14,7 +14,7 @@ import java.util.List; /** * 字典类型 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface TestDemoService { diff --git a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/test/TestDemoServiceImpl.java b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/test/TestDemoServiceImpl.java index 2581261a..f2c8ad5e 100644 --- a/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/test/TestDemoServiceImpl.java +++ b/win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/service/test/TestDemoServiceImpl.java @@ -23,7 +23,7 @@ import static com.win.module.infra.enums.ErrorCodeConstants.TEST_DEMO_NOT_EXISTS /** * 字典类型 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/dal/mysql/codegen/SchemaColumnMapperTest.java b/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/dal/mysql/codegen/SchemaColumnMapperTest.java deleted file mode 100644 index df4a0ef3..00000000 --- a/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/dal/mysql/codegen/SchemaColumnMapperTest.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.win.module.infra.dal.mysql.codegen; - -import com.win.module.tool.dal.dataobject.codegen.SchemaColumnDO; -import com.win.module.tool.test.BaseDbUnitTest; -import org.junit.jupiter.api.Test; - -import javax.annotation.Resource; -import java.util.List; - -import static org.junit.jupiter.api.Assertions.assertTrue; - -public class SchemaColumnMapperTest extends BaseDbUnitTest { - - @Resource - private SchemaColumnMapper schemaColumnMapper; - - @Test - public void testSelectListByTableName() { - List columns = schemaColumnMapper.selectListByTableName("", "inf_config"); - assertTrue(columns.size() > 0); - } - -} diff --git a/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/dal/mysql/package-info.java b/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/dal/mysql/package-info.java deleted file mode 100644 index a2a7f822..00000000 --- a/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/dal/mysql/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * 占位 - */ -package com.win.module.infra.dal.mysql; diff --git a/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/dal/package-info.java b/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/dal/package-info.java deleted file mode 100644 index 5baf2e62..00000000 --- a/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/dal/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * 占位 - */ -package com.win.module.infra.dal; diff --git a/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/service/codegen/CodegenEngineTest.java b/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/service/codegen/CodegenEngineTest.java deleted file mode 100644 index a2037d6d..00000000 --- a/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/service/codegen/CodegenEngineTest.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.win.module.infra.service.codegen; - -import com.win.module.infra.dal.dataobject.codegen.CodegenColumnDO; -import com.win.module.infra.dal.dataobject.codegen.CodegenTableDO; -import com.win.module.infra.dal.mysql.codegen.CodegenColumnMapper; -import com.win.module.infra.dal.mysql.codegen.CodegenTableMapper; -import com.win.module.infra.service.codegen.inner.CodegenEngine; -import com.win.module.infra.test.BaseDbUnitTest; -import org.junit.jupiter.api.Test; - -import javax.annotation.Resource; -import java.util.List; -import java.util.Map; - -public class CodegenEngineTest extends BaseDbUnitTest { - - @Resource - private CodegenTableMapper codegenTableMapper; - @Resource - private CodegenColumnMapper codegenColumnMapper; - - @Resource - private CodegenEngine codegenEngine; - - @Test - public void testExecute() { - CodegenTableDO table = codegenTableMapper.selectById(20); - List columns = codegenColumnMapper.selectListByTableId(table.getId()); - Map result = codegenEngine.execute(table, columns); - result.forEach((s, s2) -> System.out.println(s2)); -// System.out.println(result.get("vue/views/system/test/index.vue")); - } - -} diff --git a/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/service/codegen/CodegenSQLParserTest.java b/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/service/codegen/CodegenSQLParserTest.java deleted file mode 100644 index 7b40f8a9..00000000 --- a/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/service/codegen/CodegenSQLParserTest.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.win.module.infra.service.codegen; - -import com.win.module.infra.service.codegen.inner.CodegenSQLParser; -import com.win.module.infra.test.BaseDbUnitTest; -import org.junit.jupiter.api.Test; - -public class CodegenSQLParserTest extends BaseDbUnitTest { - - @Test - public void testParse() { - String sql = "CREATE TABLE `infra_test_demo` (\n" + - " `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号',\n" + - " `name` varchar(100) NOT NULL DEFAULT '' COMMENT '名字',\n" + - " `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态',\n" + - " `type` tinyint(4) NOT NULL COMMENT '类型',\n" + - " `category` tinyint(4) NOT NULL COMMENT '分类',\n" + - " `remark` varchar(500) DEFAULT NULL COMMENT '备注',\n" + - " `create_by` varchar(64) DEFAULT '' COMMENT '创建者',\n" + - " `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',\n" + - " `update_by` varchar(64) DEFAULT '' COMMENT '更新者',\n" + - " `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',\n" + - " `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',\n" + - " PRIMARY KEY (`id`) USING BTREE\n" + - ") ENGINE=InnoDB AUTO_INCREMENT=108 DEFAULT CHARSET=utf8mb4 COMMENT='字典类型表';"; - CodegenSQLParser.parse(sql); - // TODO 芋艿:后续完善断言 - } - -} diff --git a/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/service/codegen/CodegenServiceImplTest.java b/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/service/codegen/CodegenServiceImplTest.java deleted file mode 100644 index 192a1a59..00000000 --- a/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/service/codegen/CodegenServiceImplTest.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.win.module.infra.service.codegen; - -import com.win.module.infra.test.BaseDbUnitTest; -import org.junit.jupiter.api.Test; - -import javax.annotation.Resource; - -class CodegenServiceImplTest extends BaseDbUnitTest { - - @Resource - private CodegenServiceImpl codegenService; - - @Test - public void tetCreateCodegenTable() { - codegenService.createCodegen(0L, "infra_test_demo"); -// infraCodegenService.createCodegenTable("infra_codegen_table"); -// infraCodegenService.createCodegen("infra_codegen_column"); - } - -} diff --git a/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/service/package-info.java b/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/service/package-info.java deleted file mode 100644 index ca8d5bbc..00000000 --- a/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/service/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * 占位 - */ -package com.win.module.infra.service; diff --git a/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/test/BaseDbAndRedisIntegrationTest.java b/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/test/BaseDbAndRedisIntegrationTest.java deleted file mode 100644 index 5d5f703a..00000000 --- a/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/test/BaseDbAndRedisIntegrationTest.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.win.module.infra.test; - -import com.win.framework.datasource.config.WinDataSourceAutoConfiguration; -import com.win.framework.mybatis.config.WinMybatisAutoConfiguration; -import com.win.framework.redis.config.WinRedisAutoConfiguration; -import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration; -import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration; -import org.redisson.spring.starter.RedissonAutoConfiguration; -import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.context.annotation.Import; -import org.springframework.test.context.ActiveProfiles; - -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseDbAndRedisIntegrationTest.Application.class) -@ActiveProfiles("integration-test") // 设置使用 application-integration-test 配置文件 -public class BaseDbAndRedisIntegrationTest { - - @Import({ - // DB 配置类 - DynamicDataSourceAutoConfiguration.class, // Dynamic Datasource 配置类 - WinDataSourceAutoConfiguration.class, // 自己的 DB 配置类 - DataSourceAutoConfiguration.class, // Spring DB 自动配置类 - DataSourceTransactionManagerAutoConfiguration.class, // Spring 事务自动配置类 - // MyBatis 配置类 - WinMybatisAutoConfiguration.class, // 自己的 MyBatis 配置类 - MybatisPlusAutoConfiguration.class, // MyBatis 的自动配置类 - - // Redis 配置类 - RedisAutoConfiguration.class, // Spring Redis 自动配置类 - WinRedisAutoConfiguration.class, // 自己的 Redis 配置类 - RedissonAutoConfiguration.class, // Redisson 自动高配置类 - }) - public static class Application { - } - -} diff --git a/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/test/BaseRedisIntegrationTest.java b/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/test/BaseRedisIntegrationTest.java deleted file mode 100644 index d4d5109d..00000000 --- a/win-module-infra/win-module-infra-biz/src/test-integration/java/com/win/module/infra/test/BaseRedisIntegrationTest.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.win.module.infra.test; - -import com.win.framework.redis.config.WinRedisAutoConfiguration; -import org.redisson.spring.starter.RedissonAutoConfiguration; -import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.context.annotation.Import; -import org.springframework.test.context.ActiveProfiles; - -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseRedisIntegrationTest.Application.class) -@ActiveProfiles("integration-test") // 设置使用 application-integration-test 配置文件 -public class BaseRedisIntegrationTest { - - @Import({ - // Redis 配置类 - RedisAutoConfiguration.class, // Spring Redis 自动配置类 - WinRedisAutoConfiguration.class, // 自己的 Redis 配置类 - RedissonAutoConfiguration.class, // Redisson 自动高配置类 - }) - public static class Application { - } - -} diff --git a/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/DefaultDatabaseQueryTest.java b/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/DefaultDatabaseQueryTest.java deleted file mode 100644 index a73311f7..00000000 --- a/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/DefaultDatabaseQueryTest.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.win.module.infra.service; - -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.generator.query.DefaultQuery; -import com.baomidou.mybatisplus.generator.config.DataSourceConfig; -import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder; -import com.baomidou.mybatisplus.generator.config.po.TableInfo; - -import java.util.List; - -public class DefaultDatabaseQueryTest { - - public static void main(String[] args) { -// DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder("jdbc:oracle:thin:@127.0.0.1:1521:xe", -// "root", "123456").build(); - DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder("jdbc:postgresql://127.0.0.1:5432/ruoyi-vue-pro", - "root", "123456").build(); -// StrategyConfig strategyConfig = new StrategyConfig.Builder().build(); - - ConfigBuilder builder = new ConfigBuilder(null, dataSourceConfig, null, null, null, null); - - DefaultQuery query = new DefaultQuery(builder); - - long time = System.currentTimeMillis(); - List tableInfos = query.queryTables(); - for (TableInfo tableInfo : tableInfos) { - if (StrUtil.startWithAny(tableInfo.getName().toLowerCase(), "act_", "flw_", "qrtz_")) { - continue; - } - System.out.println(String.format("CREATE SEQUENCE %s_seq MINVALUE 1;", tableInfo.getName())); -// System.out.println(String.format("DELETE FROM %s WHERE deleted = '1';", tableInfo.getName())); - } - System.out.println(tableInfos.size()); - System.out.println(System.currentTimeMillis() - time); - } - -} diff --git a/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/config/ConfigServiceImplTest.java b/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/config/ConfigServiceImplTest.java deleted file mode 100644 index b8bab74b..00000000 --- a/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/config/ConfigServiceImplTest.java +++ /dev/null @@ -1,253 +0,0 @@ -package com.win.module.infra.service.config; - -import com.win.framework.common.pojo.PageResult; -import com.win.framework.common.util.collection.ArrayUtils; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.framework.test.core.util.RandomUtils; -import com.win.module.infra.controller.admin.config.vo.ConfigCreateReqVO; -import com.win.module.infra.controller.admin.config.vo.ConfigExportReqVO; -import com.win.module.infra.controller.admin.config.vo.ConfigPageReqVO; -import com.win.module.infra.controller.admin.config.vo.ConfigUpdateReqVO; -import com.win.module.infra.dal.dataobject.config.ConfigDO; -import com.win.module.infra.dal.mysql.config.ConfigMapper; -import com.win.module.infra.enums.config.ConfigTypeEnum; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.List; -import java.util.function.Consumer; - -import static cn.hutool.core.util.RandomUtil.randomEle; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.*; -import static com.win.module.infra.enums.ErrorCodeConstants.*; -import static org.junit.jupiter.api.Assertions.*; - -@Import(ConfigServiceImpl.class) -public class ConfigServiceImplTest extends BaseDbUnitTest { - - @Resource - private ConfigServiceImpl configService; - - @Resource - private ConfigMapper configMapper; - - @Test - public void testCreateConfig_success() { - // 准备参数 - ConfigCreateReqVO reqVO = randomPojo(ConfigCreateReqVO.class); - - // 调用 - Long configId = configService.createConfig(reqVO); - // 断言 - assertNotNull(configId); - // 校验记录的属性是否正确 - ConfigDO config = configMapper.selectById(configId); - assertPojoEquals(reqVO, config); - assertEquals(ConfigTypeEnum.CUSTOM.getType(), config.getType()); - } - - @Test - public void testUpdateConfig_success() { - // mock 数据 - ConfigDO dbConfig = randomConfigDO(); - configMapper.insert(dbConfig);// @Sql: 先插入出一条存在的数据 - // 准备参数 - ConfigUpdateReqVO reqVO = randomPojo(ConfigUpdateReqVO.class, o -> { - o.setId(dbConfig.getId()); // 设置更新的 ID - }); - - // 调用 - configService.updateConfig(reqVO); - // 校验是否更新正确 - ConfigDO config = configMapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, config); - } - - @Test - public void testDeleteConfig_success() { - // mock 数据 - ConfigDO dbConfig = randomConfigDO(o -> { - o.setType(ConfigTypeEnum.CUSTOM.getType()); // 只能删除 CUSTOM 类型 - }); - configMapper.insert(dbConfig);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbConfig.getId(); - - // 调用 - configService.deleteConfig(id); - // 校验数据不存在了 - assertNull(configMapper.selectById(id)); - } - - @Test - public void testDeleteConfig_canNotDeleteSystemType() { - // mock 数据 - ConfigDO dbConfig = randomConfigDO(o -> { - o.setType(ConfigTypeEnum.SYSTEM.getType()); // SYSTEM 不允许删除 - }); - configMapper.insert(dbConfig);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbConfig.getId(); - - // 调用, 并断言异常 - assertServiceException(() -> configService.deleteConfig(id), CONFIG_CAN_NOT_DELETE_SYSTEM_TYPE); - } - - @Test - public void testValidateConfigExists_success() { - // mock 数据 - ConfigDO dbConfigDO = randomConfigDO(); - configMapper.insert(dbConfigDO);// @Sql: 先插入出一条存在的数据 - - // 调用成功 - configService.validateConfigExists(dbConfigDO.getId()); - } - - @Test - public void testValidateConfigExist_notExists() { - assertServiceException(() -> configService.validateConfigExists(randomLongId()), CONFIG_NOT_EXISTS); - } - - @Test - public void testValidateConfigKeyUnique_success() { - // 调用,成功 - configService.validateConfigKeyUnique(randomLongId(), randomString()); - } - - @Test - public void testValidateConfigKeyUnique_keyDuplicateForCreate() { - // 准备参数 - String key = randomString(); - // mock 数据 - configMapper.insert(randomConfigDO(o -> o.setConfigKey(key))); - - // 调用,校验异常 - assertServiceException(() -> configService.validateConfigKeyUnique(null, key), - CONFIG_KEY_DUPLICATE); - } - - @Test - public void testValidateConfigKeyUnique_keyDuplicateForUpdate() { - // 准备参数 - Long id = randomLongId(); - String key = randomString(); - // mock 数据 - configMapper.insert(randomConfigDO(o -> o.setConfigKey(key))); - - // 调用,校验异常 - assertServiceException(() -> configService.validateConfigKeyUnique(id, key), - CONFIG_KEY_DUPLICATE); - } - - @Test - public void testGetConfigPage() { - // mock 数据 - ConfigDO dbConfig = randomConfigDO(o -> { // 等会查询到 - o.setName("芋艿"); - o.setConfigKey("yunai"); - o.setType(ConfigTypeEnum.SYSTEM.getType()); - o.setCreateTime(buildTime(2021, 2, 1)); - }); - configMapper.insert(dbConfig); - // 测试 name 不匹配 - configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setName("土豆"))); - // 测试 key 不匹配 - configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setConfigKey("tudou"))); - // 测试 type 不匹配 - configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setType(ConfigTypeEnum.CUSTOM.getType()))); - // 测试 createTime 不匹配 - configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setCreateTime(buildTime(2021, 1, 1)))); - // 准备参数 - ConfigPageReqVO reqVO = new ConfigPageReqVO(); - reqVO.setName("艿"); - reqVO.setKey("nai"); - reqVO.setType(ConfigTypeEnum.SYSTEM.getType()); - reqVO.setCreateTime(buildBetweenTime(2021, 1, 15, 2021, 2, 15)); - - // 调用 - PageResult pageResult = configService.getConfigPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbConfig, pageResult.getList().get(0)); - } - - @Test - public void testGetConfigList() { - // mock 数据 - ConfigDO dbConfig = randomConfigDO(o -> { // 等会查询到 - o.setName("芋艿"); - o.setConfigKey("yunai"); - o.setType(ConfigTypeEnum.SYSTEM.getType()); - o.setCreateTime(buildTime(2021, 2, 1)); - }); - configMapper.insert(dbConfig); - // 测试 name 不匹配 - configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setName("土豆"))); - // 测试 key 不匹配 - configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setConfigKey("tudou"))); - // 测试 type 不匹配 - configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setType(ConfigTypeEnum.CUSTOM.getType()))); - // 测试 createTime 不匹配 - configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setCreateTime(buildTime(2021, 1, 1)))); - // 准备参数 - ConfigExportReqVO reqVO = new ConfigExportReqVO(); - reqVO.setName("艿"); - reqVO.setKey("nai"); - reqVO.setType(ConfigTypeEnum.SYSTEM.getType()); - reqVO.setCreateTime(buildBetweenTime(2021, 1, 15, 2021, 2, 15)); - - // 调用 - List list = configService.getConfigList(reqVO); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(dbConfig, list.get(0)); - } - - @Test - public void testGetConfig() { - // mock 数据 - ConfigDO dbConfig = randomConfigDO(); - configMapper.insert(dbConfig);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbConfig.getId(); - - // 调用 - ConfigDO config = configService.getConfig(id); - // 断言 - assertNotNull(config); - assertPojoEquals(dbConfig, config); - } - - @Test - public void testGetConfigByKey() { - // mock 数据 - ConfigDO dbConfig = randomConfigDO(); - configMapper.insert(dbConfig);// @Sql: 先插入出一条存在的数据 - // 准备参数 - String key = dbConfig.getConfigKey(); - - // 调用 - ConfigDO config = configService.getConfigByKey(key); - // 断言 - assertNotNull(config); - assertPojoEquals(dbConfig, config); - } - - // ========== 随机对象 ========== - - @SafeVarargs - private static ConfigDO randomConfigDO(Consumer... consumers) { - Consumer consumer = (o) -> { - o.setType(randomEle(ConfigTypeEnum.values()).getType()); // 保证 key 的范围 - }; - return RandomUtils.randomPojo(ConfigDO.class, ArrayUtils.append(consumer, consumers)); - } - -} diff --git a/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/db/DataSourceConfigServiceImplTest.java b/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/db/DataSourceConfigServiceImplTest.java deleted file mode 100644 index 52407a44..00000000 --- a/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/db/DataSourceConfigServiceImplTest.java +++ /dev/null @@ -1,205 +0,0 @@ -package com.win.module.infra.service.db; - -import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.ReflectUtil; -import cn.hutool.crypto.symmetric.AES; -import com.win.framework.mybatis.core.type.EncryptTypeHandler; -import com.win.framework.mybatis.core.util.JdbcUtils; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.infra.controller.admin.db.vo.DataSourceConfigCreateReqVO; -import com.win.module.infra.controller.admin.db.vo.DataSourceConfigUpdateReqVO; -import com.win.module.infra.dal.dataobject.db.DataSourceConfigDO; -import com.win.module.infra.dal.mysql.db.DataSourceConfigMapper; -import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty; -import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.mockito.MockedStatic; -import org.mockito.stubbing.Answer; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.List; - -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.randomLongId; -import static com.win.framework.test.core.util.RandomUtils.randomPojo; -import static com.win.module.infra.enums.ErrorCodeConstants.DATA_SOURCE_CONFIG_NOT_EXISTS; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.mockStatic; -import static org.mockito.Mockito.when; - -/** - * {@link DataSourceConfigServiceImpl} 的单元测试类 - * - * @author 芋道源码 - */ -@Import(DataSourceConfigServiceImpl.class) -public class DataSourceConfigServiceImplTest extends BaseDbUnitTest { - - @Resource - private DataSourceConfigServiceImpl dataSourceConfigService; - - @Resource - private DataSourceConfigMapper dataSourceConfigMapper; - - @MockBean - private AES aes; - - @MockBean - private DynamicDataSourceProperties dynamicDataSourceProperties; - - @BeforeEach - public void setUp() { - // mock 一个空实现的 StringEncryptor,避免 EncryptTypeHandler 报错 - ReflectUtil.setFieldValue(EncryptTypeHandler.class, "aes", aes); - when(aes.encryptBase64(anyString())).then((Answer) invocation -> invocation.getArgument(0)); - when(aes.decryptStr(anyString())).then((Answer) invocation -> invocation.getArgument(0)); - - // mock DynamicDataSourceProperties - when(dynamicDataSourceProperties.getPrimary()).thenReturn("primary"); - when(dynamicDataSourceProperties.getDatasource()).thenReturn(MapUtil.of("primary", - new DataSourceProperty().setUrl("http://localhost:3306").setUsername("yunai").setPassword("tudou"))); - } - - @Test - public void testCreateDataSourceConfig_success() { - try (MockedStatic databaseUtilsMock = mockStatic(JdbcUtils.class)) { - // 准备参数 - DataSourceConfigCreateReqVO reqVO = randomPojo(DataSourceConfigCreateReqVO.class); - // mock 方法 - databaseUtilsMock.when(() -> JdbcUtils.isConnectionOK(eq(reqVO.getUrl()), - eq(reqVO.getUsername()), eq(reqVO.getPassword()))).thenReturn(true); - - // 调用 - Long dataSourceConfigId = dataSourceConfigService.createDataSourceConfig(reqVO); - // 断言 - assertNotNull(dataSourceConfigId); - // 校验记录的属性是否正确 - DataSourceConfigDO dataSourceConfig = dataSourceConfigMapper.selectById(dataSourceConfigId); - assertPojoEquals(reqVO, dataSourceConfig); - } - } - - @Test - public void testUpdateDataSourceConfig_success() { - try (MockedStatic databaseUtilsMock = mockStatic(JdbcUtils.class)) { - // mock 数据 - DataSourceConfigDO dbDataSourceConfig = randomPojo(DataSourceConfigDO.class); - dataSourceConfigMapper.insert(dbDataSourceConfig);// @Sql: 先插入出一条存在的数据 - // 准备参数 - DataSourceConfigUpdateReqVO reqVO = randomPojo(DataSourceConfigUpdateReqVO.class, o -> { - o.setId(dbDataSourceConfig.getId()); // 设置更新的 ID - }); - // mock 方法 - databaseUtilsMock.when(() -> JdbcUtils.isConnectionOK(eq(reqVO.getUrl()), - eq(reqVO.getUsername()), eq(reqVO.getPassword()))).thenReturn(true); - - // 调用 - dataSourceConfigService.updateDataSourceConfig(reqVO); - // 校验是否更新正确 - DataSourceConfigDO dataSourceConfig = dataSourceConfigMapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, dataSourceConfig); - } - } - - @Test - public void testUpdateDataSourceConfig_notExists() { - // 准备参数 - DataSourceConfigUpdateReqVO reqVO = randomPojo(DataSourceConfigUpdateReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> dataSourceConfigService.updateDataSourceConfig(reqVO), DATA_SOURCE_CONFIG_NOT_EXISTS); - } - - @Test - public void testDeleteDataSourceConfig_success() { - // mock 数据 - DataSourceConfigDO dbDataSourceConfig = randomPojo(DataSourceConfigDO.class); - dataSourceConfigMapper.insert(dbDataSourceConfig);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbDataSourceConfig.getId(); - - // 调用 - dataSourceConfigService.deleteDataSourceConfig(id); - // 校验数据不存在了 - assertNull(dataSourceConfigMapper.selectById(id)); - } - - @Test - public void testDeleteDataSourceConfig_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> dataSourceConfigService.deleteDataSourceConfig(id), DATA_SOURCE_CONFIG_NOT_EXISTS); - } - - @Test // 测试使用 password 查询,可以查询到数据 - public void testSelectPassword() { - // mock 数据 - DataSourceConfigDO dbDataSourceConfig = randomPojo(DataSourceConfigDO.class); - dataSourceConfigMapper.insert(dbDataSourceConfig);// @Sql: 先插入出一条存在的数据 - - // 调用 - DataSourceConfigDO result = dataSourceConfigMapper.selectOne(DataSourceConfigDO::getPassword, - EncryptTypeHandler.encrypt(dbDataSourceConfig.getPassword())); - assertPojoEquals(dbDataSourceConfig, result); - } - - @Test - public void testGetDataSourceConfig_master() { - // 准备参数 - Long id = 0L; - // mock 方法 - - // 调用 - DataSourceConfigDO dataSourceConfig = dataSourceConfigService.getDataSourceConfig(id); - // 断言 - assertEquals(id, dataSourceConfig.getId()); - assertEquals("primary", dataSourceConfig.getName()); - assertEquals("http://localhost:3306", dataSourceConfig.getUrl()); - assertEquals("yunai", dataSourceConfig.getUsername()); - assertEquals("tudou", dataSourceConfig.getPassword()); - } - - @Test - public void testGetDataSourceConfig_normal() { - // mock 数据 - DataSourceConfigDO dbDataSourceConfig = randomPojo(DataSourceConfigDO.class); - dataSourceConfigMapper.insert(dbDataSourceConfig);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbDataSourceConfig.getId(); - - // 调用 - DataSourceConfigDO dataSourceConfig = dataSourceConfigService.getDataSourceConfig(id); - // 断言 - assertPojoEquals(dbDataSourceConfig, dataSourceConfig); - } - - @Test - public void testGetDataSourceConfigList() { - // mock 数据 - DataSourceConfigDO dbDataSourceConfig = randomPojo(DataSourceConfigDO.class); - dataSourceConfigMapper.insert(dbDataSourceConfig);// @Sql: 先插入出一条存在的数据 - // 准备参数 - - // 调用 - List dataSourceConfigList = dataSourceConfigService.getDataSourceConfigList(); - // 断言 - assertEquals(2, dataSourceConfigList.size()); - // master - assertEquals(0L, dataSourceConfigList.get(0).getId()); - assertEquals("primary", dataSourceConfigList.get(0).getName()); - assertEquals("http://localhost:3306", dataSourceConfigList.get(0).getUrl()); - assertEquals("yunai", dataSourceConfigList.get(0).getUsername()); - assertEquals("tudou", dataSourceConfigList.get(0).getPassword()); - // normal - assertPojoEquals(dbDataSourceConfig, dataSourceConfigList.get(1)); - } - -} diff --git a/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/db/DatabaseTableServiceImplTest.java b/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/db/DatabaseTableServiceImplTest.java deleted file mode 100644 index 1349398a..00000000 --- a/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/db/DatabaseTableServiceImplTest.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.win.module.infra.service.db; - -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.infra.dal.dataobject.db.DataSourceConfigDO; -import com.baomidou.mybatisplus.generator.config.po.TableField; -import com.baomidou.mybatisplus.generator.config.po.TableInfo; -import com.baomidou.mybatisplus.generator.config.rules.DbColumnType; -import org.apache.ibatis.type.JdbcType; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.List; - -import static com.win.framework.test.core.util.RandomUtils.randomLongId; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.when; - -@Import(DatabaseTableServiceImpl.class) -public class DatabaseTableServiceImplTest extends BaseDbUnitTest { - - @Resource - private DatabaseTableServiceImpl databaseTableService; - - @MockBean - private DataSourceConfigService dataSourceConfigService; - - @Test - public void testGetTableList() { - // 准备参数 - Long dataSourceConfigId = randomLongId(); - // mock 方法 - DataSourceConfigDO dataSourceConfig = new DataSourceConfigDO().setUsername("sa").setPassword("") - .setUrl("jdbc:h2:mem:testdb"); - when(dataSourceConfigService.getDataSourceConfig(eq(dataSourceConfigId))) - .thenReturn(dataSourceConfig); - - // 调用 - List tables = databaseTableService.getTableList(dataSourceConfigId, - "config", "参数"); - // 断言 - assertEquals(1, tables.size()); - assertTableInfo(tables.get(0)); - } - - @Test - public void testGetTable() { - // 准备参数 - Long dataSourceConfigId = randomLongId(); - // mock 方法 - DataSourceConfigDO dataSourceConfig = new DataSourceConfigDO().setUsername("sa").setPassword("") - .setUrl("jdbc:h2:mem:testdb"); - when(dataSourceConfigService.getDataSourceConfig(eq(dataSourceConfigId))) - .thenReturn(dataSourceConfig); - - // 调用 - TableInfo tableInfo = databaseTableService.getTable(dataSourceConfigId, "infra_config"); - // 断言 - assertTableInfo(tableInfo); - } - - private void assertTableInfo(TableInfo tableInfo) { - assertEquals("infra_config", tableInfo.getName()); - assertEquals("参数配置表", tableInfo.getComment()); - assertEquals(13, tableInfo.getFields().size()); - // id 字段 - TableField idField = tableInfo.getFields().get(0); - assertEquals("id", idField.getName()); - assertEquals(JdbcType.BIGINT, idField.getMetaInfo().getJdbcType()); - assertEquals("编号", idField.getComment()); - assertFalse(idField.getMetaInfo().isNullable()); - assertTrue(idField.isKeyFlag()); - assertTrue(idField.isKeyIdentityFlag()); - assertEquals(DbColumnType.LONG, idField.getColumnType()); - assertEquals("id", idField.getPropertyName()); - // name 字段 - TableField nameField = tableInfo.getFields().get(3); - assertEquals("name", nameField.getName()); - assertEquals(JdbcType.VARCHAR, nameField.getMetaInfo().getJdbcType()); - assertEquals("名字", nameField.getComment()); - assertFalse(nameField.getMetaInfo().isNullable()); - assertFalse(nameField.isKeyFlag()); - assertFalse(nameField.isKeyIdentityFlag()); - assertEquals(DbColumnType.STRING, nameField.getColumnType()); - assertEquals("name", nameField.getPropertyName()); - } -} diff --git a/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/file/FileConfigServiceImplTest.java b/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/file/FileConfigServiceImplTest.java deleted file mode 100644 index 3dcf4239..00000000 --- a/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/file/FileConfigServiceImplTest.java +++ /dev/null @@ -1,280 +0,0 @@ -package com.win.module.infra.service.file; - -import cn.hutool.core.date.DatePattern; -import cn.hutool.core.date.LocalDateTimeUtil; -import cn.hutool.core.map.MapUtil; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.file.core.client.FileClient; -import com.win.framework.file.core.client.FileClientConfig; -import com.win.framework.file.core.client.FileClientFactory; -import com.win.framework.file.core.client.local.LocalFileClient; -import com.win.framework.file.core.client.local.LocalFileClientConfig; -import com.win.framework.file.core.enums.FileStorageEnum; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.infra.controller.admin.file.vo.config.FileConfigCreateReqVO; -import com.win.module.infra.controller.admin.file.vo.config.FileConfigPageReqVO; -import com.win.module.infra.controller.admin.file.vo.config.FileConfigUpdateReqVO; -import com.win.module.infra.dal.dataobject.file.FileConfigDO; -import com.win.module.infra.dal.mysql.file.FileConfigMapper; -import lombok.Data; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import javax.validation.Validator; -import java.io.Serializable; -import java.time.LocalDateTime; -import java.util.Map; - -import static cn.hutool.core.util.RandomUtil.randomEle; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.randomLongId; -import static com.win.framework.test.core.util.RandomUtils.randomPojo; -import static com.win.module.infra.enums.ErrorCodeConstants.FILE_CONFIG_DELETE_FAIL_MASTER; -import static com.win.module.infra.enums.ErrorCodeConstants.FILE_CONFIG_NOT_EXISTS; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.*; - -/** -* {@link FileConfigServiceImpl} 的单元测试类 -* -* @author 芋道源码 -*/ -@Import(FileConfigServiceImpl.class) -public class FileConfigServiceImplTest extends BaseDbUnitTest { - - @Resource - private FileConfigServiceImpl fileConfigService; - - @Resource - private FileConfigMapper fileConfigMapper; - - @MockBean - private Validator validator; - @MockBean - private FileClientFactory fileClientFactory; - - @Test - public void testCreateFileConfig_success() { - // 准备参数 - Map config = MapUtil.builder().put("basePath", "/yunai") - .put("domain", "https://www.iocoder.cn").build(); - FileConfigCreateReqVO reqVO = randomPojo(FileConfigCreateReqVO.class, - o -> o.setStorage(FileStorageEnum.LOCAL.getStorage()).setConfig(config)); - - // 调用 - Long fileConfigId = fileConfigService.createFileConfig(reqVO); - // 断言 - assertNotNull(fileConfigId); - // 校验记录的属性是否正确 - FileConfigDO fileConfig = fileConfigMapper.selectById(fileConfigId); - assertPojoEquals(reqVO, fileConfig, "config"); - assertFalse(fileConfig.getMaster()); - assertEquals("/yunai", ((LocalFileClientConfig) fileConfig.getConfig()).getBasePath()); - assertEquals("https://www.iocoder.cn", ((LocalFileClientConfig) fileConfig.getConfig()).getDomain()); - // 验证 cache - assertNull(fileConfigService.getClientCache().getIfPresent(fileConfigId)); - } - - @Test - public void testUpdateFileConfig_success() { - // mock 数据 - FileConfigDO dbFileConfig = randomPojo(FileConfigDO.class, o -> o.setStorage(FileStorageEnum.LOCAL.getStorage()) - .setConfig(new LocalFileClientConfig().setBasePath("/yunai").setDomain("https://www.iocoder.cn"))); - fileConfigMapper.insert(dbFileConfig);// @Sql: 先插入出一条存在的数据 - // 准备参数 - FileConfigUpdateReqVO reqVO = randomPojo(FileConfigUpdateReqVO.class, o -> { - o.setId(dbFileConfig.getId()); // 设置更新的 ID - Map config = MapUtil.builder().put("basePath", "/yunai2") - .put("domain", "https://doc.iocoder.cn").build(); - o.setConfig(config); - }); - - // 调用 - fileConfigService.updateFileConfig(reqVO); - // 校验是否更新正确 - FileConfigDO fileConfig = fileConfigMapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, fileConfig, "config"); - assertEquals("/yunai2", ((LocalFileClientConfig) fileConfig.getConfig()).getBasePath()); - assertEquals("https://doc.iocoder.cn", ((LocalFileClientConfig) fileConfig.getConfig()).getDomain()); - // 验证 cache - assertNull(fileConfigService.getClientCache().getIfPresent(fileConfig.getId())); - } - - @Test - public void testUpdateFileConfig_notExists() { - // 准备参数 - FileConfigUpdateReqVO reqVO = randomPojo(FileConfigUpdateReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> fileConfigService.updateFileConfig(reqVO), FILE_CONFIG_NOT_EXISTS); - } - - @Test - public void testUpdateFileConfigMaster_success() { - // mock 数据 - FileConfigDO dbFileConfig = randomFileConfigDO().setMaster(false); - fileConfigMapper.insert(dbFileConfig);// @Sql: 先插入出一条存在的数据 - FileConfigDO masterFileConfig = randomFileConfigDO().setMaster(true); - fileConfigMapper.insert(masterFileConfig);// @Sql: 先插入出一条存在的数据 - - // 调用 - fileConfigService.updateFileConfigMaster(dbFileConfig.getId()); - // 断言数据 - assertTrue(fileConfigMapper.selectById(dbFileConfig.getId()).getMaster()); - assertFalse(fileConfigMapper.selectById(masterFileConfig.getId()).getMaster()); - // 验证 cache - assertNull(fileConfigService.getClientCache().getIfPresent(0L)); - } - - @Test - public void testUpdateFileConfigMaster_notExists() { - // 调用, 并断言异常 - assertServiceException(() -> fileConfigService.updateFileConfigMaster(randomLongId()), FILE_CONFIG_NOT_EXISTS); - } - - @Test - public void testDeleteFileConfig_success() { - // mock 数据 - FileConfigDO dbFileConfig = randomFileConfigDO().setMaster(false); - fileConfigMapper.insert(dbFileConfig);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbFileConfig.getId(); - - // 调用 - fileConfigService.deleteFileConfig(id); - // 校验数据不存在了 - assertNull(fileConfigMapper.selectById(id)); - // 验证 cache - assertNull(fileConfigService.getClientCache().getIfPresent(id)); - } - - @Test - public void testDeleteFileConfig_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> fileConfigService.deleteFileConfig(id), FILE_CONFIG_NOT_EXISTS); - } - - @Test - public void testDeleteFileConfig_master() { - // mock 数据 - FileConfigDO dbFileConfig = randomFileConfigDO().setMaster(true); - fileConfigMapper.insert(dbFileConfig);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbFileConfig.getId(); - - // 调用, 并断言异常 - assertServiceException(() -> fileConfigService.deleteFileConfig(id), FILE_CONFIG_DELETE_FAIL_MASTER); - } - - @Test - public void testGetFileConfigPage() { - // mock 数据 - FileConfigDO dbFileConfig = randomFileConfigDO().setName("芋道源码") - .setStorage(FileStorageEnum.LOCAL.getStorage()); - dbFileConfig.setCreateTime(LocalDateTimeUtil.parse("2020-01-23", DatePattern.NORM_DATE_PATTERN));// 等会查询到 - fileConfigMapper.insert(dbFileConfig); - // 测试 name 不匹配 - fileConfigMapper.insert(cloneIgnoreId(dbFileConfig, o -> o.setName("源码"))); - // 测试 storage 不匹配 - fileConfigMapper.insert(cloneIgnoreId(dbFileConfig, o -> o.setStorage(FileStorageEnum.DB.getStorage()))); - // 测试 createTime 不匹配 - fileConfigMapper.insert(cloneIgnoreId(dbFileConfig, o -> o.setCreateTime(LocalDateTimeUtil.parse("2020-11-23", DatePattern.NORM_DATE_PATTERN)))); - // 准备参数 - FileConfigPageReqVO reqVO = new FileConfigPageReqVO(); - reqVO.setName("芋道"); - reqVO.setStorage(FileStorageEnum.LOCAL.getStorage()); - reqVO.setCreateTime((new LocalDateTime[]{buildTime(2020, 1, 1), - buildTime(2020, 1, 24)})); - - // 调用 - PageResult pageResult = fileConfigService.getFileConfigPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbFileConfig, pageResult.getList().get(0)); - } - - @Test - public void testFileConfig() throws Exception { - // mock 数据 - FileConfigDO dbFileConfig = randomFileConfigDO().setMaster(false); - fileConfigMapper.insert(dbFileConfig);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbFileConfig.getId(); - // mock 获得 Client - FileClient fileClient = mock(FileClient.class); - when(fileClientFactory.getFileClient(eq(id))).thenReturn(fileClient); - when(fileClient.upload(any(), any(), any())).thenReturn("https://www.iocoder.cn"); - - // 调用,并断言 - assertEquals("https://www.iocoder.cn", fileConfigService.testFileConfig(id)); - } - - @Test - public void testGetFileConfig() { - // mock 数据 - FileConfigDO dbFileConfig = randomFileConfigDO().setMaster(false); - fileConfigMapper.insert(dbFileConfig);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbFileConfig.getId(); - - // 调用,并断言 - assertPojoEquals(dbFileConfig, fileConfigService.getFileConfig(id)); - } - - @Test - public void testGetFileClient() { - // mock 数据 - FileConfigDO fileConfig = randomFileConfigDO().setMaster(false); - fileConfigMapper.insert(fileConfig); - // 准备参数 - Long id = fileConfig.getId(); - // mock 获得 Client - FileClient fileClient = new LocalFileClient(id, new LocalFileClientConfig()); - when(fileClientFactory.getFileClient(eq(id))).thenReturn(fileClient); - - // 调用,并断言 - assertSame(fileClient, fileConfigService.getFileClient(id)); - // 断言缓存 - verify(fileClientFactory).createOrUpdateFileClient(eq(id), eq(fileConfig.getStorage()), - eq(fileConfig.getConfig())); - } - - @Test - public void testGetMasterFileClient() { - // mock 数据 - FileConfigDO fileConfig = randomFileConfigDO().setMaster(true); - fileConfigMapper.insert(fileConfig); - // 准备参数 - Long id = fileConfig.getId(); - // mock 获得 Client - FileClient fileClient = new LocalFileClient(id, new LocalFileClientConfig()); - when(fileClientFactory.getFileClient(eq(0L))).thenReturn(fileClient); - - // 调用,并断言 - assertSame(fileClient, fileConfigService.getMasterFileClient()); - // 断言缓存 - verify(fileClientFactory).createOrUpdateFileClient(eq(0L), eq(fileConfig.getStorage()), - eq(fileConfig.getConfig())); - } - - private FileConfigDO randomFileConfigDO() { - return randomPojo(FileConfigDO.class).setStorage(randomEle(FileStorageEnum.values()).getStorage()) - .setConfig(new EmptyFileClientConfig()); - } - - @Data - public static class EmptyFileClientConfig implements FileClientConfig, Serializable { - - } - -} diff --git a/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/file/FileServiceImplTest.java b/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/file/FileServiceImplTest.java deleted file mode 100644 index fdc41a59..00000000 --- a/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/file/FileServiceImplTest.java +++ /dev/null @@ -1,143 +0,0 @@ -package com.win.module.infra.service.file; - -import cn.hutool.core.io.resource.ResourceUtil; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.common.util.object.ObjectUtils; -import com.win.framework.file.core.client.FileClient; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.framework.test.core.util.AssertUtils; -import com.win.module.infra.controller.admin.file.vo.file.FilePageReqVO; -import com.win.module.infra.dal.dataobject.file.FileDO; -import com.win.module.infra.dal.mysql.file.FileMapper; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; - -import java.time.LocalDateTime; - -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.*; -import static com.win.module.infra.enums.ErrorCodeConstants.FILE_NOT_EXISTS; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.same; -import static org.mockito.Mockito.*; - -@Import({FileServiceImpl.class}) -public class FileServiceImplTest extends BaseDbUnitTest { - - @Resource - private FileService fileService; - - @Resource - private FileMapper fileMapper; - - @MockBean - private FileConfigService fileConfigService; - - @Test - public void testGetFilePage() { - // mock 数据 - FileDO dbFile = randomPojo(FileDO.class, o -> { // 等会查询到 - o.setPath("yunai"); - o.setType("image/jpg"); - o.setCreateTime(buildTime(2021, 1, 15)); - }); - fileMapper.insert(dbFile); - // 测试 path 不匹配 - fileMapper.insert(ObjectUtils.cloneIgnoreId(dbFile, o -> o.setPath("tudou"))); - // 测试 type 不匹配 - fileMapper.insert(ObjectUtils.cloneIgnoreId(dbFile, o -> { - o.setType("image/png"); - })); - // 测试 createTime 不匹配 - fileMapper.insert(ObjectUtils.cloneIgnoreId(dbFile, o -> { - o.setCreateTime(buildTime(2020, 1, 15)); - })); - // 准备参数 - FilePageReqVO reqVO = new FilePageReqVO(); - reqVO.setPath("yunai"); - reqVO.setType("jp"); - reqVO.setCreateTime((new LocalDateTime[]{buildTime(2021, 1, 10), buildTime(2021, 1, 20)})); - - // 调用 - PageResult pageResult = fileService.getFilePage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - AssertUtils.assertPojoEquals(dbFile, pageResult.getList().get(0)); - } - - @Test - public void testCreateFile_success() throws Exception { - // 准备参数 - String path = randomString(); - byte[] content = ResourceUtil.readBytes("file/erweima.jpg"); - // mock Master 文件客户端 - FileClient client = mock(FileClient.class); - when(fileConfigService.getMasterFileClient()).thenReturn(client); - String url = randomString(); - when(client.upload(same(content), same(path), eq("image/jpeg"))).thenReturn(url); - when(client.getId()).thenReturn(10L); - String name = "单测文件名"; - // 调用 - String result = fileService.createFile(name, path, content); - // 断言 - assertEquals(result, url); - // 校验数据 - FileDO file = fileMapper.selectOne(FileDO::getPath, path); - assertEquals(10L, file.getConfigId()); - assertEquals(path, file.getPath()); - assertEquals(url, file.getUrl()); - assertEquals("image/jpeg", file.getType()); - assertEquals(content.length, file.getSize()); - } - - @Test - public void testDeleteFile_success() throws Exception { - // mock 数据 - FileDO dbFile = randomPojo(FileDO.class, o -> o.setConfigId(10L).setPath("tudou.jpg")); - fileMapper.insert(dbFile);// @Sql: 先插入出一条存在的数据 - // mock Master 文件客户端 - FileClient client = mock(FileClient.class); - when(fileConfigService.getFileClient(eq(10L))).thenReturn(client); - // 准备参数 - Long id = dbFile.getId(); - - // 调用 - fileService.deleteFile(id); - // 校验数据不存在了 - assertNull(fileMapper.selectById(id)); - // 校验调用 - verify(client).delete(eq("tudou.jpg")); - } - - @Test - public void testDeleteFile_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> fileService.deleteFile(id), FILE_NOT_EXISTS); - } - - @Test - public void testGetFileContent() throws Exception { - // 准备参数 - Long configId = 10L; - String path = "tudou.jpg"; - // mock 方法 - FileClient client = mock(FileClient.class); - when(fileConfigService.getFileClient(eq(10L))).thenReturn(client); - byte[] content = new byte[]{}; - when(client.getContent(eq("tudou.jpg"))).thenReturn(content); - - // 调用 - byte[] result = fileService.getFileContent(configId, path); - // 断言 - assertSame(result, content); - } - -} diff --git a/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/job/JobLogServiceImplTest.java b/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/job/JobLogServiceImplTest.java deleted file mode 100644 index 45edff82..00000000 --- a/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/job/JobLogServiceImplTest.java +++ /dev/null @@ -1,203 +0,0 @@ -package com.win.module.infra.service.job; - -import com.win.framework.common.pojo.PageResult; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.infra.controller.admin.job.vo.log.JobLogExportReqVO; -import com.win.module.infra.controller.admin.job.vo.log.JobLogPageReqVO; -import com.win.module.infra.dal.dataobject.job.JobLogDO; -import com.win.module.infra.dal.mysql.job.JobLogMapper; -import com.win.module.infra.enums.job.JobLogStatusEnum; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.time.LocalDateTime; -import java.util.Collection; -import java.util.List; - -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.RandomUtils.*; -import static java.util.Collections.singleton; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - -@Import(JobLogServiceImpl.class) -public class JobLogServiceImplTest extends BaseDbUnitTest { - - @Resource - private JobLogServiceImpl jobLogService; - @Resource - private JobLogMapper jobLogMapper; - - @Test - public void testCreateJobLog() { - // 准备参数 - JobLogDO reqVO = randomPojo(JobLogDO.class, o -> o.setExecuteIndex(1)); - - // 调用 - Long id = jobLogService.createJobLog(reqVO.getJobId(), reqVO.getBeginTime(), - reqVO.getHandlerName(), reqVO.getHandlerParam(), reqVO.getExecuteIndex()); - // 断言 - assertNotNull(id); - // 校验记录的属性是否正确 - JobLogDO job = jobLogMapper.selectById(id); - assertEquals(JobLogStatusEnum.RUNNING.getStatus(), job.getStatus()); - } - - @Test - public void testUpdateJobLogResultAsync_success() { - // mock 数据 - JobLogDO log = randomPojo(JobLogDO.class, o -> { - o.setExecuteIndex(1); - o.setStatus(JobLogStatusEnum.RUNNING.getStatus()); - }); - jobLogMapper.insert(log); - // 准备参数 - Long logId = log.getId(); - LocalDateTime endTime = randomLocalDateTime(); - Integer duration = randomInteger(); - boolean success = true; - String result = randomString(); - - // 调用 - jobLogService.updateJobLogResultAsync(logId, endTime, duration, success, result); - // 校验记录的属性是否正确 - JobLogDO dbLog = jobLogMapper.selectById(log.getId()); - assertEquals(endTime, dbLog.getEndTime()); - assertEquals(duration, dbLog.getDuration()); - assertEquals(JobLogStatusEnum.SUCCESS.getStatus(), dbLog.getStatus()); - assertEquals(result, dbLog.getResult()); - } - - @Test - public void testUpdateJobLogResultAsync_failure() { - // mock 数据 - JobLogDO log = randomPojo(JobLogDO.class, o -> { - o.setExecuteIndex(1); - o.setStatus(JobLogStatusEnum.RUNNING.getStatus()); - }); - jobLogMapper.insert(log); - // 准备参数 - Long logId = log.getId(); - LocalDateTime endTime = randomLocalDateTime(); - Integer duration = randomInteger(); - boolean success = false; - String result = randomString(); - - // 调用 - jobLogService.updateJobLogResultAsync(logId, endTime, duration, success, result); - // 校验记录的属性是否正确 - JobLogDO dbLog = jobLogMapper.selectById(log.getId()); - assertEquals(endTime, dbLog.getEndTime()); - assertEquals(duration, dbLog.getDuration()); - assertEquals(JobLogStatusEnum.FAILURE.getStatus(), dbLog.getStatus()); - assertEquals(result, dbLog.getResult()); - } - - @Test - public void testGetJobLog() { - // mock 数据 - JobLogDO dbJobLog = randomPojo(JobLogDO.class, o -> o.setExecuteIndex(1)); - jobLogMapper.insert(dbJobLog); - // 准备参数 - Long id = dbJobLog.getId(); - - // 调用 - JobLogDO jobLog = jobLogService.getJobLog(id); - // 断言 - assertPojoEquals(dbJobLog, jobLog); - } - - @Test - public void testGetJobLogList() { - // mock 数据 - JobLogDO dbJobLog = randomPojo(JobLogDO.class, o -> o.setExecuteIndex(1)); - jobLogMapper.insert(dbJobLog); - // 测试 handlerName 不匹配 - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> {})); - // 准备参数 - Collection ids = singleton(dbJobLog.getId()); - - // 调用 - List list = jobLogService.getJobLogList(ids); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(dbJobLog, list.get(0)); - } - - @Test - public void testGetJobPage() { - // mock 数据 - JobLogDO dbJobLog = randomPojo(JobLogDO.class, o -> { - o.setExecuteIndex(1); - o.setHandlerName("handlerName 单元测试"); - o.setStatus(JobLogStatusEnum.SUCCESS.getStatus()); - o.setBeginTime(buildTime(2021, 1, 8)); - o.setEndTime(buildTime(2021, 1, 8)); - }); - jobLogMapper.insert(dbJobLog); - // 测试 jobId 不匹配 - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setJobId(randomLongId()))); - // 测试 handlerName 不匹配 - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setHandlerName(randomString()))); - // 测试 beginTime 不匹配 - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setBeginTime(buildTime(2021, 1, 7)))); - // 测试 endTime 不匹配 - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setEndTime(buildTime(2021, 1, 9)))); - // 测试 status 不匹配 - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setStatus(JobLogStatusEnum.FAILURE.getStatus()))); - // 准备参数 - JobLogPageReqVO reqVo = new JobLogPageReqVO(); - reqVo.setJobId(dbJobLog.getJobId()); - reqVo.setHandlerName("单元"); - reqVo.setBeginTime(dbJobLog.getBeginTime()); - reqVo.setEndTime(dbJobLog.getEndTime()); - reqVo.setStatus(JobLogStatusEnum.SUCCESS.getStatus()); - - // 调用 - PageResult pageResult = jobLogService.getJobLogPage(reqVo); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbJobLog, pageResult.getList().get(0)); - } - - @Test - public void testGetJobList_export() { - // mock 数据 - JobLogDO dbJobLog = randomPojo(JobLogDO.class, o -> { - o.setExecuteIndex(1); - o.setHandlerName("handlerName 单元测试"); - o.setStatus(JobLogStatusEnum.SUCCESS.getStatus()); - o.setBeginTime(buildTime(2021, 1, 8)); - o.setEndTime(buildTime(2021, 1, 8)); - }); - jobLogMapper.insert(dbJobLog); - // 测试 jobId 不匹配 - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setJobId(randomLongId()))); - // 测试 handlerName 不匹配 - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setHandlerName(randomString()))); - // 测试 beginTime 不匹配 - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setBeginTime(buildTime(2021, 1, 7)))); - // 测试 endTime 不匹配 - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setEndTime(buildTime(2021, 1, 9)))); - // 测试 status 不匹配 - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setStatus(JobLogStatusEnum.FAILURE.getStatus()))); - // 准备参数 - JobLogExportReqVO reqVo = new JobLogExportReqVO(); - reqVo.setJobId(dbJobLog.getJobId()); - reqVo.setHandlerName("单元"); - reqVo.setBeginTime(dbJobLog.getBeginTime()); - reqVo.setEndTime(dbJobLog.getEndTime()); - reqVo.setStatus(JobLogStatusEnum.SUCCESS.getStatus()); - - // 调用 - List list = jobLogService.getJobLogList(reqVo); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(dbJobLog, list.get(0)); - } - -} diff --git a/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/job/JobServiceImplTest.java b/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/job/JobServiceImplTest.java deleted file mode 100644 index d8dc5eeb..00000000 --- a/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/job/JobServiceImplTest.java +++ /dev/null @@ -1,290 +0,0 @@ -package com.win.module.infra.service.job; - -import com.win.framework.common.pojo.PageResult; -import com.win.framework.quartz.core.scheduler.SchedulerManager; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.infra.controller.admin.job.vo.job.JobCreateReqVO; -import com.win.module.infra.controller.admin.job.vo.job.JobExportReqVO; -import com.win.module.infra.controller.admin.job.vo.job.JobPageReqVO; -import com.win.module.infra.controller.admin.job.vo.job.JobUpdateReqVO; -import com.win.module.infra.dal.dataobject.job.JobDO; -import com.win.module.infra.dal.mysql.job.JobMapper; -import com.win.module.infra.enums.job.JobStatusEnum; -import org.junit.jupiter.api.Test; -import org.quartz.SchedulerException; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.Collection; -import java.util.List; - -import static cn.hutool.core.util.RandomUtil.randomEle; -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.randomPojo; -import static com.win.framework.test.core.util.RandomUtils.randomString; -import static com.win.module.infra.enums.ErrorCodeConstants.*; -import static java.util.Collections.singletonList; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.verify; - -@Import(JobServiceImpl.class) -public class JobServiceImplTest extends BaseDbUnitTest { - - @Resource - private JobServiceImpl jobService; - @Resource - private JobMapper jobMapper; - @MockBean - private SchedulerManager schedulerManager; - - @Test - public void testCreateJob_cronExpressionValid() { - // 准备参数。Cron 表达式为 String 类型,默认随机字符串。 - JobCreateReqVO reqVO = randomPojo(JobCreateReqVO.class); - - // 调用,并断言异常 - assertServiceException(() -> jobService.createJob(reqVO), JOB_CRON_EXPRESSION_VALID); - } - - @Test - public void testCreateJob_jobHandlerExists() throws SchedulerException { - // 准备参数 指定 Cron 表达式 - JobCreateReqVO reqVO = randomPojo(JobCreateReqVO.class, o -> o.setCronExpression("0 0/1 * * * ? *")); - - // 调用 - jobService.createJob(reqVO); - // 调用,并断言异常 - assertServiceException(() -> jobService.createJob(reqVO), JOB_HANDLER_EXISTS); - } - - @Test - public void testCreateJob_success() throws SchedulerException { - // 准备参数 指定 Cron 表达式 - JobCreateReqVO reqVO = randomPojo(JobCreateReqVO.class, o -> o.setCronExpression("0 0/1 * * * ? *")); - - // 调用 - Long jobId = jobService.createJob(reqVO); - // 断言 - assertNotNull(jobId); - // 校验记录的属性是否正确 - JobDO job = jobMapper.selectById(jobId); - assertPojoEquals(reqVO, job); - assertEquals(JobStatusEnum.NORMAL.getStatus(), job.getStatus()); - // 校验调用 - verify(schedulerManager).addJob(eq(job.getId()), eq(job.getHandlerName()), eq(job.getHandlerParam()), - eq(job.getCronExpression()), eq(reqVO.getRetryCount()), eq(reqVO.getRetryInterval())); - } - - @Test - public void testUpdateJob_jobNotExists(){ - // 准备参数 - JobUpdateReqVO reqVO = randomPojo(JobUpdateReqVO.class, o -> o.setCronExpression("0 0/1 * * * ? *")); - - // 调用,并断言异常 - assertServiceException(() -> jobService.updateJob(reqVO), JOB_NOT_EXISTS); - } - - @Test - public void testUpdateJob_onlyNormalStatus(){ - // mock 数据 - JobDO job = randomPojo(JobDO.class, o -> o.setStatus(JobStatusEnum.INIT.getStatus())); - jobMapper.insert(job); - // 准备参数 - JobUpdateReqVO updateReqVO = randomPojo(JobUpdateReqVO.class, o -> { - o.setId(job.getId()); - o.setCronExpression("0 0/1 * * * ? *"); - }); - - // 调用,并断言异常 - assertServiceException(() -> jobService.updateJob(updateReqVO), - JOB_UPDATE_ONLY_NORMAL_STATUS); - } - - @Test - public void testUpdateJob_success() throws SchedulerException { - // mock 数据 - JobDO job = randomPojo(JobDO.class, o -> o.setStatus(JobStatusEnum.NORMAL.getStatus())); - jobMapper.insert(job); - // 准备参数 - JobUpdateReqVO updateReqVO = randomPojo(JobUpdateReqVO.class, o -> { - o.setId(job.getId()); - o.setCronExpression("0 0/1 * * * ? *"); - }); - - // 调用 - jobService.updateJob(updateReqVO); - // 校验记录的属性是否正确 - JobDO updateJob = jobMapper.selectById(updateReqVO.getId()); - assertPojoEquals(updateReqVO, updateJob); - // 校验调用 - verify(schedulerManager).updateJob(eq(job.getHandlerName()), eq(updateReqVO.getHandlerParam()), - eq(updateReqVO.getCronExpression()), eq(updateReqVO.getRetryCount()), eq(updateReqVO.getRetryInterval())); - } - - @Test - public void testUpdateJobStatus_changeStatusInvalid() { - // 调用,并断言异常 - assertServiceException(() -> jobService.updateJobStatus(1L, JobStatusEnum.INIT.getStatus()), - JOB_CHANGE_STATUS_INVALID); - } - - @Test - public void testUpdateJobStatus_changeStatusEquals() { - // mock 数据 - JobDO job = randomPojo(JobDO.class, o -> o.setStatus(JobStatusEnum.NORMAL.getStatus())); - jobMapper.insert(job); - - // 调用,并断言异常 - assertServiceException(() -> jobService.updateJobStatus(job.getId(), job.getStatus()), - JOB_CHANGE_STATUS_EQUALS); - } - - @Test - public void testUpdateJobStatus_stopSuccess() throws SchedulerException { - // mock 数据 - JobDO job = randomPojo(JobDO.class, o -> o.setStatus(JobStatusEnum.NORMAL.getStatus())); - jobMapper.insert(job); - - // 调用 - jobService.updateJobStatus(job.getId(), JobStatusEnum.STOP.getStatus()); - // 校验记录的属性是否正确 - JobDO dbJob = jobMapper.selectById(job.getId()); - assertEquals(JobStatusEnum.STOP.getStatus(), dbJob.getStatus()); - // 校验调用 - verify(schedulerManager).pauseJob(eq(job.getHandlerName())); - } - - @Test - public void testUpdateJobStatus_normalSuccess() throws SchedulerException { - // mock 数据 - JobDO job = randomPojo(JobDO.class, o -> o.setStatus(JobStatusEnum.STOP.getStatus())); - jobMapper.insert(job); - - // 调用 - jobService.updateJobStatus(job.getId(), JobStatusEnum.NORMAL.getStatus()); - // 校验记录的属性是否正确 - JobDO dbJob = jobMapper.selectById(job.getId()); - assertEquals(JobStatusEnum.NORMAL.getStatus(), dbJob.getStatus()); - // 校验调用 - verify(schedulerManager).resumeJob(eq(job.getHandlerName())); - } - - @Test - public void testTriggerJob_success() throws SchedulerException { - // mock 数据 - JobDO job = randomPojo(JobDO.class); - jobMapper.insert(job); - - // 调用 - jobService.triggerJob(job.getId()); - // 校验调用 - verify(schedulerManager).triggerJob(eq(job.getId()), - eq(job.getHandlerName()), eq(job.getHandlerParam())); - } - - @Test - public void testDeleteJob_success() throws SchedulerException { - // mock 数据 - JobDO job = randomPojo(JobDO.class); - jobMapper.insert(job); - - // 调用 - jobService.deleteJob(job.getId()); - // 校验不存在 - assertNull(jobMapper.selectById(job.getId())); - // 校验调用 - verify(schedulerManager).deleteJob(eq(job.getHandlerName())); - } - - @Test - public void testGetJobList() { - // mock 数据 - JobDO dbJob = randomPojo(JobDO.class, o -> { - o.setStatus(randomEle(JobStatusEnum.values()).getStatus()); // 保证 status 的范围 - }); - jobMapper.insert(dbJob); - // 测试 id 不匹配 - jobMapper.insert(cloneIgnoreId(dbJob, o -> {})); - - // 准备参数 - Collection ids = singletonList(dbJob.getId()); - // 调用 - List list = jobService.getJobList(ids); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(dbJob, list.get(0)); - } - - @Test - public void testGetJobPage() { - // mock 数据 - JobDO dbJob = randomPojo(JobDO.class, o -> { - o.setName("定时任务测试"); - o.setHandlerName("handlerName 单元测试"); - o.setStatus(JobStatusEnum.INIT.getStatus()); - }); - jobMapper.insert(dbJob); - // 测试 name 不匹配 - jobMapper.insert(cloneIgnoreId(dbJob, o -> o.setName("土豆"))); - // 测试 status 不匹配 - jobMapper.insert(cloneIgnoreId(dbJob, o -> o.setStatus(JobStatusEnum.NORMAL.getStatus()))); - // 测试 handlerName 不匹配 - jobMapper.insert(cloneIgnoreId(dbJob, o -> o.setHandlerName(randomString()))); - // 准备参数 - JobPageReqVO reqVo = new JobPageReqVO(); - reqVo.setName("定时"); - reqVo.setStatus(JobStatusEnum.INIT.getStatus()); - reqVo.setHandlerName("单元"); - - // 调用 - PageResult pageResult = jobService.getJobPage(reqVo); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbJob, pageResult.getList().get(0)); - } - - @Test - public void testGetJobList_export() { - // mock 数据 - JobDO dbJob = randomPojo(JobDO.class, o -> { - o.setName("定时任务测试"); - o.setHandlerName("handlerName 单元测试"); - o.setStatus(JobStatusEnum.INIT.getStatus()); - }); - jobMapper.insert(dbJob); - // 测试 name 不匹配 - jobMapper.insert(cloneIgnoreId(dbJob, o -> o.setName("土豆"))); - // 测试 status 不匹配 - jobMapper.insert(cloneIgnoreId(dbJob, o -> o.setStatus(JobStatusEnum.NORMAL.getStatus()))); - // 测试 handlerName 不匹配 - jobMapper.insert(cloneIgnoreId(dbJob, o -> o.setHandlerName(randomString()))); - // 准备参数 - JobExportReqVO reqVo = new JobExportReqVO(); - reqVo.setName("定时"); - reqVo.setStatus(JobStatusEnum.INIT.getStatus()); - reqVo.setHandlerName("单元"); - - // 调用 - List list = jobService.getJobList(reqVo); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(dbJob, list.get(0)); - } - - @Test - public void testGetJob() { - // mock 数据 - JobDO dbJob = randomPojo(JobDO.class); - jobMapper.insert(dbJob); - // 调用 - JobDO job = jobService.getJob(dbJob.getId()); - // 断言 - assertPojoEquals(dbJob, job); - } - -} diff --git a/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/logger/ApiAccessLogServiceImplTest.java b/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/logger/ApiAccessLogServiceImplTest.java deleted file mode 100644 index 5d593757..00000000 --- a/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/logger/ApiAccessLogServiceImplTest.java +++ /dev/null @@ -1,133 +0,0 @@ -package com.win.module.infra.service.logger; - -import com.win.framework.common.enums.UserTypeEnum; -import com.win.framework.common.exception.enums.GlobalErrorCodeConstants; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.infra.api.logger.dto.ApiAccessLogCreateReqDTO; -import com.win.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogExportReqVO; -import com.win.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogPageReqVO; -import com.win.module.infra.dal.dataobject.logger.ApiAccessLogDO; -import com.win.module.infra.dal.mysql.logger.ApiAccessLogMapper; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.List; - -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.RandomUtils.randomPojo; -import static org.junit.jupiter.api.Assertions.assertEquals; - -@Import(ApiAccessLogServiceImpl.class) -public class ApiAccessLogServiceImplTest extends BaseDbUnitTest { - - @Resource - private ApiAccessLogServiceImpl apiAccessLogService; - - @Resource - private ApiAccessLogMapper apiAccessLogMapper; - - @Test - public void testGetApiAccessLogPage() { - ApiAccessLogDO apiAccessLogDO = randomPojo(ApiAccessLogDO.class, o -> { - o.setUserId(2233L); - o.setUserType(UserTypeEnum.ADMIN.getValue()); - o.setApplicationName("win-test"); - o.setRequestUrl("foo"); - o.setBeginTime(buildTime(2021, 3, 13)); - o.setDuration(1000); - o.setResultCode(GlobalErrorCodeConstants.SUCCESS.getCode()); - }); - apiAccessLogMapper.insert(apiAccessLogDO); - // 测试 userId 不匹配 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setUserId(3344L))); - // 测试 userType 不匹配 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setUserType(UserTypeEnum.MEMBER.getValue()))); - // 测试 applicationName 不匹配 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setApplicationName("test"))); - // 测试 requestUrl 不匹配 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setRequestUrl("bar"))); - // 测试 beginTime 不匹配:构造一个早期时间 2021-02-06 00:00:00 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setBeginTime(buildTime(2021, 2, 6)))); - // 测试 duration 不匹配 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setDuration(100))); - // 测试 resultCode 不匹配 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setResultCode(2))); - // 准备参数 - ApiAccessLogPageReqVO reqVO = new ApiAccessLogPageReqVO(); - reqVO.setUserId(2233L); - reqVO.setUserType(UserTypeEnum.ADMIN.getValue()); - reqVO.setApplicationName("win-test"); - reqVO.setRequestUrl("foo"); - reqVO.setBeginTime(buildBetweenTime(2021, 3, 13, 2021, 3, 13)); - reqVO.setDuration(1000); - reqVO.setResultCode(GlobalErrorCodeConstants.SUCCESS.getCode()); - - // 调用 - PageResult pageResult = apiAccessLogService.getApiAccessLogPage(reqVO); - // 断言,只查到了一条符合条件的 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(apiAccessLogDO, pageResult.getList().get(0)); - } - - @Test - public void testGetApiAccessLogList() { - ApiAccessLogDO apiAccessLogDO = randomPojo(ApiAccessLogDO.class, o -> { - o.setUserId(2233L); - o.setUserType(UserTypeEnum.ADMIN.getValue()); - o.setApplicationName("win-test"); - o.setRequestUrl("foo"); - o.setBeginTime(buildTime(2021, 3, 13)); - o.setDuration(1000); - o.setResultCode(GlobalErrorCodeConstants.SUCCESS.getCode()); - }); - apiAccessLogMapper.insert(apiAccessLogDO); - // 测试 userId 不匹配 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setUserId(3344L))); - // 测试 userType 不匹配 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setUserType(UserTypeEnum.MEMBER.getValue()))); - // 测试 applicationName 不匹配 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setApplicationName("test"))); - // 测试 requestUrl 不匹配 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setRequestUrl("bar"))); - // 测试 beginTime 不匹配:构造一个早期时间 2021-02-06 00:00:00 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setBeginTime(buildTime(2021, 2, 6)))); - // 测试 duration 不匹配 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setDuration(100))); - // 测试 resultCode 不匹配 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setResultCode(2))); - // 准备参数 - ApiAccessLogExportReqVO reqVO = new ApiAccessLogExportReqVO(); - reqVO.setUserId(2233L); - reqVO.setUserType(UserTypeEnum.ADMIN.getValue()); - reqVO.setApplicationName("win-test"); - reqVO.setRequestUrl("foo"); - reqVO.setBeginTime(buildBetweenTime(2021, 3, 13, 2021, 3, 13)); - reqVO.setDuration(1000); - reqVO.setResultCode(GlobalErrorCodeConstants.SUCCESS.getCode()); - - // 调用 - List list = apiAccessLogService.getApiAccessLogList(reqVO); - // 断言,只查到了一条符合条件的 - assertEquals(1, list.size()); - assertPojoEquals(apiAccessLogDO, list.get(0)); - } - - @Test - public void testCreateApiAccessLog() { - // 准备参数 - ApiAccessLogCreateReqDTO createDTO = randomPojo(ApiAccessLogCreateReqDTO.class); - - // 调用 - apiAccessLogService.createApiAccessLog(createDTO); - // 断言 - ApiAccessLogDO apiAccessLogDO = apiAccessLogMapper.selectOne(null); - assertPojoEquals(createDTO, apiAccessLogDO); - } - -} diff --git a/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/logger/ApiErrorLogServiceImplTest.java b/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/logger/ApiErrorLogServiceImplTest.java deleted file mode 100644 index b8950db2..00000000 --- a/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/logger/ApiErrorLogServiceImplTest.java +++ /dev/null @@ -1,184 +0,0 @@ -package com.win.module.infra.service.logger; - -import com.win.framework.common.enums.UserTypeEnum; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.infra.api.logger.dto.ApiErrorLogCreateReqDTO; -import com.win.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogExportReqVO; -import com.win.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogPageReqVO; -import com.win.module.infra.dal.dataobject.logger.ApiErrorLogDO; -import com.win.module.infra.dal.mysql.logger.ApiErrorLogMapper; -import com.win.module.infra.enums.logger.ApiErrorLogProcessStatusEnum; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.List; - -import static cn.hutool.core.util.RandomUtil.randomEle; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.randomLongId; -import static com.win.framework.test.core.util.RandomUtils.randomPojo; -import static com.win.module.infra.enums.ErrorCodeConstants.API_ERROR_LOG_NOT_FOUND; -import static com.win.module.infra.enums.ErrorCodeConstants.API_ERROR_LOG_PROCESSED; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - -@Import(ApiErrorLogServiceImpl.class) -public class ApiErrorLogServiceImplTest extends BaseDbUnitTest { - - @Resource - private ApiErrorLogServiceImpl apiErrorLogService; - - @Resource - private ApiErrorLogMapper apiErrorLogMapper; - - @Test - public void testGetApiErrorLogPage() { - // mock 数据 - ApiErrorLogDO apiErrorLogDO = randomPojo(ApiErrorLogDO.class, o -> { - o.setUserId(2233L); - o.setUserType(UserTypeEnum.ADMIN.getValue()); - o.setApplicationName("win-test"); - o.setRequestUrl("foo"); - o.setExceptionTime(buildTime(2021, 3, 13)); - o.setProcessStatus(ApiErrorLogProcessStatusEnum.INIT.getStatus()); - }); - apiErrorLogMapper.insert(apiErrorLogDO); - // 测试 userId 不匹配 - apiErrorLogMapper.insert(cloneIgnoreId(apiErrorLogDO, o -> o.setUserId(3344L))); - // 测试 userType 不匹配 - apiErrorLogMapper.insert(cloneIgnoreId(apiErrorLogDO, logDO -> logDO.setUserType(UserTypeEnum.MEMBER.getValue()))); - // 测试 applicationName 不匹配 - apiErrorLogMapper.insert(cloneIgnoreId(apiErrorLogDO, logDO -> logDO.setApplicationName("test"))); - // 测试 requestUrl 不匹配 - apiErrorLogMapper.insert(cloneIgnoreId(apiErrorLogDO, logDO -> logDO.setRequestUrl("bar"))); - // 测试 exceptionTime 不匹配:构造一个早期时间 2021-02-06 00:00:00 - apiErrorLogMapper.insert(cloneIgnoreId(apiErrorLogDO, logDO -> logDO.setExceptionTime(buildTime(2021, 2, 6)))); - // 测试 progressStatus 不匹配 - apiErrorLogMapper.insert(cloneIgnoreId(apiErrorLogDO, logDO -> logDO.setProcessStatus(ApiErrorLogProcessStatusEnum.DONE.getStatus()))); - // 准备参数 - ApiErrorLogPageReqVO reqVO = new ApiErrorLogPageReqVO(); - reqVO.setUserId(2233L); - reqVO.setUserType(UserTypeEnum.ADMIN.getValue()); - reqVO.setApplicationName("win-test"); - reqVO.setRequestUrl("foo"); - reqVO.setExceptionTime(buildBetweenTime(2021, 3, 1, 2021, 3, 31)); - reqVO.setProcessStatus(ApiErrorLogProcessStatusEnum.INIT.getStatus()); - - // 调用 - PageResult pageResult = apiErrorLogService.getApiErrorLogPage(reqVO); - // 断言,只查到了一条符合条件的 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(apiErrorLogDO, pageResult.getList().get(0)); - } - - @Test - public void testGetApiErrorLogList() { - // mock 数据 - ApiErrorLogDO apiErrorLogDO = randomPojo(ApiErrorLogDO.class, o -> { - o.setUserId(2233L); - o.setUserType(UserTypeEnum.ADMIN.getValue()); - o.setApplicationName("win-test"); - o.setRequestUrl("foo"); - o.setExceptionTime(buildTime(2021, 3, 13)); - o.setProcessStatus(ApiErrorLogProcessStatusEnum.INIT.getStatus()); - }); - apiErrorLogMapper.insert(apiErrorLogDO); - // 测试 userId 不匹配 - apiErrorLogMapper.insert(cloneIgnoreId(apiErrorLogDO, o -> o.setUserId(3344L))); - // 测试 userType 不匹配 - apiErrorLogMapper.insert(cloneIgnoreId(apiErrorLogDO, logDO -> logDO.setUserType(UserTypeEnum.MEMBER.getValue()))); - // 测试 applicationName 不匹配 - apiErrorLogMapper.insert(cloneIgnoreId(apiErrorLogDO, logDO -> logDO.setApplicationName("test"))); - // 测试 requestUrl 不匹配 - apiErrorLogMapper.insert(cloneIgnoreId(apiErrorLogDO, logDO -> logDO.setRequestUrl("bar"))); - // 测试 exceptionTime 不匹配:构造一个早期时间 2021-02-06 00:00:00 - apiErrorLogMapper.insert(cloneIgnoreId(apiErrorLogDO, logDO -> logDO.setExceptionTime(buildTime(2021, 2, 6)))); - // 测试 progressStatus 不匹配 - apiErrorLogMapper.insert(cloneIgnoreId(apiErrorLogDO, logDO -> logDO.setProcessStatus(ApiErrorLogProcessStatusEnum.DONE.getStatus()))); - // 准备参数 - ApiErrorLogExportReqVO reqVO = new ApiErrorLogExportReqVO(); - reqVO.setUserId(2233L); - reqVO.setUserType(UserTypeEnum.ADMIN.getValue()); - reqVO.setApplicationName("win-test"); - reqVO.setRequestUrl("foo"); - reqVO.setExceptionTime(buildBetweenTime(2021, 3, 1, 2021, 3, 31)); - reqVO.setProcessStatus(ApiErrorLogProcessStatusEnum.INIT.getStatus()); - - // 调用 - List list = apiErrorLogService.getApiErrorLogList(reqVO); - // 断言,只查到了一条符合条件的 - assertEquals(1, list.size()); - assertPojoEquals(apiErrorLogDO, list.get(0)); - } - - @Test - public void testCreateApiErrorLog() { - // 准备参数 - ApiErrorLogCreateReqDTO createDTO = randomPojo(ApiErrorLogCreateReqDTO.class); - - // 调用 - apiErrorLogService.createApiErrorLog(createDTO); - // 断言 - ApiErrorLogDO apiErrorLogDO = apiErrorLogMapper.selectOne(null); - assertPojoEquals(createDTO, apiErrorLogDO); - assertEquals(ApiErrorLogProcessStatusEnum.INIT.getStatus(), apiErrorLogDO.getProcessStatus()); - } - - @Test - public void testUpdateApiErrorLogProcess_success() { - // 准备参数 - ApiErrorLogDO apiErrorLogDO = randomPojo(ApiErrorLogDO.class, - o -> o.setProcessStatus(ApiErrorLogProcessStatusEnum.INIT.getStatus())); - apiErrorLogMapper.insert(apiErrorLogDO); - // 准备参数 - Long id = apiErrorLogDO.getId(); - Integer processStatus = randomEle(ApiErrorLogProcessStatusEnum.values()).getStatus(); - Long processUserId = randomLongId(); - - // 调用 - apiErrorLogService.updateApiErrorLogProcess(id, processStatus, processUserId); - // 断言 - ApiErrorLogDO dbApiErrorLogDO = apiErrorLogMapper.selectById(apiErrorLogDO.getId()); - assertEquals(processStatus, dbApiErrorLogDO.getProcessStatus()); - assertEquals(processUserId, dbApiErrorLogDO.getProcessUserId()); - assertNotNull(dbApiErrorLogDO.getProcessTime()); - } - - @Test - public void testUpdateApiErrorLogProcess_processed() { - // 准备参数 - ApiErrorLogDO apiErrorLogDO = randomPojo(ApiErrorLogDO.class, - o -> o.setProcessStatus(ApiErrorLogProcessStatusEnum.DONE.getStatus())); - apiErrorLogMapper.insert(apiErrorLogDO); - // 准备参数 - Long id = apiErrorLogDO.getId(); - Integer processStatus = randomEle(ApiErrorLogProcessStatusEnum.values()).getStatus(); - Long processUserId = randomLongId(); - - // 调用,并断言异常 - assertServiceException(() -> - apiErrorLogService.updateApiErrorLogProcess(id, processStatus, processUserId), - API_ERROR_LOG_PROCESSED); - } - - @Test - public void testUpdateApiErrorLogProcess_notFound() { - // 准备参数 - Long id = randomLongId(); - Integer processStatus = randomEle(ApiErrorLogProcessStatusEnum.values()).getStatus(); - Long processUserId = randomLongId(); - - // 调用,并断言异常 - assertServiceException(() -> - apiErrorLogService.updateApiErrorLogProcess(id, processStatus, processUserId), - API_ERROR_LOG_NOT_FOUND); - } - -} diff --git a/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/test/TestDemoServiceImplTest.java b/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/test/TestDemoServiceImplTest.java deleted file mode 100644 index 910de2ad..00000000 --- a/win-module-infra/win-module-infra-biz/src/test/java/com/win/module/infra/service/test/TestDemoServiceImplTest.java +++ /dev/null @@ -1,186 +0,0 @@ -package com.win.module.infra.service.test; - -import com.win.framework.common.enums.CommonStatusEnum; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.infra.controller.admin.test.vo.TestDemoCreateReqVO; -import com.win.module.infra.controller.admin.test.vo.TestDemoExportReqVO; -import com.win.module.infra.controller.admin.test.vo.TestDemoPageReqVO; -import com.win.module.infra.controller.admin.test.vo.TestDemoUpdateReqVO; -import com.win.module.infra.dal.dataobject.test.TestDemoDO; -import com.win.module.infra.dal.mysql.test.TestDemoMapper; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.time.LocalDateTime; -import java.util.List; - -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.randomLongId; -import static com.win.framework.test.core.util.RandomUtils.randomPojo; -import static com.win.module.infra.enums.ErrorCodeConstants.TEST_DEMO_NOT_EXISTS; -import static org.junit.jupiter.api.Assertions.*; - -/** - * {@link TestDemoServiceImpl} 的单元测试类 - * - * @author 芋道源码 - */ -@Import(TestDemoServiceImpl.class) -public class TestDemoServiceImplTest extends BaseDbUnitTest { - - @Resource - private TestDemoServiceImpl testDemoService; - - @Resource - private TestDemoMapper testDemoMapper; - - @Test - public void testCreateTestDemo_success() { - // 准备参数 - TestDemoCreateReqVO reqVO = randomPojo(TestDemoCreateReqVO.class); - - // 调用 - Long testDemoId = testDemoService.createTestDemo(reqVO); - // 断言 - assertNotNull(testDemoId); - // 校验记录的属性是否正确 - TestDemoDO testDemo = testDemoMapper.selectById(testDemoId); - assertPojoEquals(reqVO, testDemo); - } - - @Test - public void testUpdateTestDemo_success() { - // mock 数据 - TestDemoDO dbTestDemo = randomPojo(TestDemoDO.class); - testDemoMapper.insert(dbTestDemo);// @Sql: 先插入出一条存在的数据 - // 准备参数 - TestDemoUpdateReqVO reqVO = randomPojo(TestDemoUpdateReqVO.class, o -> { - o.setId(dbTestDemo.getId()); // 设置更新的 ID - }); - - // 调用 - testDemoService.updateTestDemo(reqVO); - // 校验是否更新正确 - TestDemoDO testDemo = testDemoMapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, testDemo); - } - - @Test - public void testUpdateTestDemo_notExists() { - // 准备参数 - TestDemoUpdateReqVO reqVO = randomPojo(TestDemoUpdateReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> testDemoService.updateTestDemo(reqVO), TEST_DEMO_NOT_EXISTS); - } - - @Test - public void testDeleteTestDemo_success() { - // mock 数据 - TestDemoDO dbTestDemo = randomPojo(TestDemoDO.class); - testDemoMapper.insert(dbTestDemo);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbTestDemo.getId(); - - // 调用 - testDemoService.deleteTestDemo(id); - // 校验数据不存在了 - assertNull(testDemoMapper.selectById(id)); - } - - @Test - public void testDeleteTestDemo_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> testDemoService.deleteTestDemo(id), TEST_DEMO_NOT_EXISTS); - } - - @Test - public void testGetTestDemoPage() { - // mock 数据 - TestDemoDO dbTestDemo = randomPojo(TestDemoDO.class, o -> { // 等会查询到 - o.setName("芋道源码"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setType(1); - o.setCategory(2); - o.setRemark("哈哈哈"); - o.setCreateTime(buildTime(2021, 11, 11)); - }); - testDemoMapper.insert(dbTestDemo); - // 测试 name 不匹配 - testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setName("不匹配"))); - // 测试 status 不匹配 - testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 测试 type 不匹配 - testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setType(2))); - // 测试 category 不匹配 - testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setCategory(1))); - // 测试 remark 不匹配 - testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setRemark("呵呵呵"))); - // 测试 createTime 不匹配 - testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setCreateTime(buildTime(2021, 12, 12)))); - // 准备参数 - TestDemoPageReqVO reqVO = new TestDemoPageReqVO(); - reqVO.setName("芋道"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - reqVO.setType(1); - reqVO.setCategory(2); - reqVO.setRemark("哈哈哈"); - reqVO.setCreateTime((new LocalDateTime[]{buildTime(2021, 11, 10),buildTime(2021, 11, 12)})); - - // 调用 - PageResult pageResult = testDemoService.getTestDemoPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbTestDemo, pageResult.getList().get(0)); - } - - @Test - public void testGetTestDemoList() { - // mock 数据 - TestDemoDO dbTestDemo = randomPojo(TestDemoDO.class, o -> { // 等会查询到 - o.setName("芋道源码"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setType(1); - o.setCategory(2); - o.setRemark("哈哈哈"); - o.setCreateTime(buildTime(2021, 11, 11)); - }); - testDemoMapper.insert(dbTestDemo); - // 测试 name 不匹配 - testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setName("不匹配"))); - // 测试 status 不匹配 - testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 测试 type 不匹配 - testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setType(2))); - // 测试 category 不匹配 - testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setCategory(1))); - // 测试 remark 不匹配 - testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setRemark("呵呵呵"))); - // 测试 createTime 不匹配 - testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setCreateTime(buildTime(2021, 12, 12)))); - // 准备参数 - TestDemoExportReqVO reqVO = new TestDemoExportReqVO(); - reqVO.setName("芋道"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - reqVO.setType(1); - reqVO.setCategory(2); - reqVO.setRemark("哈哈哈"); - reqVO.setCreateTime((new LocalDateTime[]{buildTime(2021, 11, 10),buildTime(2021, 11, 12)})); - - // 调用 - List list = testDemoService.getTestDemoList(reqVO); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(dbTestDemo, list.get(0)); - } - -} diff --git a/win-module-infra/win-module-infra-biz/src/test/resources/application-unit-test.yaml b/win-module-infra/win-module-infra-biz/src/test/resources/application-unit-test.yaml index 6522b78b..0d06d58e 100644 --- a/win-module-infra/win-module-infra-biz/src/test/resources/application-unit-test.yaml +++ b/win-module-infra/win-module-infra-biz/src/test/resources/application-unit-test.yaml @@ -42,9 +42,9 @@ mybatis-plus: --- #################### 监控相关配置 #################### ---- #################### 芋道相关配置 #################### +--- #################### 闻荫相关配置 #################### -# 芋道配置项,设置当前项目所有自定义的配置 +# 闻荫配置项,设置当前项目所有自定义的配置 win: info: base-package: com.win diff --git a/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/dal/dataobject/goview/GoViewProjectDO.java b/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/dal/dataobject/goview/GoViewProjectDO.java index 7fd0a1be..a040016f 100644 --- a/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/dal/dataobject/goview/GoViewProjectDO.java +++ b/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/dal/dataobject/goview/GoViewProjectDO.java @@ -11,7 +11,7 @@ import lombok.*; * * 每个大屏图标,对应一个项目 * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName(value = "report_go_view_project", autoResultMap = true) // 由于 SQL Server 的 system_user 是关键字,所以使用 system_users @KeySequence("report_go_view_project_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 diff --git a/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/framework/jmreport/config/JmReportConfiguration.java b/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/framework/jmreport/config/JmReportConfiguration.java index 2d96edfe..96ea58cb 100644 --- a/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/framework/jmreport/config/JmReportConfiguration.java +++ b/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/framework/jmreport/config/JmReportConfiguration.java @@ -11,7 +11,7 @@ import org.springframework.context.annotation.Configuration; /** * 积木报表的配置类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Configuration(proxyBeanMethods = false) @ComponentScan(basePackages = "org.jeecg.modules.jmreport") // 扫描积木报表的包 diff --git a/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/framework/package-info.java b/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/framework/package-info.java index 241bd84f..80d976c2 100644 --- a/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/framework/package-info.java +++ b/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/framework/package-info.java @@ -1,6 +1,6 @@ /** * 属于 report 模块的 framework 封装 * - * @author 芋道源码 + * @author 闻荫源码 */ package com.win.module.report.framework; diff --git a/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/service/goview/GoViewDataService.java b/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/service/goview/GoViewDataService.java index c7b0c3b7..ac4f0a74 100644 --- a/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/service/goview/GoViewDataService.java +++ b/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/service/goview/GoViewDataService.java @@ -5,7 +5,7 @@ import com.win.module.report.controller.admin.goview.vo.data.GoViewDataRespVO; /** * GoView 数据 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface GoViewDataService { diff --git a/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/service/goview/GoViewDataServiceImpl.java b/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/service/goview/GoViewDataServiceImpl.java index 25b86443..0dbe8690 100644 --- a/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/service/goview/GoViewDataServiceImpl.java +++ b/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/service/goview/GoViewDataServiceImpl.java @@ -20,7 +20,7 @@ import java.util.Map; * 1. 目前默认使用 jdbcTemplate 查询项目配置的数据源。如果你想查询其它数据源,可以新建对应数据源的 jdbcTemplate 来实现。 * 2. 默认数据源是 MySQL 关系数据源,可能数据量比较大的情况下,会比较慢,可以考虑后续使用 Click House 等等。 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/service/goview/GoViewProjectService.java b/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/service/goview/GoViewProjectService.java index 4ccfc9f9..65d752b1 100644 --- a/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/service/goview/GoViewProjectService.java +++ b/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/service/goview/GoViewProjectService.java @@ -11,7 +11,7 @@ import javax.validation.Valid; /** * GoView 项目 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface GoViewProjectService { diff --git a/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/service/goview/GoViewProjectServiceImpl.java b/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/service/goview/GoViewProjectServiceImpl.java index 8b7858f4..4ab4997c 100644 --- a/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/service/goview/GoViewProjectServiceImpl.java +++ b/win-module-report/win-module-report-biz/src/main/java/com/win/module/report/service/goview/GoViewProjectServiceImpl.java @@ -19,7 +19,7 @@ import static com.win.module.report.enums.ErrorCodeConstants.GO_VIEW_PROJECT_NOT /** * GoView 项目 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-report/win-module-report-biz/src/test/java/com/win/module/report/service/goview/GoViewDataServiceImplTest.java b/win-module-report/win-module-report-biz/src/test/java/com/win/module/report/service/goview/GoViewDataServiceImplTest.java deleted file mode 100644 index 99867905..00000000 --- a/win-module-report/win-module-report-biz/src/test/java/com/win/module/report/service/goview/GoViewDataServiceImplTest.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.win.module.report.service.goview; - -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.report.controller.admin.goview.vo.data.GoViewDataRespVO; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.jdbc.support.rowset.SqlRowSet; -import org.springframework.jdbc.support.rowset.SqlRowSetMetaData; - -import javax.annotation.Resource; -import java.util.Arrays; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -@Import(GoViewDataServiceImpl.class) -public class GoViewDataServiceImplTest extends BaseDbUnitTest { - - @Resource - private GoViewDataServiceImpl goViewDataService; - - @MockBean - private JdbcTemplate jdbcTemplate; - - @Test - public void testGetDataBySQL() { - // 准备参数 - String sql = "SELECT id, name FROM system_users"; - // mock 方法 - SqlRowSet sqlRowSet = mock(SqlRowSet.class); - when(jdbcTemplate.queryForRowSet(eq(sql))).thenReturn(sqlRowSet); - // mock 元数据 - SqlRowSetMetaData metaData = mock(SqlRowSetMetaData.class); - when(sqlRowSet.getMetaData()).thenReturn(metaData); - when(metaData.getColumnNames()).thenReturn(new String[]{"id", "name"}); - // mock 数据明细 - when(sqlRowSet.next()).thenReturn(true).thenReturn(true).thenReturn(false); - when(sqlRowSet.getObject("id")).thenReturn(1L).thenReturn(2L); - when(sqlRowSet.getObject("name")).thenReturn("芋道源码").thenReturn("芋道"); - - // 调用 - GoViewDataRespVO dataBySQL = goViewDataService.getDataBySQL(sql); - // 断言 - assertEquals(Arrays.asList("id", "name"), dataBySQL.getDimensions()); - assertEquals(2, dataBySQL.getDimensions().size()); - assertEquals(2, dataBySQL.getSource().get(0).size()); - assertEquals(1L, dataBySQL.getSource().get(0).get("id")); - assertEquals("芋道源码", dataBySQL.getSource().get(0).get("name")); - assertEquals(2, dataBySQL.getSource().get(1).size()); - assertEquals(2L, dataBySQL.getSource().get(1).get("id")); - assertEquals("芋道", dataBySQL.getSource().get(1).get("name")); - } - -} diff --git a/win-module-report/win-module-report-biz/src/test/java/com/win/module/report/service/goview/GoViewProjectServiceImplTest.java b/win-module-report/win-module-report-biz/src/test/java/com/win/module/report/service/goview/GoViewProjectServiceImplTest.java deleted file mode 100644 index 7f1474e8..00000000 --- a/win-module-report/win-module-report-biz/src/test/java/com/win/module/report/service/goview/GoViewProjectServiceImplTest.java +++ /dev/null @@ -1,135 +0,0 @@ -package com.win.module.report.service.goview; - -import com.win.framework.common.pojo.PageParam; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.report.controller.admin.goview.vo.project.GoViewProjectCreateReqVO; -import com.win.module.report.controller.admin.goview.vo.project.GoViewProjectUpdateReqVO; -import com.win.module.report.dal.dataobject.goview.GoViewProjectDO; -import com.win.module.report.dal.mysql.goview.GoViewProjectMapper; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; - -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.*; -import static com.win.module.report.enums.ErrorCodeConstants.GO_VIEW_PROJECT_NOT_EXISTS; -import static org.junit.jupiter.api.Assertions.*; - -/** - * {@link GoViewProjectServiceImpl} 的单元测试类 - * - * @author 芋道源码 - */ -@Import(GoViewProjectServiceImpl.class) -public class GoViewProjectServiceImplTest extends BaseDbUnitTest { - - @Resource - private GoViewProjectServiceImpl goViewProjectService; - - @Resource - private GoViewProjectMapper goViewProjectMapper; - - @Test - public void testCreateProject_success() { - // 准备参数 - GoViewProjectCreateReqVO reqVO = randomPojo(GoViewProjectCreateReqVO.class); - - // 调用 - Long goViewProjectId = goViewProjectService.createProject(reqVO); - // 断言 - assertNotNull(goViewProjectId); - // 校验记录的属性是否正确 - GoViewProjectDO goViewProject = goViewProjectMapper.selectById(goViewProjectId); - assertPojoEquals(reqVO, goViewProject); - } - - @Test - public void testUpdateProject_success() { - // mock 数据 - GoViewProjectDO dbGoViewProject = randomPojo(GoViewProjectDO.class); - goViewProjectMapper.insert(dbGoViewProject);// @Sql: 先插入出一条存在的数据 - // 准备参数 - GoViewProjectUpdateReqVO reqVO = randomPojo(GoViewProjectUpdateReqVO.class, o -> { - o.setId(dbGoViewProject.getId()); // 设置更新的 ID - o.setStatus(randomCommonStatus()); - }); - - // 调用 - goViewProjectService.updateProject(reqVO); - // 校验是否更新正确 - GoViewProjectDO goViewProject = goViewProjectMapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, goViewProject); - } - - @Test - public void testUpdateProject_notExists() { - // 准备参数 - GoViewProjectUpdateReqVO reqVO = randomPojo(GoViewProjectUpdateReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> goViewProjectService.updateProject(reqVO), GO_VIEW_PROJECT_NOT_EXISTS); - } - - @Test - public void testDeleteProject_success() { - // mock 数据 - GoViewProjectDO dbGoViewProject = randomPojo(GoViewProjectDO.class); - goViewProjectMapper.insert(dbGoViewProject);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbGoViewProject.getId(); - - // 调用 - goViewProjectService.deleteProject(id); - // 校验数据不存在了 - assertNull(goViewProjectMapper.selectById(id)); - } - - @Test - public void testDeleteProject_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> goViewProjectService.deleteProject(id), GO_VIEW_PROJECT_NOT_EXISTS); - } - - @Test - public void testGetProject() { - // mock 数据 - GoViewProjectDO dbGoViewProject = randomPojo(GoViewProjectDO.class); - goViewProjectMapper.insert(dbGoViewProject);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbGoViewProject.getId(); - - // 调用 - GoViewProjectDO goViewProject = goViewProjectService.getProject(id); - // 断言 - assertPojoEquals(dbGoViewProject, goViewProject); - } - - @Test - public void testGetMyGoViewProjectPage() { - // mock 数据 - GoViewProjectDO dbGoViewProject = randomPojo(GoViewProjectDO.class, o -> { // 等会查询到 - o.setCreator("1"); - }); - goViewProjectMapper.insert(dbGoViewProject); - // 测试 userId 不匹配 - goViewProjectMapper.insert(cloneIgnoreId(dbGoViewProject, o -> o.setCreator("2"))); - // 准备参数 - PageParam reqVO = new PageParam(); - Long userId = 1L; - - // 调用 - PageResult pageResult = goViewProjectService.getMyProjectPage(reqVO, userId); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbGoViewProject, pageResult.getList().get(0)); - } - -} diff --git a/win-module-report/win-module-report-biz/src/test/resources/application-unit-test.yaml b/win-module-report/win-module-report-biz/src/test/resources/application-unit-test.yaml index 56a449e4..f61ada0a 100644 --- a/win-module-report/win-module-report-biz/src/test/resources/application-unit-test.yaml +++ b/win-module-report/win-module-report-biz/src/test/resources/application-unit-test.yaml @@ -42,9 +42,9 @@ mybatis: --- #################### 监控相关配置 #################### ---- #################### 芋道相关配置 #################### +--- #################### 闻荫相关配置 #################### -# 芋道配置项,设置当前项目所有自定义的配置 +# 闻荫配置项,设置当前项目所有自定义的配置 win: info: base-package: com.win.module diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/dept/DeptApi.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/dept/DeptApi.java index a128ae67..25bf2356 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/dept/DeptApi.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/dept/DeptApi.java @@ -11,7 +11,7 @@ import java.util.Set; /** * 部门 API 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface DeptApi { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/dept/PostApi.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/dept/PostApi.java index 1ae4d939..f7ce1562 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/dept/PostApi.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/dept/PostApi.java @@ -5,7 +5,7 @@ import java.util.Collection; /** * 岗位 API 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface PostApi { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/dept/dto/DeptRespDTO.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/dept/dto/DeptRespDTO.java index f682b94a..f092ac03 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/dept/dto/DeptRespDTO.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/dept/dto/DeptRespDTO.java @@ -6,7 +6,7 @@ import lombok.Data; /** * 部门 Response DTO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class DeptRespDTO { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/dict/DictDataApi.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/dict/DictDataApi.java index 14256b63..32b0aad5 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/dict/DictDataApi.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/dict/DictDataApi.java @@ -7,7 +7,7 @@ import java.util.Collection; /** * 字典数据 API 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface DictDataApi { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/dict/dto/DictDataRespDTO.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/dict/dto/DictDataRespDTO.java index 2920e469..cc8514b6 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/dict/dto/DictDataRespDTO.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/dict/dto/DictDataRespDTO.java @@ -6,7 +6,7 @@ import lombok.Data; /** * 字典数据 Response DTO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class DictDataRespDTO { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/errorcode/ErrorCodeApi.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/errorcode/ErrorCodeApi.java index e9d5df74..6c1a9d7d 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/errorcode/ErrorCodeApi.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/errorcode/ErrorCodeApi.java @@ -10,7 +10,7 @@ import java.util.List; /** * 错误码 Api 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface ErrorCodeApi { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/errorcode/dto/ErrorCodeRespDTO.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/errorcode/dto/ErrorCodeRespDTO.java index 323538c7..afd2f4a1 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/errorcode/dto/ErrorCodeRespDTO.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/errorcode/dto/ErrorCodeRespDTO.java @@ -7,7 +7,7 @@ import java.time.LocalDateTime; /** * 错误码的 Response DTO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class ErrorCodeRespDTO { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/logger/LoginLogApi.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/logger/LoginLogApi.java index 6eda41b2..2ee714b4 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/logger/LoginLogApi.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/logger/LoginLogApi.java @@ -7,7 +7,7 @@ import javax.validation.Valid; /** * 登录日志的 API 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface LoginLogApi { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/logger/OperateLogApi.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/logger/OperateLogApi.java index 0149e3af..20dacb02 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/logger/OperateLogApi.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/logger/OperateLogApi.java @@ -7,7 +7,7 @@ import javax.validation.Valid; /** * 操作日志 API 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface OperateLogApi { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/logger/dto/LoginLogCreateReqDTO.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/logger/dto/LoginLogCreateReqDTO.java index 09be4bcb..92dad079 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/logger/dto/LoginLogCreateReqDTO.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/logger/dto/LoginLogCreateReqDTO.java @@ -10,7 +10,7 @@ import javax.validation.constraints.Size; /** * 登录日志创建 Request DTO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class LoginLogCreateReqDTO { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/mail/MailSendApi.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/mail/MailSendApi.java index 96f60f76..d6f355ae 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/mail/MailSendApi.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/mail/MailSendApi.java @@ -7,7 +7,7 @@ import javax.validation.Valid; /** * 邮箱发送 API 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface MailSendApi { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/oauth2/OAuth2TokenApi.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/oauth2/OAuth2TokenApi.java index 889444eb..0fd068a0 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/oauth2/OAuth2TokenApi.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/oauth2/OAuth2TokenApi.java @@ -9,7 +9,7 @@ import javax.validation.Valid; /** * OAuth2.0 Token API 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface OAuth2TokenApi { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/oauth2/dto/OAuth2AccessTokenCheckRespDTO.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/oauth2/dto/OAuth2AccessTokenCheckRespDTO.java index 82ae925e..01f265b3 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/oauth2/dto/OAuth2AccessTokenCheckRespDTO.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/oauth2/dto/OAuth2AccessTokenCheckRespDTO.java @@ -8,7 +8,7 @@ import java.util.List; /** * OAuth2.0 访问令牌的校验 Response DTO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class OAuth2AccessTokenCheckRespDTO implements Serializable { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/oauth2/dto/OAuth2AccessTokenCreateReqDTO.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/oauth2/dto/OAuth2AccessTokenCreateReqDTO.java index 55571238..c19de74a 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/oauth2/dto/OAuth2AccessTokenCreateReqDTO.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/oauth2/dto/OAuth2AccessTokenCreateReqDTO.java @@ -11,7 +11,7 @@ import java.util.List; /** * OAuth2.0 访问令牌创建 Request DTO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class OAuth2AccessTokenCreateReqDTO implements Serializable { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/oauth2/dto/OAuth2AccessTokenRespDTO.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/oauth2/dto/OAuth2AccessTokenRespDTO.java index 5d536597..9c833ecb 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/oauth2/dto/OAuth2AccessTokenRespDTO.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/oauth2/dto/OAuth2AccessTokenRespDTO.java @@ -9,7 +9,7 @@ import java.time.LocalDateTime; /** * OAuth2.0 访问令牌的信息 Response DTO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data @Accessors(chain = true) diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/permission/PermissionApi.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/permission/PermissionApi.java index dfe5b116..39331dd6 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/permission/PermissionApi.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/permission/PermissionApi.java @@ -8,7 +8,7 @@ import java.util.Set; /** * 权限 API 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface PermissionApi { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/permission/RoleApi.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/permission/RoleApi.java index f1f6fa89..17fb67f1 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/permission/RoleApi.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/permission/RoleApi.java @@ -5,7 +5,7 @@ import java.util.Collection; /** * 角色 API 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface RoleApi { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/permission/dto/DeptDataPermissionRespDTO.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/permission/dto/DeptDataPermissionRespDTO.java index f6675d1a..cc3fc9d8 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/permission/dto/DeptDataPermissionRespDTO.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/permission/dto/DeptDataPermissionRespDTO.java @@ -8,7 +8,7 @@ import java.util.Set; /** * 部门的数据权限 Response DTO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class DeptDataPermissionRespDTO { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/sms/SmsCodeApi.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/sms/SmsCodeApi.java index 247d0979..bc1b9da7 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/sms/SmsCodeApi.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/sms/SmsCodeApi.java @@ -10,7 +10,7 @@ import javax.validation.Valid; /** * 短信验证码 API 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface SmsCodeApi { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/sms/SmsSendApi.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/sms/SmsSendApi.java index 75133686..481773ee 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/sms/SmsSendApi.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/sms/SmsSendApi.java @@ -7,7 +7,7 @@ import javax.validation.Valid; /** * 短信发送 API 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface SmsSendApi { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/sms/dto/code/SmsCodeSendReqDTO.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/sms/dto/code/SmsCodeSendReqDTO.java index 82db687f..38d976ba 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/sms/dto/code/SmsCodeSendReqDTO.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/sms/dto/code/SmsCodeSendReqDTO.java @@ -11,7 +11,7 @@ import javax.validation.constraints.NotNull; /** * 短信验证码的发送 Request DTO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class SmsCodeSendReqDTO { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/sms/dto/code/SmsCodeUseReqDTO.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/sms/dto/code/SmsCodeUseReqDTO.java index e6aaa18a..b7ad661b 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/sms/dto/code/SmsCodeUseReqDTO.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/sms/dto/code/SmsCodeUseReqDTO.java @@ -11,7 +11,7 @@ import javax.validation.constraints.NotNull; /** * 短信验证码的使用 Request DTO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class SmsCodeUseReqDTO { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/sms/dto/code/SmsCodeValidateReqDTO.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/sms/dto/code/SmsCodeValidateReqDTO.java index b807fb69..1e2665e1 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/sms/dto/code/SmsCodeValidateReqDTO.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/sms/dto/code/SmsCodeValidateReqDTO.java @@ -11,7 +11,7 @@ import javax.validation.constraints.NotNull; /** * 短信验证码的校验 Request DTO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class SmsCodeValidateReqDTO { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/sms/dto/send/SmsSendSingleToUserReqDTO.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/sms/dto/send/SmsSendSingleToUserReqDTO.java index 2fe9cdc0..c4a08a41 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/sms/dto/send/SmsSendSingleToUserReqDTO.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/sms/dto/send/SmsSendSingleToUserReqDTO.java @@ -9,7 +9,7 @@ import java.util.Map; /** * 短信发送给 Admin 或者 Member 用户 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class SmsSendSingleToUserReqDTO { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/social/SocialUserApi.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/social/SocialUserApi.java index eaad7dc1..346a4950 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/social/SocialUserApi.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/social/SocialUserApi.java @@ -11,7 +11,7 @@ import javax.validation.Valid; /** * 社交用户的 API 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface SocialUserApi { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/social/dto/SocialUserBindReqDTO.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/social/dto/SocialUserBindReqDTO.java index 4f9e8f3f..8cd3b16d 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/social/dto/SocialUserBindReqDTO.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/social/dto/SocialUserBindReqDTO.java @@ -13,7 +13,7 @@ import javax.validation.constraints.NotNull; /** * 取消绑定社交用户 Request DTO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data @NoArgsConstructor diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/social/dto/SocialUserRespDTO.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/social/dto/SocialUserRespDTO.java index cf7e9214..bd876380 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/social/dto/SocialUserRespDTO.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/social/dto/SocialUserRespDTO.java @@ -7,7 +7,7 @@ import lombok.NoArgsConstructor; /** * 社交用户 Response DTO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data @NoArgsConstructor diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/social/dto/SocialUserUnbindReqDTO.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/social/dto/SocialUserUnbindReqDTO.java index a0875c7e..5245ece5 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/social/dto/SocialUserUnbindReqDTO.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/social/dto/SocialUserUnbindReqDTO.java @@ -11,7 +11,7 @@ import javax.validation.constraints.NotNull; /** * 社交绑定 Request DTO,使用 code 授权码 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class SocialUserUnbindReqDTO { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/tenant/TenantApi.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/tenant/TenantApi.java index fded0449..4abb51bb 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/tenant/TenantApi.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/tenant/TenantApi.java @@ -5,7 +5,7 @@ import java.util.List; /** * 多租户的 API 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface TenantApi { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/user/AdminUserApi.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/user/AdminUserApi.java index c799fd3d..8f1be9fa 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/user/AdminUserApi.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/user/AdminUserApi.java @@ -10,7 +10,7 @@ import java.util.Map; /** * Admin 用户 API 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface AdminUserApi { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/user/dto/AdminUserRespDTO.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/user/dto/AdminUserRespDTO.java index 9a47223a..b359e4b2 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/user/dto/AdminUserRespDTO.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/api/user/dto/AdminUserRespDTO.java @@ -8,7 +8,7 @@ import java.util.Set; /** * Admin 用户 Response DTO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class AdminUserRespDTO { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/DictTypeConstants.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/DictTypeConstants.java index a5872bce..59f71c07 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/DictTypeConstants.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/DictTypeConstants.java @@ -3,7 +3,7 @@ package com.win.module.system.enums; /** * System 字典类型的枚举类 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface DictTypeConstants { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/common/SexEnum.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/common/SexEnum.java index b5e5fae4..b75125b4 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/common/SexEnum.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/common/SexEnum.java @@ -6,7 +6,7 @@ import lombok.Getter; /** * 性别的枚举值 * - * @author 芋道源码 + * @author 闻荫源码 */ @Getter @AllArgsConstructor diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/notice/NoticeTypeEnum.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/notice/NoticeTypeEnum.java index a320e2f0..48b74ac0 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/notice/NoticeTypeEnum.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/notice/NoticeTypeEnum.java @@ -6,7 +6,7 @@ import lombok.Getter; /** * 通知类型 * - * @author 芋道源码 + * @author 闻荫源码 */ @Getter @AllArgsConstructor diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/oauth2/OAuth2ClientConstants.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/oauth2/OAuth2ClientConstants.java index 64a4bc6d..0f4b0549 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/oauth2/OAuth2ClientConstants.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/oauth2/OAuth2ClientConstants.java @@ -3,7 +3,7 @@ package com.win.module.system.enums.oauth2; /** * OAuth2.0 客户端的通用枚举 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface OAuth2ClientConstants { diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/oauth2/OAuth2GrantTypeEnum.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/oauth2/OAuth2GrantTypeEnum.java index aec62b85..92f836f1 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/oauth2/OAuth2GrantTypeEnum.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/oauth2/OAuth2GrantTypeEnum.java @@ -7,7 +7,7 @@ import lombok.Getter; /** * OAuth2 授权类型(模式)的枚举 * - * @author 芋道源码 + * @author 闻荫源码 */ @AllArgsConstructor @Getter diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/permission/DataScopeEnum.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/permission/DataScopeEnum.java index 018cf650..80c851c6 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/permission/DataScopeEnum.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/permission/DataScopeEnum.java @@ -8,7 +8,7 @@ import lombok.Getter; * * 用于实现数据级别的权限 * - * @author 芋道源码 + * @author 闻荫源码 */ @Getter @AllArgsConstructor diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/permission/MenuTypeEnum.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/permission/MenuTypeEnum.java index e812c946..0acf28e2 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/permission/MenuTypeEnum.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/permission/MenuTypeEnum.java @@ -6,7 +6,7 @@ import lombok.Getter; /** * 菜单类型枚举类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Getter @AllArgsConstructor diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/sms/SmsReceiveStatusEnum.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/sms/SmsReceiveStatusEnum.java index ab00f976..66a07400 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/sms/SmsReceiveStatusEnum.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/sms/SmsReceiveStatusEnum.java @@ -6,7 +6,7 @@ import lombok.Getter; /** * 短信的接收状态枚举 * - * @author 芋道源码 + * @author 闻荫源码 * @date 2021/2/1 13:39 */ @Getter diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/sms/SmsSceneEnum.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/sms/SmsSceneEnum.java index 78cc9c19..4b9f1e50 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/sms/SmsSceneEnum.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/sms/SmsSceneEnum.java @@ -10,7 +10,7 @@ import java.util.Arrays; /** * 用户短信验证码发送场景的枚举 * - * @author 芋道源码 + * @author 闻荫源码 */ @Getter @AllArgsConstructor diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/sms/SmsTemplateTypeEnum.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/sms/SmsTemplateTypeEnum.java index c0d65547..76730721 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/sms/SmsTemplateTypeEnum.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/sms/SmsTemplateTypeEnum.java @@ -6,7 +6,7 @@ import lombok.Getter; /** * 短信的模板类型枚举 * - * @author 芋道源码 + * @author 闻荫源码 */ @Getter @AllArgsConstructor diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/social/SocialTypeEnum.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/social/SocialTypeEnum.java index 0ab51daa..fb8812f4 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/social/SocialTypeEnum.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/social/SocialTypeEnum.java @@ -10,7 +10,7 @@ import java.util.Arrays; /** * 社交平台的类型枚举 * - * @author 芋道源码 + * @author 闻荫源码 */ @Getter @AllArgsConstructor diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/dept/DeptApiImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/dept/DeptApiImpl.java index 38c27801..eacb1237 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/dept/DeptApiImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/dept/DeptApiImpl.java @@ -13,7 +13,7 @@ import java.util.List; /** * 部门 API 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service public class DeptApiImpl implements DeptApi { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/dept/PostApiImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/dept/PostApiImpl.java index 8dc1aeb3..93c10f81 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/dept/PostApiImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/dept/PostApiImpl.java @@ -9,7 +9,7 @@ import java.util.Collection; /** * 岗位 API 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service public class PostApiImpl implements PostApi { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/dict/DictDataApiImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/dict/DictDataApiImpl.java index 94e0d598..aeb832af 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/dict/DictDataApiImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/dict/DictDataApiImpl.java @@ -12,7 +12,7 @@ import java.util.Collection; /** * 字典数据 API 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service public class DictDataApiImpl implements DictDataApi { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/errorcode/ErrorCodeApiImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/errorcode/ErrorCodeApiImpl.java index 701d973e..fffe3939 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/errorcode/ErrorCodeApiImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/errorcode/ErrorCodeApiImpl.java @@ -12,7 +12,7 @@ import java.util.List; /** * 错误码 Api 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service public class ErrorCodeApiImpl implements ErrorCodeApi { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/logger/LoginLogApiImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/logger/LoginLogApiImpl.java index 80e075a5..e25eafe7 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/logger/LoginLogApiImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/logger/LoginLogApiImpl.java @@ -10,7 +10,7 @@ import javax.annotation.Resource; /** * 登录日志的 API 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/logger/OperateLogApiImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/logger/OperateLogApiImpl.java index c4851c03..4945a707 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/logger/OperateLogApiImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/logger/OperateLogApiImpl.java @@ -10,7 +10,7 @@ import javax.annotation.Resource; /** * 操作日志 API 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/oauth2/OAuth2TokenApiImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/oauth2/OAuth2TokenApiImpl.java index a7ee438f..e3cbcc9b 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/oauth2/OAuth2TokenApiImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/oauth2/OAuth2TokenApiImpl.java @@ -13,7 +13,7 @@ import javax.annotation.Resource; /** * OAuth2.0 Token API 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service public class OAuth2TokenApiImpl implements OAuth2TokenApi { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/permission/PermissionApiImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/permission/PermissionApiImpl.java index 72817ae9..a7433c7c 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/permission/PermissionApiImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/permission/PermissionApiImpl.java @@ -11,7 +11,7 @@ import java.util.Set; /** * 权限 API 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service public class PermissionApiImpl implements PermissionApi { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/permission/RoleApiImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/permission/RoleApiImpl.java index 45c79dd6..587ecf39 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/permission/RoleApiImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/permission/RoleApiImpl.java @@ -9,7 +9,7 @@ import java.util.Collection; /** * 角色 API 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service public class RoleApiImpl implements RoleApi { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/sms/SmsCodeApiImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/sms/SmsCodeApiImpl.java index 75b16e9b..53bc7387 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/sms/SmsCodeApiImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/sms/SmsCodeApiImpl.java @@ -12,7 +12,7 @@ import javax.annotation.Resource; /** * 短信验证码 API 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/sms/SmsSendApiImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/sms/SmsSendApiImpl.java index 8bae8f0d..e1b6c99f 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/sms/SmsSendApiImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/sms/SmsSendApiImpl.java @@ -10,7 +10,7 @@ import javax.annotation.Resource; /** * 短信发送 API 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/social/SocialUserApiImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/social/SocialUserApiImpl.java index 5d5254b0..7ea2e210 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/social/SocialUserApiImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/social/SocialUserApiImpl.java @@ -12,7 +12,7 @@ import javax.annotation.Resource; /** * 社交用户的 API 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/tenant/TenantApiImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/tenant/TenantApiImpl.java index 75f13bda..db39709e 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/tenant/TenantApiImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/tenant/TenantApiImpl.java @@ -9,7 +9,7 @@ import java.util.List; /** * 多租户的 API 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service public class TenantApiImpl implements TenantApi { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/user/AdminUserApiImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/user/AdminUserApiImpl.java index 1374a0a0..39e8ebea 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/user/AdminUserApiImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/api/user/AdminUserApiImpl.java @@ -13,7 +13,7 @@ import java.util.List; /** * Admin 用户 API 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service public class AdminUserApiImpl implements AdminUserApi { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/auth/vo/AuthMenuRespVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/auth/vo/AuthMenuRespVO.java index 11d35af6..ae46b113 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/auth/vo/AuthMenuRespVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/auth/vo/AuthMenuRespVO.java @@ -15,13 +15,13 @@ import java.util.List; @Builder public class AuthMenuRespVO { - @Schema(description = "菜单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "菜单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") private Long id; @Schema(description = "父菜单 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Long parentId; - @Schema(description = "菜单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "菜单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") private String name; @Schema(description = "路由地址,仅菜单类型为菜单或者目录时,才需要传", example = "post") diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/auth/vo/AuthPermissionInfoRespVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/auth/vo/AuthPermissionInfoRespVO.java index 8d9292f4..8286609d 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/auth/vo/AuthPermissionInfoRespVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/auth/vo/AuthPermissionInfoRespVO.java @@ -38,7 +38,7 @@ public class AuthPermissionInfoRespVO { @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Long id; - @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道源码") + @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫源码") private String nickname; @Schema(description = "用户头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/xx.jpg") @@ -53,13 +53,13 @@ public class AuthPermissionInfoRespVO { @Builder public static class MenuVO { - @Schema(description = "菜单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "菜单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") private Long id; @Schema(description = "父菜单 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Long parentId; - @Schema(description = "菜单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "菜单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") private String name; @Schema(description = "路由地址,仅菜单类型为菜单或者目录时,才需要传", example = "post") diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/captcha/CaptchaController.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/captcha/CaptchaController.java index 5d07723e..4eb5d6f3 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/captcha/CaptchaController.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/captcha/CaptchaController.java @@ -20,7 +20,7 @@ import javax.servlet.http.HttpServletRequest; /** * 验证码 * - * @author 芋道源码 + * @author 闻荫源码 */ @Tag(name = "管理后台 - 验证码") @RestController("adminCaptchaController") diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/dept/DeptBaseVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/dept/DeptBaseVO.java index 670c627b..8061c110 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/dept/DeptBaseVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/dept/DeptBaseVO.java @@ -15,7 +15,7 @@ import javax.validation.constraints.Size; @Data public class DeptBaseVO { - @Schema(description = "菜单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "菜单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") @NotBlank(message = "部门名称不能为空") @Size(max = 30, message = "部门名称长度不能超过30个字符") private String name; diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/dept/DeptListReqVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/dept/DeptListReqVO.java index f8dfdff5..eea221c4 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/dept/DeptListReqVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/dept/DeptListReqVO.java @@ -7,7 +7,7 @@ import lombok.Data; @Data public class DeptListReqVO { - @Schema(description = "部门名称,模糊匹配", example = "芋道") + @Schema(description = "部门名称,模糊匹配", example = "闻荫") private String name; @Schema(description = "展示状态,参见 CommonStatusEnum 枚举类", example = "1") diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/dept/DeptSimpleRespVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/dept/DeptSimpleRespVO.java index 166f10bb..e01c60e0 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/dept/DeptSimpleRespVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/dept/DeptSimpleRespVO.java @@ -14,7 +14,7 @@ public class DeptSimpleRespVO { @Schema(description = "部门编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Long id; - @Schema(description = "部门名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "部门名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") private String name; @Schema(description = "父部门 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/post/PostExportReqVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/post/PostExportReqVO.java index 4519bc80..b1afd292 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/post/PostExportReqVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/post/PostExportReqVO.java @@ -10,7 +10,7 @@ public class PostExportReqVO { @Schema(description = "岗位编码,模糊匹配", example = "win") private String code; - @Schema(description = "岗位名称,模糊匹配", example = "芋道") + @Schema(description = "岗位名称,模糊匹配", example = "闻荫") private String name; @Schema(description = "展示状态,参见 CommonStatusEnum 枚举类", example = "1") diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/post/PostListReqVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/post/PostListReqVO.java index b4686890..9292752b 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/post/PostListReqVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/post/PostListReqVO.java @@ -9,7 +9,7 @@ import lombok.EqualsAndHashCode; @EqualsAndHashCode(callSuper = true) public class PostListReqVO extends PostBaseVO { - @Schema(description = "岗位名称,模糊匹配", example = "芋道") + @Schema(description = "岗位名称,模糊匹配", example = "闻荫") private String name; @Schema(description = "展示状态,参见 CommonStatusEnum 枚举类", example = "1") diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/post/PostPageReqVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/post/PostPageReqVO.java index d6af34ef..47cf1be6 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/post/PostPageReqVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/post/PostPageReqVO.java @@ -13,7 +13,7 @@ public class PostPageReqVO extends PageParam { @Schema(description = "岗位编码,模糊匹配", example = "win") private String code; - @Schema(description = "岗位名称,模糊匹配", example = "芋道") + @Schema(description = "岗位名称,模糊匹配", example = "闻荫") private String name; @Schema(description = "展示状态,参见 CommonStatusEnum 枚举类", example = "1") diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/post/PostSimpleRespVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/post/PostSimpleRespVO.java index 374de7e5..90536b51 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/post/PostSimpleRespVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dept/vo/post/PostSimpleRespVO.java @@ -14,7 +14,7 @@ public class PostSimpleRespVO { @Schema(description = "岗位编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Long id; - @Schema(description = "岗位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "岗位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") private String name; } diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dict/vo/data/DictDataBaseVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dict/vo/data/DictDataBaseVO.java index 28883e8a..f981c66c 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dict/vo/data/DictDataBaseVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dict/vo/data/DictDataBaseVO.java @@ -18,7 +18,7 @@ public class DictDataBaseVO { @NotNull(message = "显示顺序不能为空") private Integer sort; - @Schema(description = "字典标签", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "字典标签", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") @NotBlank(message = "字典标签不能为空") @Size(max = 100, message = "字典标签长度不能超过100个字符") private String label; diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dict/vo/data/DictDataExportReqVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dict/vo/data/DictDataExportReqVO.java index 34f38401..1cc4c132 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dict/vo/data/DictDataExportReqVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dict/vo/data/DictDataExportReqVO.java @@ -9,7 +9,7 @@ import javax.validation.constraints.Size; @Data public class DictDataExportReqVO { - @Schema(description = "字典标签", example = "芋道") + @Schema(description = "字典标签", example = "闻荫") @Size(max = 100, message = "字典标签长度不能超过100个字符") private String label; diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dict/vo/data/DictDataPageReqVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dict/vo/data/DictDataPageReqVO.java index 8ebe35a4..83479331 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dict/vo/data/DictDataPageReqVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dict/vo/data/DictDataPageReqVO.java @@ -12,7 +12,7 @@ import javax.validation.constraints.Size; @EqualsAndHashCode(callSuper = true) public class DictDataPageReqVO extends PageParam { - @Schema(description = "字典标签", example = "芋道") + @Schema(description = "字典标签", example = "闻荫") @Size(max = 100, message = "字典标签长度不能超过100个字符") private String label; diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dict/vo/type/DictTypeExportReqVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dict/vo/type/DictTypeExportReqVO.java index 2d589897..58a22347 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dict/vo/type/DictTypeExportReqVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dict/vo/type/DictTypeExportReqVO.java @@ -12,7 +12,7 @@ import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY @Data public class DictTypeExportReqVO { - @Schema(description = "字典类型名称,模糊匹配", example = "芋道") + @Schema(description = "字典类型名称,模糊匹配", example = "闻荫") private String name; @Schema(description = "字典类型,模糊匹配", example = "sys_common_sex") diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dict/vo/type/DictTypePageReqVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dict/vo/type/DictTypePageReqVO.java index 45f209d7..0bb2c771 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dict/vo/type/DictTypePageReqVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dict/vo/type/DictTypePageReqVO.java @@ -16,7 +16,7 @@ import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY @EqualsAndHashCode(callSuper = true) public class DictTypePageReqVO extends PageParam { - @Schema(description = "字典类型名称,模糊匹配", example = "芋道") + @Schema(description = "字典类型名称,模糊匹配", example = "闻荫") private String name; @Schema(description = "字典类型,模糊匹配", example = "sys_common_sex") diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dict/vo/type/DictTypeSimpleRespVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dict/vo/type/DictTypeSimpleRespVO.java index 7b04c86d..ec9ac4aa 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dict/vo/type/DictTypeSimpleRespVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/dict/vo/type/DictTypeSimpleRespVO.java @@ -14,7 +14,7 @@ public class DictTypeSimpleRespVO { @Schema(description = "字典类型编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Long id; - @Schema(description = "字典类型名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "字典类型名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") private String name; @Schema(description = "字典类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "sys_common_sex") diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/errorcode/vo/ErrorCodeExcelVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/errorcode/vo/ErrorCodeExcelVO.java index 98979a5a..901c8034 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/errorcode/vo/ErrorCodeExcelVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/errorcode/vo/ErrorCodeExcelVO.java @@ -10,7 +10,7 @@ import java.time.LocalDateTime; /** * 错误码 Excel VO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class ErrorCodeExcelVO { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/logger/vo/loginlog/LoginLogExportReqVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/logger/vo/loginlog/LoginLogExportReqVO.java index 9565bc87..746ea20f 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/logger/vo/loginlog/LoginLogExportReqVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/logger/vo/loginlog/LoginLogExportReqVO.java @@ -15,7 +15,7 @@ public class LoginLogExportReqVO { @Schema(description = "用户 IP,模拟匹配", example = "127.0.0.1") private String userIp; - @Schema(description = "用户账号,模拟匹配", example = "芋道") + @Schema(description = "用户账号,模拟匹配", example = "闻荫") private String username; @Schema(description = "操作状态", example = "true") diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/logger/vo/loginlog/LoginLogPageReqVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/logger/vo/loginlog/LoginLogPageReqVO.java index b5a7b0c5..84a4b9e6 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/logger/vo/loginlog/LoginLogPageReqVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/logger/vo/loginlog/LoginLogPageReqVO.java @@ -18,7 +18,7 @@ public class LoginLogPageReqVO extends PageParam { @Schema(description = "用户 IP,模拟匹配", example = "127.0.0.1") private String userIp; - @Schema(description = "用户账号,模拟匹配", example = "芋道") + @Schema(description = "用户账号,模拟匹配", example = "闻荫") private String username; @Schema(description = "操作状态", example = "true") diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/logger/vo/operatelog/OperateLogBaseVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/logger/vo/operatelog/OperateLogBaseVO.java index 0b93b466..ead45355 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/logger/vo/operatelog/OperateLogBaseVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/logger/vo/operatelog/OperateLogBaseVO.java @@ -35,7 +35,7 @@ public class OperateLogBaseVO { @NotNull(message = "操作分类不能为空") private Integer type; - @Schema(description = "操作明细", example = "修改编号为 1 的用户信息,将性别从男改成女,将姓名从芋道改成源码。") + @Schema(description = "操作明细", example = "修改编号为 1 的用户信息,将性别从男改成女,将姓名从闻荫改成源码。") private String content; @Schema(description = "拓展字段", example = "{'orderId': 1}") diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/logger/vo/operatelog/OperateLogExportReqVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/logger/vo/operatelog/OperateLogExportReqVO.java index 306be9b2..ffe78d8a 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/logger/vo/operatelog/OperateLogExportReqVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/logger/vo/operatelog/OperateLogExportReqVO.java @@ -15,7 +15,7 @@ public class OperateLogExportReqVO { @Schema(description = "操作模块,模拟匹配", example = "订单") private String module; - @Schema(description = "用户昵称,模拟匹配", example = "芋道") + @Schema(description = "用户昵称,模拟匹配", example = "闻荫") private String userNickname; @Schema(description = "操作分类,参见 OperateLogTypeEnum 枚举类", example = "1") diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/logger/vo/operatelog/OperateLogPageReqVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/logger/vo/operatelog/OperateLogPageReqVO.java index 0d05869e..fb93304c 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/logger/vo/operatelog/OperateLogPageReqVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/logger/vo/operatelog/OperateLogPageReqVO.java @@ -16,7 +16,7 @@ public class OperateLogPageReqVO extends PageParam { @Schema(description = "操作模块,模拟匹配", example = "订单") private String module; - @Schema(description = "用户昵称,模拟匹配", example = "芋道") + @Schema(description = "用户昵称,模拟匹配", example = "闻荫") private String userNickname; @Schema(description = "操作分类,参见 OperateLogTypeEnum 枚举类", example = "1") diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/notice/vo/NoticePageReqVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/notice/vo/NoticePageReqVO.java index 9ac3c4d4..91a28630 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/notice/vo/NoticePageReqVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/notice/vo/NoticePageReqVO.java @@ -10,7 +10,7 @@ import lombok.EqualsAndHashCode; @EqualsAndHashCode(callSuper = true) public class NoticePageReqVO extends PageParam { - @Schema(description = "通知公告名称,模糊匹配", example = "芋道") + @Schema(description = "通知公告名称,模糊匹配", example = "闻荫") private String title; @Schema(description = "展示状态,参见 CommonStatusEnum 枚举类", example = "1") diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/oauth2/OAuth2ClientController.http b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/oauth2/OAuth2ClientController.http index dcf60a6c..3fe7c15a 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/oauth2/OAuth2ClientController.http +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/oauth2/OAuth2ClientController.http @@ -7,7 +7,7 @@ tenant-id: {{adminTenentId}} { "id": "1", "secret": "admin123", - "name": "芋道源码", + "name": "闻荫源码", "logo": "https://www.iocoder.cn/images/favicon.ico", "description": "我是描述", "status": 0, diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/oauth2/OAuth2OpenController.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/oauth2/OAuth2OpenController.java index 471c90f5..57eef4c1 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/oauth2/OAuth2OpenController.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/oauth2/OAuth2OpenController.java @@ -53,7 +53,7 @@ import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLog * 考虑到【本系统】暂时不想做的过于复杂,默认只有获取到 access token 之后,可以访问【本系统】管理后台的 /system-api/* 所有接口,除非手动添加 scope 控制。 * scope 的使用示例,可见 {@link OAuth2UserController} 类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Tag(name = "管理后台 - OAuth2.0 授权") @RestController diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/oauth2/OAuth2UserController.http b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/oauth2/OAuth2UserController.http index 13c8545b..b2cd2470 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/oauth2/OAuth2UserController.http +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/oauth2/OAuth2UserController.http @@ -10,5 +10,5 @@ Authorization: Bearer 47f9c74ec11041f193b777ebb95c3b0d tenant-id: {{adminTenentId}} { - "nickname": "芋道源码" + "nickname": "闻荫源码" } diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/oauth2/OAuth2UserController.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/oauth2/OAuth2UserController.java index 87bb521f..b6b0602e 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/oauth2/OAuth2UserController.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/oauth2/OAuth2UserController.java @@ -31,7 +31,7 @@ import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLog * 1. 在 getUserInfo 方法上,添加 @PreAuthorize("@ss.hasScope('user.read')") 注解,声明需要满足 scope = user.read * 2. 在 updateUserInfo 方法上,添加 @PreAuthorize("@ss.hasScope('user.write')") 注解,声明需要满足 scope = user.write * - * @author 芋道源码 + * @author 闻荫源码 */ @Tag(name = "管理后台 - OAuth2.0 用户") @RestController diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/oauth2/vo/user/OAuth2UserInfoRespVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/oauth2/vo/user/OAuth2UserInfoRespVO.java index c5755a70..38c39cb1 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/oauth2/vo/user/OAuth2UserInfoRespVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/oauth2/vo/user/OAuth2UserInfoRespVO.java @@ -19,7 +19,7 @@ public class OAuth2UserInfoRespVO { @Schema(description = "用户账号", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") private String username; - @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") private String nickname; @Schema(description = "用户邮箱", example = "win@iocoder.cn") diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/PermissionController.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/PermissionController.java index 33b4f837..d81503ad 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/PermissionController.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/PermissionController.java @@ -23,7 +23,7 @@ import static com.win.framework.common.pojo.CommonResult.success; /** * 权限 Controller,提供赋予用户、角色的权限的 API 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ @Tag(name = "管理后台 - 权限") @RestController diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/vo/menu/MenuBaseVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/vo/menu/MenuBaseVO.java index f4b511d2..c46b0edd 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/vo/menu/MenuBaseVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/vo/menu/MenuBaseVO.java @@ -14,7 +14,7 @@ import javax.validation.constraints.Size; @Data public class MenuBaseVO { - @Schema(description = "菜单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "菜单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") @NotBlank(message = "菜单名称不能为空") @Size(max = 50, message = "菜单名称长度不能超过50个字符") private String name; diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/vo/menu/MenuListReqVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/vo/menu/MenuListReqVO.java index db2fd591..fee32c2c 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/vo/menu/MenuListReqVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/vo/menu/MenuListReqVO.java @@ -7,7 +7,7 @@ import lombok.Data; @Data public class MenuListReqVO { - @Schema(description = "菜单名称,模糊匹配", example = "芋道") + @Schema(description = "菜单名称,模糊匹配", example = "闻荫") private String name; @Schema(description = "展示状态,参见 CommonStatusEnum 枚举类", example = "1") diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/vo/menu/MenuSimpleRespVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/vo/menu/MenuSimpleRespVO.java index fa619fff..5b2bc76c 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/vo/menu/MenuSimpleRespVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/vo/menu/MenuSimpleRespVO.java @@ -16,7 +16,7 @@ public class MenuSimpleRespVO { @Schema(description = "菜单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Long id; - @Schema(description = "菜单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "菜单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") private String name; @Schema(description = "父菜单 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/vo/role/RoleExportReqVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/vo/role/RoleExportReqVO.java index b2d334ef..41c1fdc6 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/vo/role/RoleExportReqVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/vo/role/RoleExportReqVO.java @@ -12,7 +12,7 @@ import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY @Data public class RoleExportReqVO { - @Schema(description = "角色名称,模糊匹配", example = "芋道") + @Schema(description = "角色名称,模糊匹配", example = "闻荫") private String name; @Schema(description = "角色标识,模糊匹配", example = "win") diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/vo/role/RolePageReqVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/vo/role/RolePageReqVO.java index 00a30d0b..474b6735 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/vo/role/RolePageReqVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/vo/role/RolePageReqVO.java @@ -15,7 +15,7 @@ import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY @EqualsAndHashCode(callSuper = true) public class RolePageReqVO extends PageParam { - @Schema(description = "角色名称,模糊匹配", example = "芋道") + @Schema(description = "角色名称,模糊匹配", example = "闻荫") private String name; @Schema(description = "角色标识,模糊匹配", example = "win") diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/vo/role/RoleSimpleRespVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/vo/role/RoleSimpleRespVO.java index 010dfabb..f2cdc607 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/vo/role/RoleSimpleRespVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/permission/vo/role/RoleSimpleRespVO.java @@ -14,7 +14,7 @@ public class RoleSimpleRespVO { @Schema(description = "角色编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Long id; - @Schema(description = "角色名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "角色名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") private String name; } diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/sms/vo/channel/SmsChannelBaseVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/sms/vo/channel/SmsChannelBaseVO.java index 1ad78e5f..729e7157 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/sms/vo/channel/SmsChannelBaseVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/sms/vo/channel/SmsChannelBaseVO.java @@ -12,7 +12,7 @@ import javax.validation.constraints.NotNull; @Data public class SmsChannelBaseVO { - @Schema(description = "短信签名", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道源码") + @Schema(description = "短信签名", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫源码") @NotNull(message = "短信签名不能为空") private String signature; diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/sms/vo/channel/SmsChannelPageReqVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/sms/vo/channel/SmsChannelPageReqVO.java index 15dc7564..75cf4989 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/sms/vo/channel/SmsChannelPageReqVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/sms/vo/channel/SmsChannelPageReqVO.java @@ -20,7 +20,7 @@ public class SmsChannelPageReqVO extends PageParam { @Schema(description = "任务状态", example = "1") private Integer status; - @Schema(description = "短信签名,模糊匹配", example = "芋道源码") + @Schema(description = "短信签名,模糊匹配", example = "闻荫源码") private String signature; @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/sms/vo/channel/SmsChannelSimpleRespVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/sms/vo/channel/SmsChannelSimpleRespVO.java index 44d34a85..d892466d 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/sms/vo/channel/SmsChannelSimpleRespVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/sms/vo/channel/SmsChannelSimpleRespVO.java @@ -13,7 +13,7 @@ public class SmsChannelSimpleRespVO { @NotNull(message = "编号不能为空") private Long id; - @Schema(description = "短信签名", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道源码") + @Schema(description = "短信签名", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫源码") @NotNull(message = "短信签名不能为空") private String signature; diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/sms/vo/log/SmsLogExcelVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/sms/vo/log/SmsLogExcelVO.java index f132ecd9..2c58aef8 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/sms/vo/log/SmsLogExcelVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/sms/vo/log/SmsLogExcelVO.java @@ -13,7 +13,7 @@ import java.util.Map; /** * 短信日志 Excel VO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class SmsLogExcelVO { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/sms/vo/template/SmsTemplateExcelVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/sms/vo/template/SmsTemplateExcelVO.java index 9d9b889c..ef65bfed 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/sms/vo/template/SmsTemplateExcelVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/sms/vo/template/SmsTemplateExcelVO.java @@ -11,7 +11,7 @@ import java.time.LocalDateTime; /** * 短信模板 Excel VO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class SmsTemplateExcelVO { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/tenant/TenantController.http b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/tenant/TenantController.http index a4d51738..457c2bfa 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/tenant/TenantController.http +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/tenant/TenantController.http @@ -1,5 +1,5 @@ ### 获取租户编号 /admin-api/system/get-id-by-name -GET {{baseUrl}}/system/tenant/get-id-by-name?name=芋道源码 +GET {{baseUrl}}/system/tenant/get-id-by-name?name=闻荫源码 ### 创建租户 /admin-api/system/tenant/create POST {{baseUrl}}/system/tenant/create @@ -8,7 +8,7 @@ Authorization: Bearer {{token}} tenant-id: {{adminTenentId}} { - "name": "芋道", + "name": "闻荫", "contactName": "芋艿", "contactMobile": "15601691300", "status": 0, diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/tenant/vo/tenant/TenantBaseVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/tenant/vo/tenant/TenantBaseVO.java index 12aea659..f2d48a94 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/tenant/vo/tenant/TenantBaseVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/tenant/vo/tenant/TenantBaseVO.java @@ -13,7 +13,7 @@ import java.time.LocalDateTime; @Data public class TenantBaseVO { - @Schema(description = "租户名", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "租户名", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") @NotNull(message = "租户名不能为空") private String name; diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/tenant/vo/tenant/TenantExcelVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/tenant/vo/tenant/TenantExcelVO.java index 14ac1ae1..f8b5a529 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/tenant/vo/tenant/TenantExcelVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/tenant/vo/tenant/TenantExcelVO.java @@ -12,7 +12,7 @@ import com.win.framework.excel.core.convert.DictConvert; /** * 租户 Excel VO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class TenantExcelVO { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/tenant/vo/tenant/TenantExportReqVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/tenant/vo/tenant/TenantExportReqVO.java index 3cef57eb..d1370003 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/tenant/vo/tenant/TenantExportReqVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/tenant/vo/tenant/TenantExportReqVO.java @@ -12,7 +12,7 @@ import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY @Data public class TenantExportReqVO { - @Schema(description = "租户名", example = "芋道") + @Schema(description = "租户名", example = "闻荫") private String name; @Schema(description = "联系人", example = "芋艿") diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/tenant/vo/tenant/TenantPageReqVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/tenant/vo/tenant/TenantPageReqVO.java index 5eb25c5e..86542401 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/tenant/vo/tenant/TenantPageReqVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/tenant/vo/tenant/TenantPageReqVO.java @@ -17,7 +17,7 @@ import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY @ToString(callSuper = true) public class TenantPageReqVO extends PageParam { - @Schema(description = "租户名", example = "芋道") + @Schema(description = "租户名", example = "闻荫") private String name; @Schema(description = "联系人", example = "芋艿") diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/user/UserController.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/user/UserController.java index 9b9c0fdb..80972da8 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/user/UserController.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/user/UserController.java @@ -167,7 +167,7 @@ public class UserController { // 手动创建导出 demo List list = Arrays.asList( UserImportExcelVO.builder().username("yunai").deptId(1L).email("yunai@iocoder.cn").mobile("15601691300") - .nickname("芋道").status(CommonStatusEnum.ENABLE.getStatus()).sex(SexEnum.MALE.getSex()).build(), + .nickname("闻荫").status(CommonStatusEnum.ENABLE.getStatus()).sex(SexEnum.MALE.getSex()).build(), UserImportExcelVO.builder().username("yuanma").deptId(2L).email("yuanma@iocoder.cn").mobile("15601701300") .nickname("源码").status(CommonStatusEnum.DISABLE.getStatus()).sex(SexEnum.FEMALE.getSex()).build() ); diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/user/vo/user/UserSimpleRespVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/user/vo/user/UserSimpleRespVO.java index 01325096..a9f2d8e9 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/user/vo/user/UserSimpleRespVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/user/vo/user/UserSimpleRespVO.java @@ -14,7 +14,7 @@ public class UserSimpleRespVO { @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Long id; - @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "闻荫") private String nickname; } diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/auth/OAuth2ClientConvert.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/auth/OAuth2ClientConvert.java index 53bcdbaf..9aa9b4de 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/auth/OAuth2ClientConvert.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/auth/OAuth2ClientConvert.java @@ -13,7 +13,7 @@ import java.util.List; /** * OAuth2 客户端 Convert * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper public interface OAuth2ClientConvert { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/errorcode/ErrorCodeConvert.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/errorcode/ErrorCodeConvert.java index a2e62356..21cee837 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/errorcode/ErrorCodeConvert.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/errorcode/ErrorCodeConvert.java @@ -16,7 +16,7 @@ import java.util.List; /** * 错误码 Convert * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper public interface ErrorCodeConvert { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/sms/SmsChannelConvert.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/sms/SmsChannelConvert.java index b5919a14..f2dcf6be 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/sms/SmsChannelConvert.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/sms/SmsChannelConvert.java @@ -15,7 +15,7 @@ import java.util.List; /** * 短信渠道 Convert * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper public interface SmsChannelConvert { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/sms/SmsLogConvert.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/sms/SmsLogConvert.java index ac217e84..4ea81f04 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/sms/SmsLogConvert.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/sms/SmsLogConvert.java @@ -12,7 +12,7 @@ import java.util.List; /** * 短信日志 Convert * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper public interface SmsLogConvert { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/tenant/TenantConvert.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/tenant/TenantConvert.java index 7c34fcec..ee0d1d6e 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/tenant/TenantConvert.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/tenant/TenantConvert.java @@ -15,7 +15,7 @@ import java.util.List; /** * 租户 Convert * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper public interface TenantConvert { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/tenant/TenantPackageConvert.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/tenant/TenantPackageConvert.java index e8ad22ba..a49c0f1e 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/tenant/TenantPackageConvert.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/tenant/TenantPackageConvert.java @@ -15,7 +15,7 @@ import java.util.List; /** * 租户套餐 Convert * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper public interface TenantPackageConvert { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/dept/DeptDO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/dept/DeptDO.java index fb351091..429c8687 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/dept/DeptDO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/dept/DeptDO.java @@ -13,7 +13,7 @@ import lombok.EqualsAndHashCode; * 部门表 * * @author ruoyi - * @author 芋道源码 + * @author 闻荫源码 */ @TableName("system_dept") @KeySequence("system_dept_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/errorcode/ErrorCodeDO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/errorcode/ErrorCodeDO.java index b37567aa..d89b62ad 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/errorcode/ErrorCodeDO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/errorcode/ErrorCodeDO.java @@ -12,7 +12,7 @@ import lombok.ToString; /** * 错误码表 * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName(value = "system_error_code") @KeySequence("system_error_code_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/logger/LoginLogDO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/logger/LoginLogDO.java index 1a1f7d73..be1d10d5 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/logger/LoginLogDO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/logger/LoginLogDO.java @@ -15,7 +15,7 @@ import lombok.ToString; * * 注意,包括登录和登出两种行为 * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName("system_login_log") @KeySequence("system_login_log_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/logger/OperateLogDO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/logger/OperateLogDO.java index fa527fb4..7c60c407 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/logger/OperateLogDO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/logger/OperateLogDO.java @@ -18,7 +18,7 @@ import java.util.Map; /** * 操作日志表 * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName(value = "system_operate_log", autoResultMap = true) @KeySequence("system_operate_log_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @@ -75,7 +75,7 @@ public class OperateLogDO extends BaseDO { private Integer type; /** * 操作内容,记录整个操作的明细 - * 例如说,修改编号为 1 的用户信息,将性别从男改成女,将姓名从芋道改成源码。 + * 例如说,修改编号为 1 的用户信息,将性别从男改成女,将姓名从闻荫改成源码。 */ private String content; /** diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/oauth2/OAuth2AccessTokenDO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/oauth2/OAuth2AccessTokenDO.java index e8b7f37e..7e8158d3 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/oauth2/OAuth2AccessTokenDO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/oauth2/OAuth2AccessTokenDO.java @@ -19,7 +19,7 @@ import java.util.List; * 如下字段,暂时未使用,暂时不支持: * user_name、authentication(用户信息) * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName(value = "system_oauth2_access_token", autoResultMap = true) @KeySequence("system_oauth2_access_token_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/oauth2/OAuth2ApproveDO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/oauth2/OAuth2ApproveDO.java index b181d346..81491965 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/oauth2/OAuth2ApproveDO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/oauth2/OAuth2ApproveDO.java @@ -15,7 +15,7 @@ import java.time.LocalDateTime; * * 用户在 sso.vue 界面时,记录接受的 scope 列表 * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName(value = "system_oauth2_approve", autoResultMap = true) @KeySequence("system_oauth2_approve_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/oauth2/OAuth2ClientDO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/oauth2/OAuth2ClientDO.java index 19cfe32a..edb563ab 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/oauth2/OAuth2ClientDO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/oauth2/OAuth2ClientDO.java @@ -16,7 +16,7 @@ import java.util.List; /** * OAuth2 客户端 DO * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName(value = "system_oauth2_client", autoResultMap = true) @KeySequence("system_oauth2_client_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/oauth2/OAuth2CodeDO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/oauth2/OAuth2CodeDO.java index a23ccdf6..1672c6b1 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/oauth2/OAuth2CodeDO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/oauth2/OAuth2CodeDO.java @@ -15,7 +15,7 @@ import java.util.List; /** * OAuth2 授权码 DO * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName(value = "system_oauth2_code", autoResultMap = true) @KeySequence("system_oauth2_code_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/oauth2/OAuth2RefreshTokenDO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/oauth2/OAuth2RefreshTokenDO.java index 58ffd246..2078af49 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/oauth2/OAuth2RefreshTokenDO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/oauth2/OAuth2RefreshTokenDO.java @@ -16,7 +16,7 @@ import java.util.List; /** * OAuth2 刷新令牌 * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName(value = "system_oauth2_refresh_token", autoResultMap = true) // 由于 Oracle 的 SEQ 的名字长度有限制,所以就先用 system_oauth2_access_token_seq 吧,反正也没啥问题 diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/sms/SmsCodeDO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/sms/SmsCodeDO.java index 6703a42b..27ab148b 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/sms/SmsCodeDO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/sms/SmsCodeDO.java @@ -12,7 +12,7 @@ import java.time.LocalDateTime; * * idx_mobile 索引:基于 {@link #mobile} 字段 * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName("system_sms_code") @KeySequence("system_sms_code_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/social/SocialUserBindDO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/social/SocialUserBindDO.java index 6c862d03..cb06dca9 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/social/SocialUserBindDO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/social/SocialUserBindDO.java @@ -11,7 +11,7 @@ import lombok.*; * 社交用户的绑定 * 即 {@link SocialUserDO} 与 UserDO 的关联表 * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName(value = "system_social_user_bind", autoResultMap = true) @KeySequence("system_social_user_bind_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/tenant/TenantDO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/tenant/TenantDO.java index 932fcae4..f7efab00 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/tenant/TenantDO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/tenant/TenantDO.java @@ -12,7 +12,7 @@ import java.time.LocalDateTime; /** * 租户 DO * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName(value = "system_tenant", autoResultMap = true) @KeySequence("system_tenant_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/tenant/TenantPackageDO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/tenant/TenantPackageDO.java index 1f353a57..fad362fa 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/tenant/TenantPackageDO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/tenant/TenantPackageDO.java @@ -13,7 +13,7 @@ import java.util.Set; /** * 租户套餐 DO * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName(value = "system_tenant_package", autoResultMap = true) @KeySequence("system_tenant_package_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/user/AdminUserDO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/user/AdminUserDO.java index fb310e09..e114b4ee 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/user/AdminUserDO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/user/AdminUserDO.java @@ -17,7 +17,7 @@ import java.util.Set; /** * 管理后台的用户 DO * - * @author 芋道源码 + * @author 闻荫源码 */ @TableName(value = "system_users", autoResultMap = true) // 由于 SQL Server 的 system_user 是关键字,所以使用 system_users @KeySequence("system_user_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/mysql/oauth2/OAuth2ClientMapper.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/mysql/oauth2/OAuth2ClientMapper.java index 6b8b224e..6e62afa7 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/mysql/oauth2/OAuth2ClientMapper.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/mysql/oauth2/OAuth2ClientMapper.java @@ -11,7 +11,7 @@ import org.apache.ibatis.annotations.Mapper; /** * OAuth2 客户端 Mapper * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper public interface OAuth2ClientMapper extends BaseMapperX { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/mysql/tenant/TenantMapper.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/mysql/tenant/TenantMapper.java index fb15cd99..09aa3dd8 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/mysql/tenant/TenantMapper.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/mysql/tenant/TenantMapper.java @@ -13,7 +13,7 @@ import java.util.List; /** * 租户 Mapper * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper public interface TenantMapper extends BaseMapperX { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/mysql/tenant/TenantPackageMapper.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/mysql/tenant/TenantPackageMapper.java index 4e59c338..8152f3ce 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/mysql/tenant/TenantPackageMapper.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/mysql/tenant/TenantPackageMapper.java @@ -12,7 +12,7 @@ import java.util.List; /** * 租户套餐 Mapper * - * @author 芋道源码 + * @author 闻荫源码 */ @Mapper public interface TenantPackageMapper extends BaseMapperX { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/redis/RedisKeyConstants.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/redis/RedisKeyConstants.java index 07ba2ae0..5a9425d6 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/redis/RedisKeyConstants.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/redis/RedisKeyConstants.java @@ -5,7 +5,7 @@ import com.win.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; /** * System Redis Key 枚举类 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface RedisKeyConstants { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/redis/oauth2/OAuth2AccessTokenRedisDAO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/redis/oauth2/OAuth2AccessTokenRedisDAO.java index 88e4c1c8..5110d0bd 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/redis/oauth2/OAuth2AccessTokenRedisDAO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/redis/oauth2/OAuth2AccessTokenRedisDAO.java @@ -19,7 +19,7 @@ import static com.win.module.system.dal.redis.RedisKeyConstants.OAUTH2_ACCESS_TO /** * {@link OAuth2AccessTokenDO} 的 RedisDAO * - * @author 芋道源码 + * @author 闻荫源码 */ @Repository public class OAuth2AccessTokenRedisDAO { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/framework/datapermission/config/DataPermissionConfiguration.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/framework/datapermission/config/DataPermissionConfiguration.java index bdec87be..51c65652 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/framework/datapermission/config/DataPermissionConfiguration.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/framework/datapermission/config/DataPermissionConfiguration.java @@ -9,7 +9,7 @@ import org.springframework.context.annotation.Configuration; /** * system 模块的数据权限 Configuration * - * @author 芋道源码 + * @author 闻荫源码 */ @Configuration(proxyBeanMethods = false) public class DataPermissionConfiguration { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/framework/package-info.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/framework/package-info.java index e12eb511..8a9aee8b 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/framework/package-info.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/framework/package-info.java @@ -1,6 +1,6 @@ /** * 属于 system 模块的 framework 封装 * - * @author 芋道源码 + * @author 闻荫源码 */ package com.win.module.system.framework; diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/framework/web/config/SystemWebConfiguration.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/framework/web/config/SystemWebConfiguration.java index 185727e3..895f2380 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/framework/web/config/SystemWebConfiguration.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/framework/web/config/SystemWebConfiguration.java @@ -8,7 +8,7 @@ import org.springframework.context.annotation.Configuration; /** * system 模块的 web 组件的 Configuration * - * @author 芋道源码 + * @author 闻荫源码 */ @Configuration(proxyBeanMethods = false) public class SystemWebConfiguration { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/mq/consumer/mail/MailSendConsumer.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/mq/consumer/mail/MailSendConsumer.java index a68b704e..d4c72ce1 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/mq/consumer/mail/MailSendConsumer.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/mq/consumer/mail/MailSendConsumer.java @@ -12,7 +12,7 @@ import javax.annotation.Resource; /** * 针对 {@link MailSendMessage} 的消费者 * - * @author 芋道源码 + * @author 闻荫源码 */ @Component @Slf4j diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/mq/message/mail/MailSendMessage.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/mq/message/mail/MailSendMessage.java index 216fa977..34d08537 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/mq/message/mail/MailSendMessage.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/mq/message/mail/MailSendMessage.java @@ -10,7 +10,7 @@ import javax.validation.constraints.NotNull; /** * 邮箱发送消息 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data @EqualsAndHashCode(callSuper = true) diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/mq/message/sms/SmsSendMessage.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/mq/message/sms/SmsSendMessage.java index 7632f651..ffab85b5 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/mq/message/sms/SmsSendMessage.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/mq/message/sms/SmsSendMessage.java @@ -11,7 +11,7 @@ import java.util.List; /** * 短信发送消息 * - * @author 芋道源码 + * @author 闻荫源码 */ @Data @EqualsAndHashCode(callSuper = true) diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/auth/AdminAuthService.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/auth/AdminAuthService.java index 4f528647..c2b97468 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/auth/AdminAuthService.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/auth/AdminAuthService.java @@ -10,7 +10,7 @@ import javax.validation.Valid; * * 提供用户的登录、登出的能力 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface AdminAuthService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/auth/AdminAuthServiceImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/auth/AdminAuthServiceImpl.java index 0e059b79..c07e6016 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/auth/AdminAuthServiceImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/auth/AdminAuthServiceImpl.java @@ -42,7 +42,7 @@ import static com.win.module.system.enums.ErrorCodeConstants.*; /** * Auth Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Slf4j diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dept/DeptService.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dept/DeptService.java index 5cff61f3..8f0611a7 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dept/DeptService.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dept/DeptService.java @@ -12,7 +12,7 @@ import java.util.*; /** * 部门 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface DeptService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dept/DeptServiceImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dept/DeptServiceImpl.java index e78de2c9..94d8914c 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dept/DeptServiceImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dept/DeptServiceImpl.java @@ -29,7 +29,7 @@ import static com.win.module.system.enums.ErrorCodeConstants.*; /** * 部门 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dept/PostService.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dept/PostService.java index e58d97aa..98aa38f3 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dept/PostService.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dept/PostService.java @@ -17,7 +17,7 @@ import static com.win.framework.common.util.collection.SetUtils.asSet; /** * 岗位 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface PostService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dept/PostServiceImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dept/PostServiceImpl.java index 175c3c15..c63ea73a 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dept/PostServiceImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dept/PostServiceImpl.java @@ -25,7 +25,7 @@ import static com.win.module.system.enums.ErrorCodeConstants.*; /** * 岗位 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dict/DictTypeService.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dict/DictTypeService.java index e375cc20..f13b5846 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dict/DictTypeService.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dict/DictTypeService.java @@ -12,7 +12,7 @@ import java.util.List; /** * 字典类型 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface DictTypeService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dict/DictTypeServiceImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dict/DictTypeServiceImpl.java index ea79f421..21a4f272 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dict/DictTypeServiceImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/dict/DictTypeServiceImpl.java @@ -23,7 +23,7 @@ import static com.win.module.system.enums.ErrorCodeConstants.*; /** * 字典类型 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service public class DictTypeServiceImpl implements DictTypeService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/errorcode/ErrorCodeService.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/errorcode/ErrorCodeService.java index 9ff06f46..ce250422 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/errorcode/ErrorCodeService.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/errorcode/ErrorCodeService.java @@ -16,7 +16,7 @@ import java.util.List; /** * 错误码 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface ErrorCodeService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/logger/OperateLogService.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/logger/OperateLogService.java index e9b19fbb..1eeb5f14 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/logger/OperateLogService.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/logger/OperateLogService.java @@ -11,7 +11,7 @@ import java.util.List; /** * 操作日志 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface OperateLogService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/member/MemberService.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/member/MemberService.java index ada68109..017e229c 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/member/MemberService.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/member/MemberService.java @@ -3,7 +3,7 @@ package com.win.module.system.service.member; /** * Member Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface MemberService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/member/MemberServiceImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/member/MemberServiceImpl.java index 9ee84de1..7669ed35 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/member/MemberServiceImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/member/MemberServiceImpl.java @@ -9,7 +9,7 @@ import org.springframework.stereotype.Service; /** * Member Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service public class MemberServiceImpl implements MemberService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/notice/NoticeServiceImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/notice/NoticeServiceImpl.java index c357f368..7e01f109 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/notice/NoticeServiceImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/notice/NoticeServiceImpl.java @@ -18,7 +18,7 @@ import static com.win.module.system.enums.ErrorCodeConstants.NOTICE_NOT_FOUND; /** * 通知公告 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service public class NoticeServiceImpl implements NoticeService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2ApproveService.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2ApproveService.java index cc97df6a..536c9727 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2ApproveService.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2ApproveService.java @@ -11,7 +11,7 @@ import java.util.Map; * * 从功能上,和 Spring Security OAuth 的 ApprovalStoreUserApprovalHandler 的功能,记录用户针对指定客户端的授权,减少手动确定。 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface OAuth2ApproveService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2ApproveServiceImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2ApproveServiceImpl.java index 442ef27b..dd37ecde 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2ApproveServiceImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2ApproveServiceImpl.java @@ -20,7 +20,7 @@ import static com.win.framework.common.util.collection.CollectionUtils.convertSe /** * OAuth2 批准 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2ClientService.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2ClientService.java index 3972771e..8a3bddd3 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2ClientService.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2ClientService.java @@ -14,7 +14,7 @@ import java.util.Collection; * * 从功能上,和 JdbcClientDetailsService 的功能,提供客户端的操作 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface OAuth2ClientService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2ClientServiceImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2ClientServiceImpl.java index 74bf4f1b..1e89141c 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2ClientServiceImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2ClientServiceImpl.java @@ -30,7 +30,7 @@ import static com.win.module.system.enums.ErrorCodeConstants.*; /** * OAuth2.0 Client Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2CodeService.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2CodeService.java index ef0b173a..044bf582 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2CodeService.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2CodeService.java @@ -9,7 +9,7 @@ import java.util.List; * * 从功能上,和 Spring Security OAuth 的 JdbcAuthorizationCodeServices 的功能,提供授权码的操作 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface OAuth2CodeService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2CodeServiceImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2CodeServiceImpl.java index 4628b31a..f02d8a9e 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2CodeServiceImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2CodeServiceImpl.java @@ -18,7 +18,7 @@ import static com.win.module.system.enums.ErrorCodeConstants.OAUTH2_CODE_NOT_EXI /** * OAuth2.0 授权码 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2GrantService.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2GrantService.java index 4d87fa04..f30cbabb 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2GrantService.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2GrantService.java @@ -14,7 +14,7 @@ import java.util.List; * 问题:为什么自身也作为一个第三方应用,也走这套流程呢? * 回复:当然可以这么做,采用 password 模式。考虑到大多数开发者使用不到这个特性,OAuth2.0 毕竟有一定学习成本,所以暂时没有采取这种方式。 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface OAuth2GrantService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2GrantServiceImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2GrantServiceImpl.java index db00f1c2..b60e857c 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2GrantServiceImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2GrantServiceImpl.java @@ -19,7 +19,7 @@ import static com.win.framework.common.exception.util.ServiceExceptionUtil.excep /** * OAuth2 授予 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service public class OAuth2GrantServiceImpl implements OAuth2GrantService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2TokenService.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2TokenService.java index a94005e5..8ceed979 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2TokenService.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2TokenService.java @@ -11,7 +11,7 @@ import java.util.List; * * 从功能上,和 Spring Security OAuth 的 DefaultTokenServices + JdbcTokenStore 的功能,提供访问令牌、刷新令牌的操作 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface OAuth2TokenService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2TokenServiceImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2TokenServiceImpl.java index 74ff5405..99a25dd9 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2TokenServiceImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/oauth2/OAuth2TokenServiceImpl.java @@ -28,7 +28,7 @@ import static com.win.framework.common.util.collection.CollectionUtils.convertSe /** * OAuth2.0 Token Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service public class OAuth2TokenServiceImpl implements OAuth2TokenService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/MenuService.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/MenuService.java index c444015e..49bd5751 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/MenuService.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/MenuService.java @@ -11,7 +11,7 @@ import java.util.List; /** * 菜单 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface MenuService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/MenuServiceImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/MenuServiceImpl.java index d3c18795..a018c7ea 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/MenuServiceImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/MenuServiceImpl.java @@ -30,7 +30,7 @@ import static com.win.module.system.enums.ErrorCodeConstants.*; /** * 菜单 Service 实现 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Slf4j diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/PermissionService.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/PermissionService.java index 081b2531..c683a596 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/PermissionService.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/PermissionService.java @@ -12,7 +12,7 @@ import static java.util.Collections.singleton; *

* 提供用户-角色、角色-菜单、角色-部门的关联权限处理 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface PermissionService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/PermissionServiceImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/PermissionServiceImpl.java index 22405c92..aad386f7 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/PermissionServiceImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/PermissionServiceImpl.java @@ -39,7 +39,7 @@ import static com.win.framework.common.util.json.JsonUtils.toJsonString; /** * 权限 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Slf4j diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/RoleService.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/RoleService.java index ca874f55..6f7d269d 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/RoleService.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/RoleService.java @@ -15,7 +15,7 @@ import java.util.Set; /** * 角色 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface RoleService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/RoleServiceImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/RoleServiceImpl.java index b996c6fe..40948d43 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/RoleServiceImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/RoleServiceImpl.java @@ -36,7 +36,7 @@ import static com.win.module.system.enums.ErrorCodeConstants.*; /** * 角色 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Slf4j diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/bo/RoleCreateReqBO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/bo/RoleCreateReqBO.java index ad01efa7..6a2d0a86 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/bo/RoleCreateReqBO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/permission/bo/RoleCreateReqBO.java @@ -9,7 +9,7 @@ import javax.validation.constraints.Size; /** * 角色创建 Request BO * - * @author 芋道源码 + * @author 闻荫源码 */ @Data public class RoleCreateReqBO { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/sms/SmsCodeService.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/sms/SmsCodeService.java index 88596a94..2d5d1803 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/sms/SmsCodeService.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/sms/SmsCodeService.java @@ -10,7 +10,7 @@ import javax.validation.Valid; /** * 短信验证码 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface SmsCodeService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/sms/SmsCodeServiceImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/sms/SmsCodeServiceImpl.java index 05b322db..2be349f1 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/sms/SmsCodeServiceImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/sms/SmsCodeServiceImpl.java @@ -24,7 +24,7 @@ import static com.win.module.system.enums.ErrorCodeConstants.*; /** * 短信验证码 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/sms/SmsSendService.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/sms/SmsSendService.java index 521bef82..6e5c922d 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/sms/SmsSendService.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/sms/SmsSendService.java @@ -8,7 +8,7 @@ import java.util.Map; /** * 短信发送 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface SmsSendService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/sms/SmsSendServiceImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/sms/SmsSendServiceImpl.java index 3b4ae765..771bed59 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/sms/SmsSendServiceImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/sms/SmsSendServiceImpl.java @@ -32,7 +32,7 @@ import static com.win.module.system.enums.ErrorCodeConstants.*; /** * 短信发送 Service 发送的实现 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service public class SmsSendServiceImpl implements SmsSendService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/social/SocialUserService.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/social/SocialUserService.java index c8ef99de..e0338f2c 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/social/SocialUserService.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/social/SocialUserService.java @@ -13,7 +13,7 @@ import java.util.List; /** * 社交用户 Service 接口,例如说社交平台的授权登录 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface SocialUserService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/social/SocialUserServiceImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/social/SocialUserServiceImpl.java index 4d26ca0f..2892b6ed 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/social/SocialUserServiceImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/social/SocialUserServiceImpl.java @@ -33,7 +33,7 @@ import static com.win.module.system.enums.ErrorCodeConstants.*; /** * 社交用户 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/tenant/TenantPackageService.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/tenant/TenantPackageService.java index 33f65d31..9bfe5114 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/tenant/TenantPackageService.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/tenant/TenantPackageService.java @@ -12,7 +12,7 @@ import java.util.List; /** * 租户套餐 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface TenantPackageService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/tenant/TenantPackageServiceImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/tenant/TenantPackageServiceImpl.java index e1a9a183..449b27cf 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/tenant/TenantPackageServiceImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/tenant/TenantPackageServiceImpl.java @@ -24,7 +24,7 @@ import static com.win.module.system.enums.ErrorCodeConstants.*; /** * 租户套餐 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/tenant/TenantService.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/tenant/TenantService.java index 4fa6cf61..1f6580bd 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/tenant/TenantService.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/tenant/TenantService.java @@ -17,7 +17,7 @@ import java.util.Set; /** * 租户 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface TenantService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/tenant/TenantServiceImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/tenant/TenantServiceImpl.java index 00ef2ede..a3a890b0 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/tenant/TenantServiceImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/tenant/TenantServiceImpl.java @@ -48,7 +48,7 @@ import static java.util.Collections.singleton; /** * 租户 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service @Validated diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/tenant/handler/TenantInfoHandler.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/tenant/handler/TenantInfoHandler.java index bed30178..42f553ed 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/tenant/handler/TenantInfoHandler.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/tenant/handler/TenantInfoHandler.java @@ -6,7 +6,7 @@ import com.win.module.system.dal.dataobject.tenant.TenantDO; * 租户信息处理 * 目的:尽量减少租户逻辑耦合到系统中 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface TenantInfoHandler { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/tenant/handler/TenantMenuHandler.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/tenant/handler/TenantMenuHandler.java index 999040a8..55a1c022 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/tenant/handler/TenantMenuHandler.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/tenant/handler/TenantMenuHandler.java @@ -6,7 +6,7 @@ import java.util.Set; * 租户菜单处理 * 目的:尽量减少租户逻辑耦合到系统中 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface TenantMenuHandler { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/user/AdminUserService.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/user/AdminUserService.java index f3887633..48f77282 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/user/AdminUserService.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/user/AdminUserService.java @@ -15,7 +15,7 @@ import java.util.*; /** * 后台用户 Service 接口 * - * @author 芋道源码 + * @author 闻荫源码 */ public interface AdminUserService { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/user/AdminUserServiceImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/user/AdminUserServiceImpl.java index 780dd523..691483d0 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/user/AdminUserServiceImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/user/AdminUserServiceImpl.java @@ -44,7 +44,7 @@ import static com.win.module.system.enums.ErrorCodeConstants.*; /** * 后台用户 Service 实现类 * - * @author 芋道源码 + * @author 闻荫源码 */ @Service("adminUserService") @Slf4j diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/util/collection/SimpleTrie.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/util/collection/SimpleTrie.java index 3ae8a9de..6e572ea8 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/util/collection/SimpleTrie.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/util/collection/SimpleTrie.java @@ -9,7 +9,7 @@ import java.util.*; *

* 相比 Apache Common 提供的 PatriciaTrie 来说,性能可能会更加好一些。 * - * @author 芋道源码 + * @author 闻荫源码 */ @SuppressWarnings("unchecked") public class SimpleTrie { diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/util/oauth2/OAuth2Utils.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/util/oauth2/OAuth2Utils.java index 1d0c5edb..749b11b8 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/util/oauth2/OAuth2Utils.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/util/oauth2/OAuth2Utils.java @@ -13,7 +13,7 @@ import java.util.*; /** * OAuth2 相关的工具类 * - * @author 芋道源码 + * @author 闻荫源码 */ public class OAuth2Utils { diff --git a/win-module-system/win-module-system-biz/src/test-integration/java/com/win/module/system/job/SchedulerManagerTest.java b/win-module-system/win-module-system-biz/src/test-integration/java/com/win/module/system/job/SchedulerManagerTest.java deleted file mode 100644 index e6d27d47..00000000 --- a/win-module-system/win-module-system-biz/src/test-integration/java/com/win/module/system/job/SchedulerManagerTest.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.win.module.system.job; - -import cn.hutool.core.util.StrUtil; -import com.win.framework.quartz.core.scheduler.SchedulerManager; -import com.win.module.system.job.auth.UserSessionTimeoutJob; -import com.win.module.system.test.BaseDbUnitTest; -import org.junit.jupiter.api.Test; -import org.quartz.SchedulerException; - -import javax.annotation.Resource; - -public class SchedulerManagerTest extends BaseDbUnitTest { - - @Resource - private SchedulerManager schedulerManager; - - @Test - public void testAddJob() throws SchedulerException { - String jobHandlerName = StrUtil.lowerFirst(UserSessionTimeoutJob.class.getSimpleName()); - schedulerManager.addJob(1L, jobHandlerName, "test", "0/10 * * * * ? *", 0, 0); - } - - @Test - public void testUpdateJob() throws SchedulerException { - String jobHandlerName = StrUtil.lowerFirst(UserSessionTimeoutJob.class.getSimpleName()); - schedulerManager.updateJob(jobHandlerName, "hahaha", "0/20 * * * * ? *", 0, 0); - } - - @Test - public void testDeleteJob() throws SchedulerException { - String jobHandlerName = StrUtil.lowerFirst(UserSessionTimeoutJob.class.getSimpleName()); - schedulerManager.deleteJob(jobHandlerName); - } - - @Test - public void testPauseJob() throws SchedulerException { - String jobHandlerName = StrUtil.lowerFirst(UserSessionTimeoutJob.class.getSimpleName()); - schedulerManager.pauseJob(jobHandlerName); - } - - @Test - public void testResumeJob() throws SchedulerException { - String jobHandlerName = StrUtil.lowerFirst(UserSessionTimeoutJob.class.getSimpleName()); - schedulerManager.resumeJob(jobHandlerName); - } - - @Test - public void testTriggerJob() throws SchedulerException { - String jobHandlerName = StrUtil.lowerFirst(UserSessionTimeoutJob.class.getSimpleName()); - schedulerManager.triggerJob(1L, jobHandlerName, "niubi!!!"); - } - -} diff --git a/win-module-system/win-module-system-biz/src/test-integration/java/com/win/module/system/mq/RedisStreamTest.java b/win-module-system/win-module-system-biz/src/test-integration/java/com/win/module/system/mq/RedisStreamTest.java deleted file mode 100644 index f18de1cb..00000000 --- a/win-module-system/win-module-system-biz/src/test-integration/java/com/win/module/system/mq/RedisStreamTest.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.win.module.system.mq; - -import cn.hutool.core.thread.ThreadUtil; -import com.win.framework.mq.core.RedisMQTemplate; -import com.win.module.system.mq.consumer.mail.MailSendConsumer; -import com.win.module.system.mq.consumer.sms.SmsSendConsumer; -import com.win.module.system.mq.message.mail.MailSendMessage; -import com.win.module.system.mq.message.sms.SmsSendMessage; -import com.win.module.system.test.BaseRedisIntegrationTest; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; -import org.springframework.data.redis.core.RedisTemplate; - -import javax.annotation.Resource; -import java.util.concurrent.TimeUnit; - -public class RedisStreamTest { - - @Import({SmsSendConsumer.class, MailSendConsumer.class}) - @Disabled - public static class ConsumerTest extends BaseRedisIntegrationTest { - - @Test - public void testConsumer() { - ThreadUtil.sleep(1, TimeUnit.DAYS); - } - - } - - @Disabled - public static class ProducerTest extends BaseRedisIntegrationTest { - - @Resource - private RedisMQTemplate redisMQTemplate; - - @Resource - private RedisTemplate redisTemplate; - - @Test - public void testProducer01() { - for (int i = 0; i < 100; i++) { - // 创建消息 - SmsSendMessage message = new SmsSendMessage(); - message.setMobile("15601691300").setApiTemplateId("test:" + i); - // 发送消息 - redisMQTemplate.send(message); - } - } - - @Test - public void testProducer02() { - // 创建消息 - MailSendMessage message = new MailSendMessage(); - message.setAddress("fangfang@mihayou.com").setTemplateCode("test"); - // 发送消息 - redisMQTemplate.send(message); - } - - } - -} diff --git a/win-module-system/win-module-system-biz/src/test-integration/java/com/win/module/system/service/package-info.java b/win-module-system/win-module-system-biz/src/test-integration/java/com/win/module/system/service/package-info.java deleted file mode 100644 index 5e7ebdf8..00000000 --- a/win-module-system/win-module-system-biz/src/test-integration/java/com/win/module/system/service/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * 占位 - */ -package com.win.module.system.service; diff --git a/win-module-system/win-module-system-biz/src/test-integration/java/com/win/module/system/service/sms/SmsServiceIntegrationTest.java b/win-module-system/win-module-system-biz/src/test-integration/java/com/win/module/system/service/sms/SmsServiceIntegrationTest.java deleted file mode 100644 index 03c8a7dc..00000000 --- a/win-module-system/win-module-system-biz/src/test-integration/java/com/win/module/system/service/sms/SmsServiceIntegrationTest.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.win.module.system.service.sms; - -import cn.hutool.core.map.MapUtil; -import cn.hutool.core.thread.ThreadUtil; -import com.win.framework.common.enums.UserTypeEnum; -import com.win.framework.sms.config.WinSmsAutoConfiguration; -import com.win.module.system.test.BaseDbAndRedisIntegrationTest; -import com.win.module.system.mq.consumer.sms.SmsSendConsumer; -import com.win.module.system.mq.producer.sms.SmsProducer; -import com.win.module.system.service.user.AdminUserService; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.Map; -import java.util.concurrent.TimeUnit; - -// TODO @芋艿:需要迁移 -@Import({WinSmsAutoConfiguration.class, - SmsChannelServiceImpl.class, SmsSendServiceImpl.class, SmsTemplateServiceImpl.class, SmsLogServiceImpl.class, - SmsProducer.class, SmsSendConsumer.class}) -public class SmsServiceIntegrationTest extends BaseDbAndRedisIntegrationTest { - - @Resource - private SmsSendServiceImpl smsService; - @Resource - private SmsChannelServiceImpl smsChannelService; - - @MockBean - private AdminUserService userService; - - @Test - public void testSendSingleSms_aliyunSuccess() { - // 参数准备 - String mobile = "15601691399"; - Long userId = 1L; - Integer userType = UserTypeEnum.ADMIN.getValue(); - String templateCode = "test_02"; - Map templateParams = MapUtil.builder() - .put("code", "1234").build(); - // 调用 - smsService.sendSingleSms(mobile, userId, userType, templateCode, templateParams); - - // 等待 MQ 消费 - ThreadUtil.sleep(1, TimeUnit.HOURS); - } - -// @Test -// public void testDoSendSms() { -// // 等待 MQ 消费 -// ThreadUtil.sleep(1, TimeUnit.HOURS); -// } - -} diff --git a/win-module-system/win-module-system-biz/src/test-integration/java/com/win/module/system/test/BaseDbAndRedisIntegrationTest.java b/win-module-system/win-module-system-biz/src/test-integration/java/com/win/module/system/test/BaseDbAndRedisIntegrationTest.java deleted file mode 100644 index b3764353..00000000 --- a/win-module-system/win-module-system-biz/src/test-integration/java/com/win/module/system/test/BaseDbAndRedisIntegrationTest.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.win.module.system.test; - -import com.win.framework.datasource.config.WinDataSourceAutoConfiguration; -import com.win.framework.mybatis.config.WinMybatisAutoConfiguration; -import com.win.framework.redis.config.WinRedisAutoConfiguration; -import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration; -import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration; -import org.redisson.spring.starter.RedissonAutoConfiguration; -import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.context.annotation.Import; -import org.springframework.test.context.ActiveProfiles; - -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseDbAndRedisIntegrationTest.Application.class) -@ActiveProfiles("integration-test") // 设置使用 application-integration-test 配置文件 -public class BaseDbAndRedisIntegrationTest { - - @Import({ - // DB 配置类 - DynamicDataSourceAutoConfiguration.class, // Dynamic Datasource 配置类 - WinDataSourceAutoConfiguration.class, // 自己的 DB 配置类 - DataSourceAutoConfiguration.class, // Spring DB 自动配置类 - DataSourceTransactionManagerAutoConfiguration.class, // Spring 事务自动配置类 - // MyBatis 配置类 - WinMybatisAutoConfiguration.class, // 自己的 MyBatis 配置类 - MybatisPlusAutoConfiguration.class, // MyBatis 的自动配置类 - - // Redis 配置类 - RedisAutoConfiguration.class, // Spring Redis 自动配置类 - WinRedisAutoConfiguration.class, // 自己的 Redis 配置类 - RedissonAutoConfiguration.class, // Redisson 自动高配置类 - }) - public static class Application { - } - -} diff --git a/win-module-system/win-module-system-biz/src/test-integration/java/com/win/module/system/test/BaseRedisIntegrationTest.java b/win-module-system/win-module-system-biz/src/test-integration/java/com/win/module/system/test/BaseRedisIntegrationTest.java deleted file mode 100644 index f5622c5d..00000000 --- a/win-module-system/win-module-system-biz/src/test-integration/java/com/win/module/system/test/BaseRedisIntegrationTest.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.win.module.system.test; - -import com.win.framework.redis.config.WinRedisAutoConfiguration; -import org.redisson.spring.starter.RedissonAutoConfiguration; -import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.context.annotation.Import; -import org.springframework.test.context.ActiveProfiles; - -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseRedisIntegrationTest.Application.class) -@ActiveProfiles("integration-test") // 设置使用 application-integration-test 配置文件 -public class BaseRedisIntegrationTest { - - @Import({ - // Redis 配置类 - RedisAutoConfiguration.class, // Spring Redis 自动配置类 - WinRedisAutoConfiguration.class, // 自己的 Redis 配置类 - RedissonAutoConfiguration.class, // Redisson 自动高配置类 - }) - public static class Application { - } - -} diff --git a/win-module-system/win-module-system-biz/src/test-integration/resources/application-integration-test.yaml b/win-module-system/win-module-system-biz/src/test-integration/resources/application-integration-test.yaml deleted file mode 100644 index d9740a11..00000000 --- a/win-module-system/win-module-system-biz/src/test-integration/resources/application-integration-test.yaml +++ /dev/null @@ -1,108 +0,0 @@ -spring: - main: - lazy-initialization: true # 开启懒加载,加快速度 - banner-mode: off # 单元测试,禁用 Banner - ---- #################### 数据库相关配置 #################### - -spring: - # 数据源配置项 - autoconfigure: - exclude: - - com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源 - datasource: - druid: # Druid 【监控】相关的全局配置 - web-stat-filter: - enabled: true - stat-view-servlet: - enabled: true - allow: # 设置白名单,不填则允许所有访问 - url-pattern: /druid/* - login-username: # 控制台管理用户名和密码 - login-password: - filter: - stat: - enabled: true - log-slow-sql: true # 慢 SQL 记录 - slow-sql-millis: 100 - merge-sql: true - wall: - config: - multi-statement-allow: true - dynamic: # 多数据源配置 - druid: # Druid 【连接池】相关的全局配置 - initial-size: 5 # 初始连接数 - min-idle: 10 # 最小连接池数量 - max-active: 20 # 最大连接池数量 - max-wait: 600000 # 配置获取连接等待超时的时间,单位:毫秒 - time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位:毫秒 - min-evictable-idle-time-millis: 300000 # 配置一个连接在池中最小生存的时间,单位:毫秒 - max-evictable-idle-time-millis: 900000 # 配置一个连接在池中最大生存的时间,单位:毫秒 - validation-query: SELECT 1 FROM DUAL # 配置检测连接是否有效 - test-while-idle: true - test-on-borrow: false - test-on-return: false - primary: master - datasource: - master: - name: ruoyi-vue-pro - url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT - driver-class-name: com.mysql.jdbc.Driver - username: root - password: 123456 - slave: # 模拟从库,可根据自己需要修改 - name: ruoyi-vue-pro - url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT - driver-class-name: com.mysql.jdbc.Driver - username: root - password: 123456 - - # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优 - redis: - host: 127.0.0.1 # 地址 - port: 6379 # 端口 - database: 0 # 数据库索引 - -mybatis: - lazy-initialization: true # 单元测试,设置 MyBatis Mapper 延迟加载,加速每个单元测试 - ---- #################### 定时任务相关配置 #################### - ---- #################### 配置中心相关配置 #################### - ---- #################### 服务保障相关配置 #################### - -# Lock4j 配置项(单元测试,禁用 Lock4j) - -# Resilience4j 配置项 -resilience4j: - ratelimiter: - instances: - backendA: - limit-for-period: 1 # 每个周期内,允许的请求数。默认为 50 - limit-refresh-period: 60s # 每个周期的时长,单位:微秒。默认为 500 - timeout-duration: 1s # 被限流时,阻塞等待的时长,单位:微秒。默认为 5s - register-health-indicator: true # 是否注册到健康监测 - ---- #################### 监控相关配置 #################### - ---- #################### 芋道相关配置 #################### - -# 芋道配置项,设置当前项目所有自定义的配置 -win: - security: - token-header: Authorization - token-secret: abcdefghijklmnopqrstuvwxyz - token-timeout: 1d - session-timeout: 30m - mock-enable: true - mock-secret: test - swagger: - enable: false # 单元测试,禁用 Swagger - file: - base-path: http://127.0.0.1:${server.port}/${win.web.api-prefix}/file/get/ - xss: - enable: false - exclude-urls: # 如下两个 url,仅仅是为了演示,去掉配置也没关系 - - ${spring.boot.admin.context-path}/** # 不处理 Spring Boot Admin 的请求 - - ${management.endpoints.web.base-path}/** # 不处理 Actuator 的请求 diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/controller/admin/oauth2/OAuth2OpenControllerTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/controller/admin/oauth2/OAuth2OpenControllerTest.java deleted file mode 100644 index 85bbcb75..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/controller/admin/oauth2/OAuth2OpenControllerTest.java +++ /dev/null @@ -1,337 +0,0 @@ -package com.win.module.system.controller.admin.oauth2; - -import cn.hutool.core.collection.ListUtil; -import cn.hutool.core.date.LocalDateTimeUtil; -import cn.hutool.core.map.MapUtil; -import com.win.framework.common.core.KeyValue; -import com.win.framework.common.enums.UserTypeEnum; -import com.win.framework.common.exception.ErrorCode; -import com.win.framework.common.pojo.CommonResult; -import com.win.framework.common.util.collection.SetUtils; -import com.win.framework.common.util.object.ObjectUtils; -import com.win.framework.test.core.ut.BaseMockitoUnitTest; -import com.win.module.system.controller.admin.oauth2.vo.open.OAuth2OpenAccessTokenRespVO; -import com.win.module.system.controller.admin.oauth2.vo.open.OAuth2OpenAuthorizeInfoRespVO; -import com.win.module.system.controller.admin.oauth2.vo.open.OAuth2OpenCheckTokenRespVO; -import com.win.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; -import com.win.module.system.dal.dataobject.oauth2.OAuth2ApproveDO; -import com.win.module.system.dal.dataobject.oauth2.OAuth2ClientDO; -import com.win.module.system.enums.oauth2.OAuth2GrantTypeEnum; -import com.win.module.system.service.oauth2.OAuth2ApproveService; -import com.win.module.system.service.oauth2.OAuth2ClientService; -import com.win.module.system.service.oauth2.OAuth2GrantService; -import com.win.module.system.service.oauth2.OAuth2TokenService; -import org.assertj.core.util.Lists; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; - -import javax.servlet.http.HttpServletRequest; -import java.time.LocalDateTime; -import java.time.temporal.ChronoUnit; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; - -import static com.win.framework.common.util.collection.SetUtils.asSet; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.randomPojo; -import static com.win.framework.test.core.util.RandomUtils.randomString; -import static java.util.Arrays.asList; -import static org.hamcrest.CoreMatchers.anyOf; -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.ArgumentMatchers.isNull; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -/** - * {@link OAuth2OpenController} 的单元测试 - * - * @author 芋道源码 - */ -public class OAuth2OpenControllerTest extends BaseMockitoUnitTest { - - @InjectMocks - private OAuth2OpenController oauth2OpenController; - - @Mock - private OAuth2GrantService oauth2GrantService; - @Mock - private OAuth2ClientService oauth2ClientService; - @Mock - private OAuth2ApproveService oauth2ApproveService; - @Mock - private OAuth2TokenService oauth2TokenService; - - @Test - public void testPostAccessToken_authorizationCode() { - // 准备参数 - String granType = OAuth2GrantTypeEnum.AUTHORIZATION_CODE.getGrantType(); - String code = randomString(); - String redirectUri = randomString(); - String state = randomString(); - HttpServletRequest request = mockRequest("test_client_id", "test_client_secret"); - // mock 方法(client) - OAuth2ClientDO client = randomPojo(OAuth2ClientDO.class).setClientId("test_client_id"); - when(oauth2ClientService.validOAuthClientFromCache(eq("test_client_id"), eq("test_client_secret"), eq(granType), eq(new ArrayList<>()), eq(redirectUri))).thenReturn(client); - - // mock 方法(访问令牌) - OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class) - .setExpiresTime(LocalDateTimeUtil.offset(LocalDateTime.now(), 30000L, ChronoUnit.MILLIS)); - when(oauth2GrantService.grantAuthorizationCodeForAccessToken(eq("test_client_id"), - eq(code), eq(redirectUri), eq(state))).thenReturn(accessTokenDO); - - // 调用 - CommonResult result = oauth2OpenController.postAccessToken(request, granType, - code, redirectUri, state, null, null, null, null); - // 断言 - assertEquals(0, result.getCode()); - assertPojoEquals(accessTokenDO, result.getData()); - assertTrue(ObjectUtils.equalsAny(result.getData().getExpiresIn(), 29L, 30L)); // 执行过程会过去几毫秒 - } - - @Test - public void testPostAccessToken_password() { - // 准备参数 - String granType = OAuth2GrantTypeEnum.PASSWORD.getGrantType(); - String username = randomString(); - String password = randomString(); - String scope = "write read"; - HttpServletRequest request = mockRequest("test_client_id", "test_client_secret"); - // mock 方法(client) - OAuth2ClientDO client = randomPojo(OAuth2ClientDO.class).setClientId("test_client_id"); - when(oauth2ClientService.validOAuthClientFromCache(eq("test_client_id"), eq("test_client_secret"), - eq(granType), eq(Lists.newArrayList("write", "read")), isNull())).thenReturn(client); - - // mock 方法(访问令牌) - OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class) - .setExpiresTime(LocalDateTimeUtil.offset(LocalDateTime.now(), 30000L, ChronoUnit.MILLIS)); - when(oauth2GrantService.grantPassword(eq(username), eq(password), eq("test_client_id"), - eq(Lists.newArrayList("write", "read")))).thenReturn(accessTokenDO); - - // 调用 - CommonResult result = oauth2OpenController.postAccessToken(request, granType, - null, null, null, username, password, scope, null); - // 断言 - assertEquals(0, result.getCode()); - assertPojoEquals(accessTokenDO, result.getData()); - assertTrue(ObjectUtils.equalsAny(result.getData().getExpiresIn(), 29L, 30L)); // 执行过程会过去几毫秒 - } - - @Test - public void testPostAccessToken_refreshToken() { - // 准备参数 - String granType = OAuth2GrantTypeEnum.REFRESH_TOKEN.getGrantType(); - String refreshToken = randomString(); - String password = randomString(); - HttpServletRequest request = mockRequest("test_client_id", "test_client_secret"); - // mock 方法(client) - OAuth2ClientDO client = randomPojo(OAuth2ClientDO.class).setClientId("test_client_id"); - when(oauth2ClientService.validOAuthClientFromCache(eq("test_client_id"), eq("test_client_secret"), - eq(granType), eq(Lists.newArrayList()), isNull())).thenReturn(client); - - // mock 方法(访问令牌) - OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class) - .setExpiresTime(LocalDateTimeUtil.offset(LocalDateTime.now(), 30000L, ChronoUnit.MILLIS)); - when(oauth2GrantService.grantRefreshToken(eq(refreshToken), eq("test_client_id"))).thenReturn(accessTokenDO); - - // 调用 - CommonResult result = oauth2OpenController.postAccessToken(request, granType, - null, null, null, null, password, null, refreshToken); - // 断言 - assertEquals(0, result.getCode()); - assertPojoEquals(accessTokenDO, result.getData()); - assertTrue(ObjectUtils.equalsAny(result.getData().getExpiresIn(), 29L, 30L)); // 执行过程会过去几毫秒 - } - - @Test - public void testPostAccessToken_implicit() { - // 调用,并断言 - assertServiceException(() -> oauth2OpenController.postAccessToken(null, - OAuth2GrantTypeEnum.IMPLICIT.getGrantType(), null, null, null, - null, null, null, null), - new ErrorCode(400, "Token 接口不支持 implicit 授权模式")); - } - - @Test - public void testRevokeToken() { - // 准备参数 - HttpServletRequest request = mockRequest("demo_client_id", "demo_client_secret"); - String token = randomString(); - // mock 方法(client) - OAuth2ClientDO client = randomPojo(OAuth2ClientDO.class).setClientId("demo_client_id"); - when(oauth2ClientService.validOAuthClientFromCache(eq("demo_client_id"), - eq("demo_client_secret"), isNull(), isNull(), isNull())).thenReturn(client); - // mock 方法(移除) - when(oauth2GrantService.revokeToken(eq("demo_client_id"), eq(token))).thenReturn(true); - - // 调用 - CommonResult result = oauth2OpenController.revokeToken(request, token); - // 断言 - assertEquals(0, result.getCode()); - assertTrue(result.getData()); - } - - @Test - public void testCheckToken() { - // 准备参数 - HttpServletRequest request = mockRequest("demo_client_id", "demo_client_secret"); - String token = randomString(); - // mock 方法 - OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class).setUserType(UserTypeEnum.ADMIN.getValue()).setExpiresTime(LocalDateTimeUtil.of(1653485731195L)); - when(oauth2TokenService.checkAccessToken(eq(token))).thenReturn(accessTokenDO); - - // 调用 - CommonResult result = oauth2OpenController.checkToken(request, token); - // 断言 - assertEquals(0, result.getCode()); - assertPojoEquals(accessTokenDO, result.getData()); - assertEquals(1653485731L, result.getData().getExp()); // 执行过程会过去几毫秒 - } - - @Test - public void testAuthorize() { - // 准备参数 - String clientId = randomString(); - // mock 方法(client) - OAuth2ClientDO client = randomPojo(OAuth2ClientDO.class).setClientId("demo_client_id").setScopes(ListUtil.toList("read", "write", "all")); - when(oauth2ClientService.validOAuthClientFromCache(eq(clientId))).thenReturn(client); - // mock 方法(approve) - List approves = asList( - randomPojo(OAuth2ApproveDO.class).setScope("read").setApproved(true), - randomPojo(OAuth2ApproveDO.class).setScope("write").setApproved(false)); - when(oauth2ApproveService.getApproveList(isNull(), eq(UserTypeEnum.ADMIN.getValue()), eq(clientId))).thenReturn(approves); - - // 调用 - CommonResult result = oauth2OpenController.authorize(clientId); - // 断言 - assertEquals(0, result.getCode()); - assertPojoEquals(client, result.getData().getClient()); - assertEquals(new KeyValue<>("read", true), result.getData().getScopes().get(0)); - assertEquals(new KeyValue<>("write", false), result.getData().getScopes().get(1)); - assertEquals(new KeyValue<>("all", false), result.getData().getScopes().get(2)); - } - - @Test - public void testApproveOrDeny_grantTypeError() { - // 调用,并断言 - assertServiceException(() -> oauth2OpenController.approveOrDeny(randomString(), null, - null, null, null, null), - new ErrorCode(400, "response_type 参数值只允许 code 和 token")); - } - - @Test // autoApprove = true,但是不通过 - public void testApproveOrDeny_autoApproveNo() { - // 准备参数 - String responseType = "code"; - String clientId = randomString(); - String scope = "{\"read\": true, \"write\": false}"; - String redirectUri = randomString(); - String state = randomString(); - // mock 方法 - OAuth2ClientDO client = randomPojo(OAuth2ClientDO.class); - when(oauth2ClientService.validOAuthClientFromCache(eq(clientId), isNull(), eq("authorization_code"), - eq(asSet("read", "write")), eq(redirectUri))).thenReturn(client); - - // 调用 - CommonResult result = oauth2OpenController.approveOrDeny(responseType, clientId, - scope, redirectUri, true, state); - // 断言 - assertEquals(0, result.getCode()); - assertNull(result.getData()); - } - - @Test // autoApprove = false,但是不通过 - public void testApproveOrDeny_ApproveNo() { - // 准备参数 - String responseType = "token"; - String clientId = randomString(); - String scope = "{\"read\": true, \"write\": false}"; - String redirectUri = "https://www.iocoder.cn"; - String state = "test"; - // mock 方法 - OAuth2ClientDO client = randomPojo(OAuth2ClientDO.class); - when(oauth2ClientService.validOAuthClientFromCache(eq(clientId), isNull(), eq("implicit"), - eq(asSet("read", "write")), eq(redirectUri))).thenReturn(client); - - // 调用 - CommonResult result = oauth2OpenController.approveOrDeny(responseType, clientId, - scope, redirectUri, false, state); - // 断言 - assertEquals(0, result.getCode()); - assertEquals("https://www.iocoder.cn#error=access_denied&error_description=User%20denied%20access&state=test", result.getData()); - } - - @Test // autoApprove = true,通过 + token - public void testApproveOrDeny_autoApproveWithToken() { - // 准备参数 - String responseType = "token"; - String clientId = randomString(); - String scope = "{\"read\": true, \"write\": false}"; - String redirectUri = "https://www.iocoder.cn"; - String state = "test"; - // mock 方法(client) - OAuth2ClientDO client = randomPojo(OAuth2ClientDO.class).setClientId(clientId).setAdditionalInformation(null); - when(oauth2ClientService.validOAuthClientFromCache(eq(clientId), isNull(), eq("implicit"), - eq(asSet("read", "write")), eq(redirectUri))).thenReturn(client); - // mock 方法(场景一) - when(oauth2ApproveService.checkForPreApproval(isNull(), eq(UserTypeEnum.ADMIN.getValue()), - eq(clientId), eq(SetUtils.asSet("read", "write")))).thenReturn(true); - // mock 方法(访问令牌) - OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class) - .setAccessToken("test_access_token").setExpiresTime(LocalDateTimeUtil.offset(LocalDateTime.now(), 30010L, ChronoUnit.MILLIS)); - when(oauth2GrantService.grantImplicit(isNull(), eq(UserTypeEnum.ADMIN.getValue()), - eq(clientId), eq(ListUtil.toList("read")))).thenReturn(accessTokenDO); - - // 调用 - CommonResult result = oauth2OpenController.approveOrDeny(responseType, clientId, - scope, redirectUri, true, state); - // 断言 - assertEquals(0, result.getCode()); - assertThat(result.getData(), anyOf( // 29 和 30 都有一定概率,主要是时间计算 - is("https://www.iocoder.cn#access_token=test_access_token&token_type=bearer&state=test&expires_in=29&scope=read"), - is("https://www.iocoder.cn#access_token=test_access_token&token_type=bearer&state=test&expires_in=30&scope=read") - )); - } - - @Test // autoApprove = false,通过 + code - public void testApproveOrDeny_approveWithCode() { - // 准备参数 - String responseType = "code"; - String clientId = randomString(); - String scope = "{\"read\": true, \"write\": false}"; - String redirectUri = "https://www.iocoder.cn"; - String state = "test"; - // mock 方法(client) - OAuth2ClientDO client = randomPojo(OAuth2ClientDO.class).setClientId(clientId).setAdditionalInformation(null); - when(oauth2ClientService.validOAuthClientFromCache(eq(clientId), isNull(), eq("authorization_code"), - eq(asSet("read", "write")), eq(redirectUri))).thenReturn(client); - // mock 方法(场景二) - when(oauth2ApproveService.updateAfterApproval(isNull(), eq(UserTypeEnum.ADMIN.getValue()), eq(clientId), - eq(MapUtil.builder(new LinkedHashMap()).put("read", true).put("write", false).build()))) - .thenReturn(true); - // mock 方法(访问令牌) - String authorizationCode = "test_code"; - when(oauth2GrantService.grantAuthorizationCodeForCode(isNull(), eq(UserTypeEnum.ADMIN.getValue()), - eq(clientId), eq(ListUtil.toList("read")), eq(redirectUri), eq(state))).thenReturn(authorizationCode); - - // 调用 - CommonResult result = oauth2OpenController.approveOrDeny(responseType, clientId, - scope, redirectUri, false, state); - // 断言 - assertEquals(0, result.getCode()); - assertEquals("https://www.iocoder.cn?code=test_code&state=test", result.getData()); - } - - private HttpServletRequest mockRequest(String clientId, String secret) { - HttpServletRequest request = mock(HttpServletRequest.class); - when(request.getParameter(eq("client_id"))).thenReturn(clientId); - when(request.getParameter(eq("client_secret"))).thenReturn(secret); - return request; - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/auth/AdminAuthServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/auth/AdminAuthServiceImplTest.java deleted file mode 100644 index 4f070f52..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/auth/AdminAuthServiceImplTest.java +++ /dev/null @@ -1,372 +0,0 @@ -package com.win.module.system.service.auth; - -import cn.hutool.core.util.ReflectUtil; -import com.win.framework.common.enums.CommonStatusEnum; -import com.win.framework.common.enums.UserTypeEnum; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.api.sms.SmsCodeApi; -import com.win.module.system.api.social.dto.SocialUserBindReqDTO; -import com.win.module.system.api.social.dto.SocialUserRespDTO; -import com.win.module.system.controller.admin.auth.vo.*; -import com.win.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; -import com.win.module.system.dal.dataobject.user.AdminUserDO; -import com.win.module.system.enums.logger.LoginLogTypeEnum; -import com.win.module.system.enums.logger.LoginResultEnum; -import com.win.module.system.enums.sms.SmsSceneEnum; -import com.win.module.system.enums.social.SocialTypeEnum; -import com.win.module.system.service.logger.LoginLogService; -import com.win.module.system.service.member.MemberService; -import com.win.module.system.service.oauth2.OAuth2TokenService; -import com.win.module.system.service.social.SocialUserService; -import com.win.module.system.service.user.AdminUserService; -import com.xingyuv.captcha.model.common.ResponseModel; -import com.xingyuv.captcha.service.CaptchaService; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import javax.validation.ConstraintViolationException; -import javax.validation.Validation; -import javax.validation.Validator; - -import static cn.hutool.core.util.RandomUtil.randomEle; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.randomPojo; -import static com.win.framework.test.core.util.RandomUtils.randomString; -import static com.win.module.system.enums.ErrorCodeConstants.*; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.*; - -@Import(AdminAuthServiceImpl.class) -public class AdminAuthServiceImplTest extends BaseDbUnitTest { - - @Resource - private AdminAuthServiceImpl authService; - - @MockBean - private AdminUserService userService; - @MockBean - private CaptchaService captchaService; - @MockBean - private LoginLogService loginLogService; - @MockBean - private SocialUserService socialUserService; - @MockBean - private SmsCodeApi smsCodeApi; - @MockBean - private OAuth2TokenService oauth2TokenService; - @MockBean - private MemberService memberService; - @MockBean - private Validator validator; - - @BeforeEach - public void setUp() { - ReflectUtil.setFieldValue(authService, "captchaEnable", true); - // 注入一个 Validator 对象 - ReflectUtil.setFieldValue(authService, "validator", - Validation.buildDefaultValidatorFactory().getValidator()); - } - - @Test - public void testAuthenticate_success() { - // 准备参数 - String username = randomString(); - String password = randomString(); - // mock user 数据 - AdminUserDO user = randomPojo(AdminUserDO.class, o -> o.setUsername(username) - .setPassword(password).setStatus(CommonStatusEnum.ENABLE.getStatus())); - when(userService.getUserByUsername(eq(username))).thenReturn(user); - // mock password 匹配 - when(userService.isPasswordMatch(eq(password), eq(user.getPassword()))).thenReturn(true); - - // 调用 - AdminUserDO loginUser = authService.authenticate(username, password); - // 校验 - assertPojoEquals(user, loginUser); - } - - @Test - public void testAuthenticate_userNotFound() { - // 准备参数 - String username = randomString(); - String password = randomString(); - - // 调用, 并断言异常 - assertServiceException(() -> authService.authenticate(username, password), - AUTH_LOGIN_BAD_CREDENTIALS); - verify(loginLogService).createLoginLog( - argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) - && o.getResult().equals(LoginResultEnum.BAD_CREDENTIALS.getResult()) - && o.getUserId() == null) - ); - } - - @Test - public void testAuthenticate_badCredentials() { - // 准备参数 - String username = randomString(); - String password = randomString(); - // mock user 数据 - AdminUserDO user = randomPojo(AdminUserDO.class, o -> o.setUsername(username) - .setPassword(password).setStatus(CommonStatusEnum.ENABLE.getStatus())); - when(userService.getUserByUsername(eq(username))).thenReturn(user); - - // 调用, 并断言异常 - assertServiceException(() -> authService.authenticate(username, password), - AUTH_LOGIN_BAD_CREDENTIALS); - verify(loginLogService).createLoginLog( - argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) - && o.getResult().equals(LoginResultEnum.BAD_CREDENTIALS.getResult()) - && o.getUserId().equals(user.getId())) - ); - } - - @Test - public void testAuthenticate_userDisabled() { - // 准备参数 - String username = randomString(); - String password = randomString(); - // mock user 数据 - AdminUserDO user = randomPojo(AdminUserDO.class, o -> o.setUsername(username) - .setPassword(password).setStatus(CommonStatusEnum.DISABLE.getStatus())); - when(userService.getUserByUsername(eq(username))).thenReturn(user); - // mock password 匹配 - when(userService.isPasswordMatch(eq(password), eq(user.getPassword()))).thenReturn(true); - - // 调用, 并断言异常 - assertServiceException(() -> authService.authenticate(username, password), - AUTH_LOGIN_USER_DISABLED); - verify(loginLogService).createLoginLog( - argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) - && o.getResult().equals(LoginResultEnum.USER_DISABLED.getResult()) - && o.getUserId().equals(user.getId())) - ); - } - - @Test - public void testLogin_success() { - // 准备参数 - AuthLoginReqVO reqVO = randomPojo(AuthLoginReqVO.class, o -> - o.setUsername("test_username").setPassword("test_password") - .setSocialType(randomEle(SocialTypeEnum.values()).getType())); - - // mock 验证码正确 - ReflectUtil.setFieldValue(authService, "captchaEnable", false); - // mock user 数据 - AdminUserDO user = randomPojo(AdminUserDO.class, o -> o.setId(1L).setUsername("test_username") - .setPassword("test_password").setStatus(CommonStatusEnum.ENABLE.getStatus())); - when(userService.getUserByUsername(eq("test_username"))).thenReturn(user); - // mock password 匹配 - when(userService.isPasswordMatch(eq("test_password"), eq(user.getPassword()))).thenReturn(true); - // mock 缓存登录用户到 Redis - OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class, o -> o.setUserId(1L) - .setUserType(UserTypeEnum.ADMIN.getValue())); - when(oauth2TokenService.createAccessToken(eq(1L), eq(UserTypeEnum.ADMIN.getValue()), eq("default"), isNull())) - .thenReturn(accessTokenDO); - - // 调用,并校验 - AuthLoginRespVO loginRespVO = authService.login(reqVO); - assertPojoEquals(accessTokenDO, loginRespVO); - // 校验调用参数 - verify(loginLogService).createLoginLog( - argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) - && o.getResult().equals(LoginResultEnum.SUCCESS.getResult()) - && o.getUserId().equals(user.getId())) - ); - verify(socialUserService).bindSocialUser(eq(new SocialUserBindReqDTO( - user.getId(), UserTypeEnum.ADMIN.getValue(), - reqVO.getSocialType(), reqVO.getSocialCode(), reqVO.getSocialState()))); - } - - @Test - public void testSendSmsCode() { - // 准备参数 - String mobile = randomString(); - Integer scene = randomEle(SmsSceneEnum.values()).getScene(); - AuthSmsSendReqVO reqVO = new AuthSmsSendReqVO(mobile, scene); - // mock 方法(用户信息) - AdminUserDO user = randomPojo(AdminUserDO.class); - when(userService.getUserByMobile(eq(mobile))).thenReturn(user); - - // 调用 - authService.sendSmsCode(reqVO); - // 断言 - verify(smsCodeApi).sendSmsCode(argThat(sendReqDTO -> { - assertEquals(mobile, sendReqDTO.getMobile()); - assertEquals(scene, sendReqDTO.getScene()); - return true; - })); - } - - @Test - public void testSmsLogin_success() { - // 准备参数 - String mobile = randomString(); - String scene = randomString(); - AuthSmsLoginReqVO reqVO = new AuthSmsLoginReqVO(mobile, scene); - // mock 方法(用户信息) - AdminUserDO user = randomPojo(AdminUserDO.class, o -> o.setId(1L)); - when(userService.getUserByMobile(eq(mobile))).thenReturn(user); - // mock 缓存登录用户到 Redis - OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class, o -> o.setUserId(1L) - .setUserType(UserTypeEnum.ADMIN.getValue())); - when(oauth2TokenService.createAccessToken(eq(1L), eq(UserTypeEnum.ADMIN.getValue()), eq("default"), isNull())) - .thenReturn(accessTokenDO); - - // 调用,并断言 - AuthLoginRespVO loginRespVO = authService.smsLogin(reqVO); - assertPojoEquals(accessTokenDO, loginRespVO); - // 断言调用 - verify(loginLogService).createLoginLog( - argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_MOBILE.getType()) - && o.getResult().equals(LoginResultEnum.SUCCESS.getResult()) - && o.getUserId().equals(user.getId())) - ); - } - - @Test - public void testSocialLogin_success() { - // 准备参数 - AuthSocialLoginReqVO reqVO = randomPojo(AuthSocialLoginReqVO.class); - // mock 方法(绑定的用户编号) - Long userId = 1L; - when(socialUserService.getSocialUser(eq(UserTypeEnum.ADMIN.getValue()), eq(reqVO.getType()), - eq(reqVO.getCode()), eq(reqVO.getState()))).thenReturn(new SocialUserRespDTO(randomString(), userId)); - // mock(用户) - AdminUserDO user = randomPojo(AdminUserDO.class, o -> o.setId(userId)); - when(userService.getUser(eq(userId))).thenReturn(user); - // mock 缓存登录用户到 Redis - OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class, o -> o.setUserId(1L) - .setUserType(UserTypeEnum.ADMIN.getValue())); - when(oauth2TokenService.createAccessToken(eq(1L), eq(UserTypeEnum.ADMIN.getValue()), eq("default"), isNull())) - .thenReturn(accessTokenDO); - - // 调用,并断言 - AuthLoginRespVO loginRespVO = authService.socialLogin(reqVO); - assertPojoEquals(accessTokenDO, loginRespVO); - // 断言调用 - verify(loginLogService).createLoginLog( - argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_SOCIAL.getType()) - && o.getResult().equals(LoginResultEnum.SUCCESS.getResult()) - && o.getUserId().equals(user.getId())) - ); - } - - @Test - public void testValidateCaptcha_successWithEnable() { - // 准备参数 - AuthLoginReqVO reqVO = randomPojo(AuthLoginReqVO.class); - - // mock 验证码打开 - ReflectUtil.setFieldValue(authService, "captchaEnable", true); - // mock 验证通过 - when(captchaService.verification(argThat(captchaVO -> { - assertEquals(reqVO.getCaptchaVerification(), captchaVO.getCaptchaVerification()); - return true; - }))).thenReturn(ResponseModel.success()); - - // 调用,无需断言 - authService.validateCaptcha(reqVO); - } - - @Test - public void testValidateCaptcha_successWithDisable() { - // 准备参数 - AuthLoginReqVO reqVO = randomPojo(AuthLoginReqVO.class); - - // mock 验证码关闭 - ReflectUtil.setFieldValue(authService, "captchaEnable", false); - - // 调用,无需断言 - authService.validateCaptcha(reqVO); - } - - @Test - public void testValidateCaptcha_constraintViolationException() { - // 准备参数 - AuthLoginReqVO reqVO = randomPojo(AuthLoginReqVO.class).setCaptchaVerification(null); - - // mock 验证码打开 - ReflectUtil.setFieldValue(authService, "captchaEnable", true); - - // 调用,并断言异常 - assertThrows(ConstraintViolationException.class, () -> authService.validateCaptcha(reqVO), - "验证码不能为空"); - } - - - @Test - public void testCaptcha_fail() { - // 准备参数 - AuthLoginReqVO reqVO = randomPojo(AuthLoginReqVO.class); - - // mock 验证码打开 - ReflectUtil.setFieldValue(authService, "captchaEnable", true); - // mock 验证通过 - when(captchaService.verification(argThat(captchaVO -> { - assertEquals(reqVO.getCaptchaVerification(), captchaVO.getCaptchaVerification()); - return true; - }))).thenReturn(ResponseModel.errorMsg("就是不对")); - - // 调用, 并断言异常 - assertServiceException(() -> authService.validateCaptcha(reqVO), AUTH_LOGIN_CAPTCHA_CODE_ERROR, "就是不对"); - // 校验调用参数 - verify(loginLogService).createLoginLog( - argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) - && o.getResult().equals(LoginResultEnum.CAPTCHA_CODE_ERROR.getResult())) - ); - } - - @Test - public void testRefreshToken() { - // 准备参数 - String refreshToken = randomString(); - // mock 方法 - OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class); - when(oauth2TokenService.refreshAccessToken(eq(refreshToken), eq("default"))) - .thenReturn(accessTokenDO); - - // 调用 - AuthLoginRespVO loginRespVO = authService.refreshToken(refreshToken); - // 断言 - assertPojoEquals(accessTokenDO, loginRespVO); - } - - @Test - public void testLogout_success() { - // 准备参数 - String token = randomString(); - // mock - OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class, o -> o.setUserId(1L) - .setUserType(UserTypeEnum.ADMIN.getValue())); - when(oauth2TokenService.removeAccessToken(eq(token))).thenReturn(accessTokenDO); - - // 调用 - authService.logout(token, LoginLogTypeEnum.LOGOUT_SELF.getType()); - // 校验调用参数 - verify(loginLogService).createLoginLog( - argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGOUT_SELF.getType()) - && o.getResult().equals(LoginResultEnum.SUCCESS.getResult())) - ); - // 调用,并校验 - - } - - @Test - public void testLogout_fail() { - // 准备参数 - String token = randomString(); - - // 调用 - authService.logout(token, LoginLogTypeEnum.LOGOUT_SELF.getType()); - // 校验调用参数 - verify(loginLogService, never()).createLoginLog(any()); - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/dept/DeptServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/dept/DeptServiceImplTest.java deleted file mode 100644 index 1d7c55fa..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/dept/DeptServiceImplTest.java +++ /dev/null @@ -1,297 +0,0 @@ -package com.win.module.system.service.dept; - -import com.win.framework.common.enums.CommonStatusEnum; -import com.win.framework.common.util.object.ObjectUtils; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.controller.admin.dept.vo.dept.DeptCreateReqVO; -import com.win.module.system.controller.admin.dept.vo.dept.DeptListReqVO; -import com.win.module.system.controller.admin.dept.vo.dept.DeptUpdateReqVO; -import com.win.module.system.dal.dataobject.dept.DeptDO; -import com.win.module.system.dal.mysql.dept.DeptMapper; -import com.win.module.system.enums.dept.DeptIdEnum; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.Arrays; -import java.util.List; -import java.util.Set; - -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.*; -import static com.win.module.system.enums.ErrorCodeConstants.*; -import static java.util.Collections.singletonList; -import static org.junit.jupiter.api.Assertions.*; - -/** - * {@link DeptServiceImpl} 的单元测试类 - * - * @author niudehua - */ -@Import(DeptServiceImpl.class) -public class DeptServiceImplTest extends BaseDbUnitTest { - - @Resource - private DeptServiceImpl deptService; - @Resource - private DeptMapper deptMapper; - - @Test - public void testCreateDept() { - // 准备参数 - DeptCreateReqVO reqVO = randomPojo(DeptCreateReqVO.class, o -> { - o.setParentId(DeptIdEnum.ROOT.getId()); - o.setStatus(randomCommonStatus()); - }); - - // 调用 - Long deptId = deptService.createDept(reqVO); - // 断言 - assertNotNull(deptId); - // 校验记录的属性是否正确 - DeptDO deptDO = deptMapper.selectById(deptId); - assertPojoEquals(reqVO, deptDO); - } - - @Test - public void testUpdateDept() { - // mock 数据 - DeptDO dbDeptDO = randomPojo(DeptDO.class, o -> o.setStatus(randomCommonStatus())); - deptMapper.insert(dbDeptDO);// @Sql: 先插入出一条存在的数据 - // 准备参数 - DeptUpdateReqVO reqVO = randomPojo(DeptUpdateReqVO.class, o -> { - // 设置更新的 ID - o.setParentId(DeptIdEnum.ROOT.getId()); - o.setId(dbDeptDO.getId()); - o.setStatus(randomCommonStatus()); - }); - - // 调用 - deptService.updateDept(reqVO); - // 校验是否更新正确 - DeptDO deptDO = deptMapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, deptDO); - } - - @Test - public void testDeleteDept_success() { - // mock 数据 - DeptDO dbDeptDO = randomPojo(DeptDO.class); - deptMapper.insert(dbDeptDO);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbDeptDO.getId(); - - // 调用 - deptService.deleteDept(id); - // 校验数据不存在了 - assertNull(deptMapper.selectById(id)); - } - - @Test - public void testDeleteDept_exitsChildren() { - // mock 数据 - DeptDO parentDept = randomPojo(DeptDO.class); - deptMapper.insert(parentDept);// @Sql: 先插入出一条存在的数据 - // 准备参数 - DeptDO childrenDeptDO = randomPojo(DeptDO.class, o -> { - o.setParentId(parentDept.getId()); - o.setStatus(randomCommonStatus()); - }); - // 插入子部门 - deptMapper.insert(childrenDeptDO); - - // 调用, 并断言异常 - assertServiceException(() -> deptService.deleteDept(parentDept.getId()), DEPT_EXITS_CHILDREN); - } - - @Test - public void testValidateDeptExists_notFound() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> deptService.validateDeptExists(id), DEPT_NOT_FOUND); - } - - @Test - public void testValidateParentDept_parentError() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> deptService.validateParentDept(id, id), - DEPT_PARENT_ERROR); - } - - @Test - public void testValidateParentDept_parentIsChild() { - // mock 数据(父节点) - DeptDO parentDept = randomPojo(DeptDO.class); - deptMapper.insert(parentDept); - // mock 数据(子节点) - DeptDO childDept = randomPojo(DeptDO.class, o -> { - o.setParentId(parentDept.getId()); - }); - deptMapper.insert(childDept); - - // 准备参数 - Long id = parentDept.getId(); - Long parentId = childDept.getId(); - - // 调用, 并断言异常 - assertServiceException(() -> deptService.validateParentDept(id, parentId), DEPT_PARENT_IS_CHILD); - } - - @Test - public void testValidateNameUnique_duplicate() { - // mock 数据 - DeptDO deptDO = randomPojo(DeptDO.class); - deptMapper.insert(deptDO); - - // 准备参数 - Long id = randomLongId(); - Long parentId = deptDO.getParentId(); - String name = deptDO.getName(); - - // 调用, 并断言异常 - assertServiceException(() -> deptService.validateDeptNameUnique(id, parentId, name), - DEPT_NAME_DUPLICATE); - } - - @Test - public void testGetDept() { - // mock 数据 - DeptDO deptDO = randomPojo(DeptDO.class); - deptMapper.insert(deptDO); - // 准备参数 - Long id = deptDO.getId(); - - // 调用 - DeptDO dbDept = deptService.getDept(id); - // 断言 - assertEquals(deptDO, dbDept); - } - - @Test - public void testGetDeptList_ids() { - // mock 数据 - DeptDO deptDO01 = randomPojo(DeptDO.class); - deptMapper.insert(deptDO01); - DeptDO deptDO02 = randomPojo(DeptDO.class); - deptMapper.insert(deptDO02); - // 准备参数 - List ids = Arrays.asList(deptDO01.getId(), deptDO02.getId()); - - // 调用 - List deptDOList = deptService.getDeptList(ids); - // 断言 - assertEquals(2, deptDOList.size()); - assertEquals(deptDO01, deptDOList.get(0)); - assertEquals(deptDO02, deptDOList.get(1)); - } - - @Test - public void testGetDeptList_reqVO() { - // mock 数据 - DeptDO dept = randomPojo(DeptDO.class, o -> { // 等会查询到 - o.setName("开发部"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - }); - deptMapper.insert(dept); - // 测试 name 不匹配 - deptMapper.insert(ObjectUtils.cloneIgnoreId(dept, o -> o.setName("发"))); - // 测试 status 不匹配 - deptMapper.insert(ObjectUtils.cloneIgnoreId(dept, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 准备参数 - DeptListReqVO reqVO = new DeptListReqVO(); - reqVO.setName("开"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - - // 调用 - List sysDeptDOS = deptService.getDeptList(reqVO); - // 断言 - assertEquals(1, sysDeptDOS.size()); - assertPojoEquals(dept, sysDeptDOS.get(0)); - } - - @Test - public void testGetChildDeptList() { - // mock 数据(1 级别子节点) - DeptDO dept1 = randomPojo(DeptDO.class, o -> o.setName("1")); - deptMapper.insert(dept1); - DeptDO dept2 = randomPojo(DeptDO.class, o -> o.setName("2")); - deptMapper.insert(dept2); - // mock 数据(2 级子节点) - DeptDO dept1a = randomPojo(DeptDO.class, o -> o.setName("1-a").setParentId(dept1.getId())); - deptMapper.insert(dept1a); - DeptDO dept2a = randomPojo(DeptDO.class, o -> o.setName("2-a").setParentId(dept2.getId())); - deptMapper.insert(dept2a); - // 准备参数 - Long id = dept1.getParentId(); - - // 调用 - List result = deptService.getChildDeptList(id); - // 断言 - assertEquals(result.size(), 2); - assertPojoEquals(dept1, result.get(0)); - assertPojoEquals(dept1a, result.get(1)); - } - - @Test - public void testGetChildDeptListFromCache() { - // mock 数据(1 级别子节点) - DeptDO dept1 = randomPojo(DeptDO.class, o -> o.setName("1")); - deptMapper.insert(dept1); - DeptDO dept2 = randomPojo(DeptDO.class, o -> o.setName("2")); - deptMapper.insert(dept2); - // mock 数据(2 级子节点) - DeptDO dept1a = randomPojo(DeptDO.class, o -> o.setName("1-a").setParentId(dept1.getId())); - deptMapper.insert(dept1a); - DeptDO dept2a = randomPojo(DeptDO.class, o -> o.setName("2-a").setParentId(dept2.getId())); - deptMapper.insert(dept2a); - // 准备参数 - Long id = dept1.getParentId(); - - // 调用 - Set result = deptService.getChildDeptIdListFromCache(id); - // 断言 - assertEquals(result.size(), 2); - assertTrue(result.contains(dept1.getId())); - assertTrue(result.contains(dept1a.getId())); - } - - @Test - public void testValidateDeptList_success() { - // mock 数据 - DeptDO deptDO = randomPojo(DeptDO.class).setStatus(CommonStatusEnum.ENABLE.getStatus()); - deptMapper.insert(deptDO); - // 准备参数 - List ids = singletonList(deptDO.getId()); - - // 调用,无需断言 - deptService.validateDeptList(ids); - } - - @Test - public void testValidateDeptList_notFound() { - // 准备参数 - List ids = singletonList(randomLongId()); - - // 调用, 并断言异常 - assertServiceException(() -> deptService.validateDeptList(ids), DEPT_NOT_FOUND); - } - - @Test - public void testValidateDeptList_notEnable() { - // mock 数据 - DeptDO deptDO = randomPojo(DeptDO.class).setStatus(CommonStatusEnum.DISABLE.getStatus()); - deptMapper.insert(deptDO); - // 准备参数 - List ids = singletonList(deptDO.getId()); - - // 调用, 并断言异常 - assertServiceException(() -> deptService.validateDeptList(ids), DEPT_NOT_ENABLE, deptDO.getName()); - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/dept/PostServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/dept/PostServiceImplTest.java deleted file mode 100644 index 578f54bf..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/dept/PostServiceImplTest.java +++ /dev/null @@ -1,254 +0,0 @@ -package com.win.module.system.service.dept; - -import com.win.framework.common.enums.CommonStatusEnum; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.common.util.collection.ArrayUtils; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.controller.admin.dept.vo.post.PostCreateReqVO; -import com.win.module.system.controller.admin.dept.vo.post.PostExportReqVO; -import com.win.module.system.controller.admin.dept.vo.post.PostPageReqVO; -import com.win.module.system.controller.admin.dept.vo.post.PostUpdateReqVO; -import com.win.module.system.dal.dataobject.dept.PostDO; -import com.win.module.system.dal.mysql.dept.PostMapper; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.Arrays; -import java.util.List; -import java.util.function.Consumer; - -import static cn.hutool.core.util.RandomUtil.randomEle; -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.*; -import static com.win.module.system.enums.ErrorCodeConstants.*; -import static java.util.Collections.singletonList; -import static org.junit.jupiter.api.Assertions.*; - -/** - * {@link PostServiceImpl} 的单元测试类 - * - * @author niudehua - */ -@Import(PostServiceImpl.class) -public class PostServiceImplTest extends BaseDbUnitTest { - - @Resource - private PostServiceImpl postService; - - @Resource - private PostMapper postMapper; - - @Test - public void testCreatePost_success() { - // 准备参数 - PostCreateReqVO reqVO = randomPojo(PostCreateReqVO.class, - o -> o.setStatus(randomEle(CommonStatusEnum.values()).getStatus())); - // 调用 - Long postId = postService.createPost(reqVO); - - // 断言 - assertNotNull(postId); - // 校验记录的属性是否正确 - PostDO post = postMapper.selectById(postId); - assertPojoEquals(reqVO, post); - } - - @Test - public void testUpdatePost_success() { - // mock 数据 - PostDO postDO = randomPostDO(); - postMapper.insert(postDO);// @Sql: 先插入出一条存在的数据 - // 准备参数 - PostUpdateReqVO reqVO = randomPojo(PostUpdateReqVO.class, o -> { - // 设置更新的 ID - o.setId(postDO.getId()); - o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); - }); - - // 调用 - postService.updatePost(reqVO); - // 校验是否更新正确 - PostDO post = postMapper.selectById(reqVO.getId()); - assertPojoEquals(reqVO, post); - } - - @Test - public void testDeletePost_success() { - // mock 数据 - PostDO postDO = randomPostDO(); - postMapper.insert(postDO); - // 准备参数 - Long id = postDO.getId(); - - // 调用 - postService.deletePost(id); - assertNull(postMapper.selectById(id)); - } - - @Test - public void testValidatePost_notFoundForDelete() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> postService.deletePost(id), POST_NOT_FOUND); - } - - @Test - public void testValidatePost_nameDuplicateForCreate() { - // mock 数据 - PostDO postDO = randomPostDO(); - postMapper.insert(postDO);// @Sql: 先插入出一条存在的数据 - // 准备参数 - PostCreateReqVO reqVO = randomPojo(PostCreateReqVO.class, - // 模拟 name 重复 - o -> o.setName(postDO.getName())); - assertServiceException(() -> postService.createPost(reqVO), POST_NAME_DUPLICATE); - } - - @Test - public void testValidatePost_codeDuplicateForUpdate() { - // mock 数据 - PostDO postDO = randomPostDO(); - postMapper.insert(postDO); - // mock 数据:稍后模拟重复它的 code - PostDO codePostDO = randomPostDO(); - postMapper.insert(codePostDO); - // 准备参数 - PostUpdateReqVO reqVO = randomPojo(PostUpdateReqVO.class, o -> { - // 设置更新的 ID - o.setId(postDO.getId()); - // 模拟 code 重复 - o.setCode(codePostDO.getCode()); - }); - - // 调用, 并断言异常 - assertServiceException(() -> postService.updatePost(reqVO), POST_CODE_DUPLICATE); - } - - @Test - public void testGetPostPage() { - // mock 数据 - PostDO postDO = randomPojo(PostDO.class, o -> { - o.setName("码仔"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - }); - postMapper.insert(postDO); - // 测试 name 不匹配 - postMapper.insert(cloneIgnoreId(postDO, o -> o.setName("程序员"))); - // 测试 status 不匹配 - postMapper.insert(cloneIgnoreId(postDO, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 准备参数 - PostPageReqVO reqVO = new PostPageReqVO(); - reqVO.setName("码"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - - // 调用 - PageResult pageResult = postService.getPostPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(postDO, pageResult.getList().get(0)); - } - - @Test - public void testGetPostList_export() { - // mock 数据 - PostDO postDO = randomPojo(PostDO.class, o -> { - o.setName("码仔"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - }); - postMapper.insert(postDO); - // 测试 name 不匹配 - postMapper.insert(cloneIgnoreId(postDO, o -> o.setName("程序员"))); - // 测试 status 不匹配 - postMapper.insert(cloneIgnoreId(postDO, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 准备参数 - PostExportReqVO reqVO = new PostExportReqVO(); - reqVO.setName("码"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - - // 调用 - List list = postService.getPostList(reqVO); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(postDO, list.get(0)); - } - - @Test - public void testGetPostList() { - // mock 数据 - PostDO postDO01 = randomPojo(PostDO.class, o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus())); - postMapper.insert(postDO01); - // 测试 status 不匹配 - PostDO postDO02 = randomPojo(PostDO.class, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())); - postMapper.insert(postDO02); - // 准备参数 - List ids = Arrays.asList(postDO01.getId(), postDO02.getId()); - - // 调用 - List list = postService.getPostList(ids, singletonList(CommonStatusEnum.ENABLE.getStatus())); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(postDO01, list.get(0)); - } - - @Test - public void testGetPost() { - // mock 数据 - PostDO dbPostDO = randomPostDO(); - postMapper.insert(dbPostDO); - // 准备参数 - Long id = dbPostDO.getId(); - // 调用 - PostDO post = postService.getPost(id); - // 断言 - assertNotNull(post); - assertPojoEquals(dbPostDO, post); - } - - @Test - public void testValidatePostList_success() { - // mock 数据 - PostDO postDO = randomPostDO().setStatus(CommonStatusEnum.ENABLE.getStatus()); - postMapper.insert(postDO); - // 准备参数 - List ids = singletonList(postDO.getId()); - - // 调用,无需断言 - postService.validatePostList(ids); - } - - @Test - public void testValidatePostList_notFound() { - // 准备参数 - List ids = singletonList(randomLongId()); - - // 调用, 并断言异常 - assertServiceException(() -> postService.validatePostList(ids), POST_NOT_FOUND); - } - - @Test - public void testValidatePostList_notEnable() { - // mock 数据 - PostDO postDO = randomPostDO().setStatus(CommonStatusEnum.DISABLE.getStatus()); - postMapper.insert(postDO); - // 准备参数 - List ids = singletonList(postDO.getId()); - - // 调用, 并断言异常 - assertServiceException(() -> postService.validatePostList(ids), POST_NOT_ENABLE, - postDO.getName()); - } - - @SafeVarargs - private static PostDO randomPostDO(Consumer... consumers) { - Consumer consumer = (o) -> { - o.setStatus(randomCommonStatus()); // 保证 status 的范围 - }; - return randomPojo(PostDO.class, ArrayUtils.append(consumer, consumers)); - } -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/dict/DictDataServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/dict/DictDataServiceImplTest.java deleted file mode 100644 index 25d4f298..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/dict/DictDataServiceImplTest.java +++ /dev/null @@ -1,371 +0,0 @@ -package com.win.module.system.service.dict; - -import com.win.framework.common.enums.CommonStatusEnum; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.common.util.collection.ArrayUtils; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.controller.admin.dict.vo.data.DictDataCreateReqVO; -import com.win.module.system.controller.admin.dict.vo.data.DictDataExportReqVO; -import com.win.module.system.controller.admin.dict.vo.data.DictDataPageReqVO; -import com.win.module.system.controller.admin.dict.vo.data.DictDataUpdateReqVO; -import com.win.module.system.dal.dataobject.dict.DictDataDO; -import com.win.module.system.dal.dataobject.dict.DictTypeDO; -import com.win.module.system.dal.mysql.dict.DictDataMapper; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.List; -import java.util.function.Consumer; - -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.*; -import static com.win.module.system.enums.ErrorCodeConstants.*; -import static java.util.Collections.singletonList; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.when; - -@Import(DictDataServiceImpl.class) -public class DictDataServiceImplTest extends BaseDbUnitTest { - - @Resource - private DictDataServiceImpl dictDataService; - - @Resource - private DictDataMapper dictDataMapper; - @MockBean - private DictTypeService dictTypeService; - - @Test - public void testGetDictDataList() { - // mock 数据 - DictDataDO dictDataDO01 = randomDictDataDO().setDictType("yunai").setSort(2); - dictDataMapper.insert(dictDataDO01); - DictDataDO dictDataDO02 = randomDictDataDO().setDictType("yunai").setSort(1); - dictDataMapper.insert(dictDataDO02); - // 准备参数 - - // 调用 - List dictDataDOList = dictDataService.getDictDataList(); - // 断言 - assertEquals(2, dictDataDOList.size()); - assertPojoEquals(dictDataDO02, dictDataDOList.get(0)); - assertPojoEquals(dictDataDO01, dictDataDOList.get(1)); - } - - @Test - public void testGetDictDataPage() { - // mock 数据 - DictDataDO dbDictData = randomPojo(DictDataDO.class, o -> { // 等会查询到 - o.setLabel("芋艿"); - o.setDictType("yunai"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - }); - dictDataMapper.insert(dbDictData); - // 测试 label 不匹配 - dictDataMapper.insert(cloneIgnoreId(dbDictData, o -> o.setLabel("艿"))); - // 测试 dictType 不匹配 - dictDataMapper.insert(cloneIgnoreId(dbDictData, o -> o.setDictType("nai"))); - // 测试 status 不匹配 - dictDataMapper.insert(cloneIgnoreId(dbDictData, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 准备参数 - DictDataPageReqVO reqVO = new DictDataPageReqVO(); - reqVO.setLabel("芋"); - reqVO.setDictType("yunai"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - - // 调用 - PageResult pageResult = dictDataService.getDictDataPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbDictData, pageResult.getList().get(0)); - } - - @Test - public void testGetDictDataList_export() { - // mock 数据 - DictDataDO dbDictData = randomPojo(DictDataDO.class, o -> { // 等会查询到 - o.setLabel("芋艿"); - o.setDictType("yunai"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - }); - dictDataMapper.insert(dbDictData); - // 测试 label 不匹配 - dictDataMapper.insert(cloneIgnoreId(dbDictData, o -> o.setLabel("艿"))); - // 测试 dictType 不匹配 - dictDataMapper.insert(cloneIgnoreId(dbDictData, o -> o.setDictType("nai"))); - // 测试 status 不匹配 - dictDataMapper.insert(cloneIgnoreId(dbDictData, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 准备参数 - DictDataExportReqVO reqVO = new DictDataExportReqVO(); - reqVO.setLabel("芋"); - reqVO.setDictType("yunai"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - - // 调用 - List list = dictDataService.getDictDataList(reqVO); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(dbDictData, list.get(0)); - } - - @Test - public void testGetDictData() { - // mock 数据 - DictDataDO dbDictData = randomDictDataDO(); - dictDataMapper.insert(dbDictData); - // 准备参数 - Long id = dbDictData.getId(); - - // 调用 - DictDataDO dictData = dictDataService.getDictData(id); - // 断言 - assertPojoEquals(dbDictData, dictData); - } - - @Test - public void testCreateDictData_success() { - // 准备参数 - DictDataCreateReqVO reqVO = randomPojo(DictDataCreateReqVO.class, - o -> o.setStatus(randomCommonStatus())); - // mock 方法 - when(dictTypeService.getDictType(eq(reqVO.getDictType()))).thenReturn(randomDictTypeDO(reqVO.getDictType())); - - // 调用 - Long dictDataId = dictDataService.createDictData(reqVO); - // 断言 - assertNotNull(dictDataId); - // 校验记录的属性是否正确 - DictDataDO dictData = dictDataMapper.selectById(dictDataId); - assertPojoEquals(reqVO, dictData); - } - - @Test - public void testUpdateDictData_success() { - // mock 数据 - DictDataDO dbDictData = randomDictDataDO(); - dictDataMapper.insert(dbDictData);// @Sql: 先插入出一条存在的数据 - // 准备参数 - DictDataUpdateReqVO reqVO = randomPojo(DictDataUpdateReqVO.class, o -> { - o.setId(dbDictData.getId()); // 设置更新的 ID - o.setStatus(randomCommonStatus()); - }); - // mock 方法,字典类型 - when(dictTypeService.getDictType(eq(reqVO.getDictType()))).thenReturn(randomDictTypeDO(reqVO.getDictType())); - - // 调用 - dictDataService.updateDictData(reqVO); - // 校验是否更新正确 - DictDataDO dictData = dictDataMapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, dictData); - } - - @Test - public void testDeleteDictData_success() { - // mock 数据 - DictDataDO dbDictData = randomDictDataDO(); - dictDataMapper.insert(dbDictData);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbDictData.getId(); - - // 调用 - dictDataService.deleteDictData(id); - // 校验数据不存在了 - assertNull(dictDataMapper.selectById(id)); - } - - @Test - public void testValidateDictDataExists_success() { - // mock 数据 - DictDataDO dbDictData = randomDictDataDO(); - dictDataMapper.insert(dbDictData);// @Sql: 先插入出一条存在的数据 - - // 调用成功 - dictDataService.validateDictDataExists(dbDictData.getId()); - } - - @Test - public void testValidateDictDataExists_notExists() { - assertServiceException(() -> dictDataService.validateDictDataExists(randomLongId()), DICT_DATA_NOT_EXISTS); - } - - @Test - public void testValidateDictTypeExists_success() { - // mock 方法,数据类型被禁用 - String type = randomString(); - when(dictTypeService.getDictType(eq(type))).thenReturn(randomDictTypeDO(type)); - - // 调用, 成功 - dictDataService.validateDictTypeExists(type); - } - - @Test - public void testValidateDictTypeExists_notExists() { - assertServiceException(() -> dictDataService.validateDictTypeExists(randomString()), DICT_TYPE_NOT_EXISTS); - } - - @Test - public void testValidateDictTypeExists_notEnable() { - // mock 方法,数据类型被禁用 - String dictType = randomString(); - when(dictTypeService.getDictType(eq(dictType))).thenReturn( - randomPojo(DictTypeDO.class, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - - // 调用, 并断言异常 - assertServiceException(() -> dictDataService.validateDictTypeExists(dictType), DICT_TYPE_NOT_ENABLE); - } - - @Test - public void testValidateDictDataValueUnique_success() { - // 调用,成功 - dictDataService.validateDictDataValueUnique(randomLongId(), randomString(), randomString()); - } - - @Test - public void testValidateDictDataValueUnique_valueDuplicateForCreate() { - // 准备参数 - String dictType = randomString(); - String value = randomString(); - // mock 数据 - dictDataMapper.insert(randomDictDataDO(o -> { - o.setDictType(dictType); - o.setValue(value); - })); - - // 调用,校验异常 - assertServiceException(() -> dictDataService.validateDictDataValueUnique(null, dictType, value), - DICT_DATA_VALUE_DUPLICATE); - } - - @Test - public void testValidateDictDataValueUnique_valueDuplicateForUpdate() { - // 准备参数 - Long id = randomLongId(); - String dictType = randomString(); - String value = randomString(); - // mock 数据 - dictDataMapper.insert(randomDictDataDO(o -> { - o.setDictType(dictType); - o.setValue(value); - })); - - // 调用,校验异常 - assertServiceException(() -> dictDataService.validateDictDataValueUnique(id, dictType, value), - DICT_DATA_VALUE_DUPLICATE); - } - - @Test - public void testCountByDictType() { - // mock 数据 - dictDataMapper.insert(randomDictDataDO(o -> o.setDictType("yunai"))); - dictDataMapper.insert(randomDictDataDO(o -> o.setDictType("tudou"))); - dictDataMapper.insert(randomDictDataDO(o -> o.setDictType("yunai"))); - // 准备参数 - String dictType = "yunai"; - - // 调用 - long count = dictDataService.countByDictType(dictType); - // 校验 - assertEquals(2L, count); - } - - @Test - public void testValidateDictDataList_success() { - // mock 数据 - DictDataDO dictDataDO = randomDictDataDO().setStatus(CommonStatusEnum.ENABLE.getStatus()); - dictDataMapper.insert(dictDataDO); - // 准备参数 - String dictType = dictDataDO.getDictType(); - List values = singletonList(dictDataDO.getValue()); - - // 调用,无需断言 - dictDataService.validateDictDataList(dictType, values); - } - - @Test - public void testValidateDictDataList_notFound() { - // 准备参数 - String dictType = randomString(); - List values = singletonList(randomString()); - - // 调用, 并断言异常 - assertServiceException(() -> dictDataService.validateDictDataList(dictType, values), DICT_DATA_NOT_EXISTS); - } - - @Test - public void testValidateDictDataList_notEnable() { - // mock 数据 - DictDataDO dictDataDO = randomDictDataDO().setStatus(CommonStatusEnum.DISABLE.getStatus()); - dictDataMapper.insert(dictDataDO); - // 准备参数 - String dictType = dictDataDO.getDictType(); - List values = singletonList(dictDataDO.getValue()); - - // 调用, 并断言异常 - assertServiceException(() -> dictDataService.validateDictDataList(dictType, values), - DICT_DATA_NOT_ENABLE, dictDataDO.getLabel()); - } - - @Test - public void testGetDictData_dictType() { - // mock 数据 - DictDataDO dictDataDO = randomDictDataDO().setDictType("yunai").setValue("1"); - dictDataMapper.insert(dictDataDO); - DictDataDO dictDataDO02 = randomDictDataDO().setDictType("yunai").setValue("2"); - dictDataMapper.insert(dictDataDO02); - // 准备参数 - String dictType = "yunai"; - String value = "1"; - - // 调用 - DictDataDO dbDictData = dictDataService.getDictData(dictType, value); - // 断言 - assertEquals(dictDataDO, dbDictData); - } - - @Test - public void testParseDictData() { - // mock 数据 - DictDataDO dictDataDO = randomDictDataDO().setDictType("yunai").setLabel("1"); - dictDataMapper.insert(dictDataDO); - DictDataDO dictDataDO02 = randomDictDataDO().setDictType("yunai").setLabel("2"); - dictDataMapper.insert(dictDataDO02); - // 准备参数 - String dictType = "yunai"; - String label = "1"; - - // 调用 - DictDataDO dbDictData = dictDataService.parseDictData(dictType, label); - // 断言 - assertEquals(dictDataDO, dbDictData); - } - - // ========== 随机对象 ========== - - @SafeVarargs - private static DictDataDO randomDictDataDO(Consumer... consumers) { - Consumer consumer = (o) -> { - o.setStatus(randomCommonStatus()); // 保证 status 的范围 - }; - return randomPojo(DictDataDO.class, ArrayUtils.append(consumer, consumers)); - } - - /** - * 生成一个有效的字典类型 - * - * @param type 字典类型 - * @return DictTypeDO 对象 - */ - private static DictTypeDO randomDictTypeDO(String type) { - return randomPojo(DictTypeDO.class, o -> { - o.setType(type); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 保证 status 是开启 - }); - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/dict/DictTypeServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/dict/DictTypeServiceImplTest.java deleted file mode 100644 index fbb02c5d..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/dict/DictTypeServiceImplTest.java +++ /dev/null @@ -1,304 +0,0 @@ -package com.win.module.system.service.dict; - -import com.win.framework.common.enums.CommonStatusEnum; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.common.util.collection.ArrayUtils; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.controller.admin.dict.vo.type.DictTypeCreateReqVO; -import com.win.module.system.controller.admin.dict.vo.type.DictTypeExportReqVO; -import com.win.module.system.controller.admin.dict.vo.type.DictTypePageReqVO; -import com.win.module.system.controller.admin.dict.vo.type.DictTypeUpdateReqVO; -import com.win.module.system.dal.dataobject.dict.DictTypeDO; -import com.win.module.system.dal.mysql.dict.DictTypeMapper; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.List; -import java.util.function.Consumer; - -import static cn.hutool.core.util.RandomUtil.randomEle; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.*; -import static com.win.module.system.enums.ErrorCodeConstants.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.when; - -@Import(DictTypeServiceImpl.class) -public class DictTypeServiceImplTest extends BaseDbUnitTest { - - @Resource - private DictTypeServiceImpl dictTypeService; - - @Resource - private DictTypeMapper dictTypeMapper; - @MockBean - private DictDataService dictDataService; - - @Test - public void testGetDictTypePage() { - // mock 数据 - DictTypeDO dbDictType = randomPojo(DictTypeDO.class, o -> { // 等会查询到 - o.setName("yunai"); - o.setType("芋艿"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setCreateTime(buildTime(2021, 1, 15)); - }); - dictTypeMapper.insert(dbDictType); - // 测试 name 不匹配 - dictTypeMapper.insert(cloneIgnoreId(dbDictType, o -> o.setName("tudou"))); - // 测试 type 不匹配 - dictTypeMapper.insert(cloneIgnoreId(dbDictType, o -> o.setType("土豆"))); - // 测试 status 不匹配 - dictTypeMapper.insert(cloneIgnoreId(dbDictType, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 测试 createTime 不匹配 - dictTypeMapper.insert(cloneIgnoreId(dbDictType, o -> o.setCreateTime(buildTime(2021, 1, 1)))); - // 准备参数 - DictTypePageReqVO reqVO = new DictTypePageReqVO(); - reqVO.setName("nai"); - reqVO.setType("艿"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - reqVO.setCreateTime(buildBetweenTime(2021, 1, 10, 2021, 1, 20)); - - // 调用 - PageResult pageResult = dictTypeService.getDictTypePage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbDictType, pageResult.getList().get(0)); - } - - @Test - public void testGetDictTypeList_export() { - // mock 数据 - DictTypeDO dbDictType = randomPojo(DictTypeDO.class, o -> { // 等会查询到 - o.setName("yunai"); - o.setType("芋艿"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setCreateTime(buildTime(2021, 1, 15)); - }); - dictTypeMapper.insert(dbDictType); - // 测试 name 不匹配 - dictTypeMapper.insert(cloneIgnoreId(dbDictType, o -> o.setName("tudou"))); - // 测试 type 不匹配 - dictTypeMapper.insert(cloneIgnoreId(dbDictType, o -> o.setType("土豆"))); - // 测试 status 不匹配 - dictTypeMapper.insert(cloneIgnoreId(dbDictType, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 测试 createTime 不匹配 - dictTypeMapper.insert(cloneIgnoreId(dbDictType, o -> o.setCreateTime(buildTime(2021, 1, 1)))); - // 准备参数 - DictTypeExportReqVO reqVO = new DictTypeExportReqVO(); - reqVO.setName("nai"); - reqVO.setType("艿"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - reqVO.setCreateTime(buildBetweenTime(2021, 1, 10, 2021, 1, 20)); - - // 调用 - List list = dictTypeService.getDictTypeList(reqVO); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(dbDictType, list.get(0)); - } - - @Test - public void testGetDictType_id() { - // mock 数据 - DictTypeDO dbDictType = randomDictTypeDO(); - dictTypeMapper.insert(dbDictType); - // 准备参数 - Long id = dbDictType.getId(); - - // 调用 - DictTypeDO dictType = dictTypeService.getDictType(id); - // 断言 - assertNotNull(dictType); - assertPojoEquals(dbDictType, dictType); - } - - @Test - public void testGetDictType_type() { - // mock 数据 - DictTypeDO dbDictType = randomDictTypeDO(); - dictTypeMapper.insert(dbDictType); - // 准备参数 - String type = dbDictType.getType(); - - // 调用 - DictTypeDO dictType = dictTypeService.getDictType(type); - // 断言 - assertNotNull(dictType); - assertPojoEquals(dbDictType, dictType); - } - - @Test - public void testCreateDictType_success() { - // 准备参数 - DictTypeCreateReqVO reqVO = randomPojo(DictTypeCreateReqVO.class, - o -> o.setStatus(randomEle(CommonStatusEnum.values()).getStatus())); - - // 调用 - Long dictTypeId = dictTypeService.createDictType(reqVO); - // 断言 - assertNotNull(dictTypeId); - // 校验记录的属性是否正确 - DictTypeDO dictType = dictTypeMapper.selectById(dictTypeId); - assertPojoEquals(reqVO, dictType); - } - - @Test - public void testUpdateDictType_success() { - // mock 数据 - DictTypeDO dbDictType = randomDictTypeDO(); - dictTypeMapper.insert(dbDictType);// @Sql: 先插入出一条存在的数据 - // 准备参数 - DictTypeUpdateReqVO reqVO = randomPojo(DictTypeUpdateReqVO.class, o -> { - o.setId(dbDictType.getId()); // 设置更新的 ID - o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); - }); - - // 调用 - dictTypeService.updateDictType(reqVO); - // 校验是否更新正确 - DictTypeDO dictType = dictTypeMapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, dictType); - } - - @Test - public void testDeleteDictType_success() { - // mock 数据 - DictTypeDO dbDictType = randomDictTypeDO(); - dictTypeMapper.insert(dbDictType);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbDictType.getId(); - - // 调用 - dictTypeService.deleteDictType(id); - // 校验数据不存在了 - assertNull(dictTypeMapper.selectById(id)); - } - - @Test - public void testDeleteDictType_hasChildren() { - // mock 数据 - DictTypeDO dbDictType = randomDictTypeDO(); - dictTypeMapper.insert(dbDictType);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbDictType.getId(); - // mock 方法 - when(dictDataService.countByDictType(eq(dbDictType.getType()))).thenReturn(1L); - - // 调用, 并断言异常 - assertServiceException(() -> dictTypeService.deleteDictType(id), DICT_TYPE_HAS_CHILDREN); - } - - @Test - public void testGetDictTypeList() { - // 准备参数 - DictTypeDO dictTypeDO01 = randomDictTypeDO(); - dictTypeMapper.insert(dictTypeDO01); - DictTypeDO dictTypeDO02 = randomDictTypeDO(); - dictTypeMapper.insert(dictTypeDO02); - // mock 方法 - - // 调用 - List dictTypeDOList = dictTypeService.getDictTypeList(); - // 断言 - assertEquals(2, dictTypeDOList.size()); - assertPojoEquals(dictTypeDO01, dictTypeDOList.get(0)); - assertPojoEquals(dictTypeDO02, dictTypeDOList.get(1)); - } - - @Test - public void testValidateDictDataExists_success() { - // mock 数据 - DictTypeDO dbDictType = randomDictTypeDO(); - dictTypeMapper.insert(dbDictType);// @Sql: 先插入出一条存在的数据 - - // 调用成功 - dictTypeService.validateDictTypeExists(dbDictType.getId()); - } - - @Test - public void testValidateDictDataExists_notExists() { - assertServiceException(() -> dictTypeService.validateDictTypeExists(randomLongId()), DICT_TYPE_NOT_EXISTS); - } - - @Test - public void testValidateDictTypeUnique_success() { - // 调用,成功 - dictTypeService.validateDictTypeUnique(randomLongId(), randomString()); - } - - @Test - public void testValidateDictTypeUnique_valueDuplicateForCreate() { - // 准备参数 - String type = randomString(); - // mock 数据 - dictTypeMapper.insert(randomDictTypeDO(o -> o.setType(type))); - - // 调用,校验异常 - assertServiceException(() -> dictTypeService.validateDictTypeUnique(null, type), - DICT_TYPE_TYPE_DUPLICATE); - } - - @Test - public void testValidateDictTypeUnique_valueDuplicateForUpdate() { - // 准备参数 - Long id = randomLongId(); - String type = randomString(); - // mock 数据 - dictTypeMapper.insert(randomDictTypeDO(o -> o.setType(type))); - - // 调用,校验异常 - assertServiceException(() -> dictTypeService.validateDictTypeUnique(id, type), - DICT_TYPE_TYPE_DUPLICATE); - } - - @Test - public void testValidateDictTypNameUnique_success() { - // 调用,成功 - dictTypeService.validateDictTypeNameUnique(randomLongId(), randomString()); - } - - @Test - public void testValidateDictTypeNameUnique_nameDuplicateForCreate() { - // 准备参数 - String name = randomString(); - // mock 数据 - dictTypeMapper.insert(randomDictTypeDO(o -> o.setName(name))); - - // 调用,校验异常 - assertServiceException(() -> dictTypeService.validateDictTypeNameUnique(null, name), - DICT_TYPE_NAME_DUPLICATE); - } - - @Test - public void testValidateDictTypeNameUnique_nameDuplicateForUpdate() { - // 准备参数 - Long id = randomLongId(); - String name = randomString(); - // mock 数据 - dictTypeMapper.insert(randomDictTypeDO(o -> o.setName(name))); - - // 调用,校验异常 - assertServiceException(() -> dictTypeService.validateDictTypeNameUnique(id, name), - DICT_TYPE_NAME_DUPLICATE); - } - - // ========== 随机对象 ========== - - @SafeVarargs - private static DictTypeDO randomDictTypeDO(Consumer... consumers) { - Consumer consumer = (o) -> { - o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围 - }; - return randomPojo(DictTypeDO.class, ArrayUtils.append(consumer, consumers)); - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/errorcode/ErrorCodeServiceTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/errorcode/ErrorCodeServiceTest.java deleted file mode 100644 index 3fc37f4c..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/errorcode/ErrorCodeServiceTest.java +++ /dev/null @@ -1,328 +0,0 @@ -package com.win.module.system.service.errorcode; - -import com.win.framework.common.pojo.PageResult; -import com.win.framework.common.util.collection.ArrayUtils; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.api.errorcode.dto.ErrorCodeAutoGenerateReqDTO; -import com.win.module.system.api.errorcode.dto.ErrorCodeRespDTO; -import com.win.module.system.controller.admin.errorcode.vo.ErrorCodeCreateReqVO; -import com.win.module.system.controller.admin.errorcode.vo.ErrorCodeExportReqVO; -import com.win.module.system.controller.admin.errorcode.vo.ErrorCodePageReqVO; -import com.win.module.system.controller.admin.errorcode.vo.ErrorCodeUpdateReqVO; -import com.win.module.system.dal.dataobject.errorcode.ErrorCodeDO; -import com.win.module.system.dal.mysql.errorcode.ErrorCodeMapper; -import com.win.module.system.enums.errorcode.ErrorCodeTypeEnum; -import org.assertj.core.util.Lists; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.time.LocalDateTime; -import java.util.List; -import java.util.function.Consumer; - -import static cn.hutool.core.util.RandomUtil.randomEle; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.*; -import static com.win.module.system.enums.ErrorCodeConstants.ERROR_CODE_DUPLICATE; -import static com.win.module.system.enums.ErrorCodeConstants.ERROR_CODE_NOT_EXISTS; -import static org.junit.jupiter.api.Assertions.*; - -@Import(ErrorCodeServiceImpl.class) -public class ErrorCodeServiceTest extends BaseDbUnitTest { - - @Resource - private ErrorCodeServiceImpl errorCodeService; - - @Resource - private ErrorCodeMapper errorCodeMapper; - - @Test - public void testCreateErrorCode_success() { - // 准备参数 - ErrorCodeCreateReqVO reqVO = randomPojo(ErrorCodeCreateReqVO.class); - - // 调用 - Long errorCodeId = errorCodeService.createErrorCode(reqVO); - // 断言 - assertNotNull(errorCodeId); - // 校验记录的属性是否正确 - ErrorCodeDO errorCode = errorCodeMapper.selectById(errorCodeId); - assertPojoEquals(reqVO, errorCode); - assertEquals(ErrorCodeTypeEnum.MANUAL_OPERATION.getType(), errorCode.getType()); - } - - @Test - public void testUpdateErrorCode_success() { - // mock 数据 - ErrorCodeDO dbErrorCode = randomErrorCodeDO(); - errorCodeMapper.insert(dbErrorCode);// @Sql: 先插入出一条存在的数据 - // 准备参数 - ErrorCodeUpdateReqVO reqVO = randomPojo(ErrorCodeUpdateReqVO.class, o -> { - o.setId(dbErrorCode.getId()); // 设置更新的 ID - }); - - // 调用 - errorCodeService.updateErrorCode(reqVO); - // 校验是否更新正确 - ErrorCodeDO errorCode = errorCodeMapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, errorCode); - assertEquals(ErrorCodeTypeEnum.MANUAL_OPERATION.getType(), errorCode.getType()); - } - - @Test - public void testDeleteErrorCode_success() { - // mock 数据 - ErrorCodeDO dbErrorCode = randomErrorCodeDO(); - errorCodeMapper.insert(dbErrorCode);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbErrorCode.getId(); - - // 调用 - errorCodeService.deleteErrorCode(id); - // 校验数据不存在了 - assertNull(errorCodeMapper.selectById(id)); - } - - @Test - public void testGetErrorCodePage() { - // mock 数据 - ErrorCodeDO dbErrorCode = initGetErrorCodePage(); - // 准备参数 - ErrorCodePageReqVO reqVO = new ErrorCodePageReqVO(); - reqVO.setType(ErrorCodeTypeEnum.AUTO_GENERATION.getType()); - reqVO.setApplicationName("tu"); - reqVO.setCode(1); - reqVO.setMessage("ma"); - reqVO.setCreateTime(buildBetweenTime(2020, 11, 1, 2020, 11, 30)); - - // 调用 - PageResult pageResult = errorCodeService.getErrorCodePage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbErrorCode, pageResult.getList().get(0)); - } - - /** - * 初始化 getErrorCodePage 方法的测试数据 - */ - private ErrorCodeDO initGetErrorCodePage() { - ErrorCodeDO dbErrorCode = randomErrorCodeDO(o -> { // 等会查询到 - o.setType(ErrorCodeTypeEnum.AUTO_GENERATION.getType()); - o.setApplicationName("tudou"); - o.setCode(1); - o.setMessage("yuanma"); - o.setCreateTime(buildTime(2020, 11, 11)); - }); - errorCodeMapper.insert(dbErrorCode); - // 测试 type 不匹配 - errorCodeMapper.insert(cloneIgnoreId(dbErrorCode, o -> o.setType(ErrorCodeTypeEnum.MANUAL_OPERATION.getType()))); - // 测试 applicationName 不匹配 - errorCodeMapper.insert(cloneIgnoreId(dbErrorCode, o -> o.setApplicationName("yuan"))); - // 测试 code 不匹配 - errorCodeMapper.insert(cloneIgnoreId(dbErrorCode, o -> o.setCode(2))); - // 测试 message 不匹配 - errorCodeMapper.insert(cloneIgnoreId(dbErrorCode, o -> o.setMessage("nai"))); - // 测试 createTime 不匹配 - errorCodeMapper.insert(cloneIgnoreId(dbErrorCode, o -> o.setCreateTime(buildTime(2020, 12, 12)))); - return dbErrorCode; - } - - @Test - public void testGetErrorCodeList_export() { - // mock 数据 - ErrorCodeDO dbErrorCode = initGetErrorCodePage(); - // 准备参数 - ErrorCodeExportReqVO reqVO = new ErrorCodeExportReqVO(); - reqVO.setType(ErrorCodeTypeEnum.AUTO_GENERATION.getType()); - reqVO.setApplicationName("tu"); - reqVO.setCode(1); - reqVO.setMessage("ma"); - reqVO.setCreateTime(buildBetweenTime(2020, 11, 1, 2020, 11, 30)); - - // 调用 - List list = errorCodeService.getErrorCodeList(reqVO); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(dbErrorCode, list.get(0)); - } - - @Test - public void testValidateCodeDuplicate_codeDuplicateForCreate() { - // 准备参数 - Integer code = randomInteger(); - // mock 数据 - errorCodeMapper.insert(randomErrorCodeDO(o -> o.setCode(code))); - - // 调用,校验异常 - assertServiceException(() -> errorCodeService.validateCodeDuplicate(code, null), - ERROR_CODE_DUPLICATE); - } - - @Test - public void testValidateCodeDuplicate_codeDuplicateForUpdate() { - // 准备参数 - Long id = randomLongId(); - Integer code = randomInteger(); - // mock 数据 - errorCodeMapper.insert(randomErrorCodeDO(o -> o.setCode(code))); - - // 调用,校验异常 - assertServiceException(() -> errorCodeService.validateCodeDuplicate(code, id), - ERROR_CODE_DUPLICATE); - } - - @Test - public void testValidateErrorCodeExists_notExists() { - assertServiceException(() -> errorCodeService.validateErrorCodeExists(null), - ERROR_CODE_NOT_EXISTS); - } - - /** - * 情况 1,错误码不存在的情况 - */ - @Test - public void testAutoGenerateErrorCodes_01() { - // 准备参数 - ErrorCodeAutoGenerateReqDTO generateReqDTO = randomPojo(ErrorCodeAutoGenerateReqDTO.class); - // mock 方法 - - // 调用 - errorCodeService.autoGenerateErrorCodes(Lists.newArrayList(generateReqDTO)); - // 断言 - ErrorCodeDO errorCode = errorCodeMapper.selectOne(null); - assertPojoEquals(generateReqDTO, errorCode); - assertEquals(ErrorCodeTypeEnum.AUTO_GENERATION.getType(), errorCode.getType()); - } - - /** - * 情况 2.1,错误码存在,但是是 ErrorCodeTypeEnum.MANUAL_OPERATION 类型 - */ - @Test - public void testAutoGenerateErrorCodes_021() { - // mock 数据 - ErrorCodeDO dbErrorCode = randomErrorCodeDO(o -> o.setType(ErrorCodeTypeEnum.MANUAL_OPERATION.getType())); - errorCodeMapper.insert(dbErrorCode); - // 准备参数 - ErrorCodeAutoGenerateReqDTO generateReqDTO = randomPojo(ErrorCodeAutoGenerateReqDTO.class, - o -> o.setCode(dbErrorCode.getCode())); - // mock 方法 - - // 调用 - errorCodeService.autoGenerateErrorCodes(Lists.newArrayList(generateReqDTO)); - // 断言,相等,说明不会更新 - ErrorCodeDO errorCode = errorCodeMapper.selectById(dbErrorCode.getId()); - assertPojoEquals(dbErrorCode, errorCode); - } - - /** - * 情况 2.2,错误码存在,但是是 applicationName 不匹配 - */ - @Test - public void testAutoGenerateErrorCodes_022() { - // mock 数据 - ErrorCodeDO dbErrorCode = randomErrorCodeDO(o -> o.setType(ErrorCodeTypeEnum.AUTO_GENERATION.getType())); - errorCodeMapper.insert(dbErrorCode); - // 准备参数 - ErrorCodeAutoGenerateReqDTO generateReqDTO = randomPojo(ErrorCodeAutoGenerateReqDTO.class, - o -> o.setCode(dbErrorCode.getCode()).setApplicationName(randomString())); - // mock 方法 - - // 调用 - errorCodeService.autoGenerateErrorCodes(Lists.newArrayList(generateReqDTO)); - // 断言,相等,说明不会更新 - ErrorCodeDO errorCode = errorCodeMapper.selectById(dbErrorCode.getId()); - assertPojoEquals(dbErrorCode, errorCode); - } - - /** - * 情况 2.3,错误码存在,但是是 message 相同 - */ - @Test - public void testAutoGenerateErrorCodes_023() { - // mock 数据 - ErrorCodeDO dbErrorCode = randomErrorCodeDO(o -> o.setType(ErrorCodeTypeEnum.AUTO_GENERATION.getType())); - errorCodeMapper.insert(dbErrorCode); - // 准备参数 - ErrorCodeAutoGenerateReqDTO generateReqDTO = randomPojo(ErrorCodeAutoGenerateReqDTO.class, - o -> o.setCode(dbErrorCode.getCode()).setApplicationName(dbErrorCode.getApplicationName()) - .setMessage(dbErrorCode.getMessage())); - // mock 方法 - - // 调用 - errorCodeService.autoGenerateErrorCodes(Lists.newArrayList(generateReqDTO)); - // 断言,相等,说明不会更新 - ErrorCodeDO errorCode = errorCodeMapper.selectById(dbErrorCode.getId()); - assertPojoEquals(dbErrorCode, errorCode); - } - - /** - * 情况 2.3,错误码存在,但是是 message 不同,则进行更新 - */ - @Test - public void testAutoGenerateErrorCodes_024() { - // mock 数据 - ErrorCodeDO dbErrorCode = randomErrorCodeDO(o -> o.setType(ErrorCodeTypeEnum.AUTO_GENERATION.getType())); - errorCodeMapper.insert(dbErrorCode); - // 准备参数 - ErrorCodeAutoGenerateReqDTO generateReqDTO = randomPojo(ErrorCodeAutoGenerateReqDTO.class, - o -> o.setCode(dbErrorCode.getCode()).setApplicationName(dbErrorCode.getApplicationName())); - // mock 方法 - - // 调用 - errorCodeService.autoGenerateErrorCodes(Lists.newArrayList(generateReqDTO)); - // 断言,匹配 - ErrorCodeDO errorCode = errorCodeMapper.selectById(dbErrorCode.getId()); - assertPojoEquals(generateReqDTO, errorCode); - } - - @Test - public void testGetErrorCode() { - // 准备参数 - ErrorCodeDO errorCodeDO = randomErrorCodeDO(); - errorCodeMapper.insert(errorCodeDO); - // mock 方法 - Long id = errorCodeDO.getId(); - - // 调用 - ErrorCodeDO dbErrorCode = errorCodeService.getErrorCode(id); - // 断言 - assertPojoEquals(errorCodeDO, dbErrorCode); - } - - @Test - public void testGetErrorCodeList() { - // 准备参数 - ErrorCodeDO errorCodeDO01 = randomErrorCodeDO( - o -> o.setApplicationName("yunai_server").setUpdateTime(buildTime(2022, 1, 10))); - errorCodeMapper.insert(errorCodeDO01); - ErrorCodeDO errorCodeDO02 = randomErrorCodeDO( - o -> o.setApplicationName("yunai_server").setUpdateTime(buildTime(2022, 1, 12))); - errorCodeMapper.insert(errorCodeDO02); - // mock 方法 - String applicationName = "yunai_server"; - LocalDateTime minUpdateTime = buildTime(2022, 1, 11); - - // 调用 - List errorCodeList = errorCodeService.getErrorCodeList(applicationName, minUpdateTime); - // 断言 - assertEquals(1, errorCodeList.size()); - assertPojoEquals(errorCodeDO02, errorCodeList.get(0)); - } - - // ========== 随机对象 ========== - - @SafeVarargs - private static ErrorCodeDO randomErrorCodeDO(Consumer... consumers) { - Consumer consumer = (o) -> { - o.setType(randomEle(ErrorCodeTypeEnum.values()).getType()); // 保证 key 的范围 - }; - return randomPojo(ErrorCodeDO.class, ArrayUtils.append(consumer, consumers)); - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/logger/LoginLogServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/logger/LoginLogServiceImplTest.java deleted file mode 100644 index de5f0ce2..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/logger/LoginLogServiceImplTest.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.win.module.system.service.logger; - -import com.win.framework.common.pojo.PageResult; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.api.logger.dto.LoginLogCreateReqDTO; -import com.win.module.system.controller.admin.logger.vo.loginlog.LoginLogExportReqVO; -import com.win.module.system.controller.admin.logger.vo.loginlog.LoginLogPageReqVO; -import com.win.module.system.dal.dataobject.logger.LoginLogDO; -import com.win.module.system.dal.mysql.logger.LoginLogMapper; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.List; - -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.RandomUtils.randomPojo; -import static com.win.module.system.enums.logger.LoginResultEnum.CAPTCHA_CODE_ERROR; -import static com.win.module.system.enums.logger.LoginResultEnum.SUCCESS; -import static org.junit.jupiter.api.Assertions.assertEquals; - -@Import(LoginLogServiceImpl.class) -public class LoginLogServiceImplTest extends BaseDbUnitTest { - - @Resource - private LoginLogServiceImpl loginLogService; - - @Resource - private LoginLogMapper loginLogMapper; - - @Test - public void testGetLoginLogPage() { - // mock 数据 - LoginLogDO loginLogDO = randomPojo(LoginLogDO.class, o -> { - o.setUserIp("192.168.199.16"); - o.setUsername("wang"); - o.setResult(SUCCESS.getResult()); - o.setCreateTime(buildTime(2021, 3, 6)); - }); - loginLogMapper.insert(loginLogDO); - // 测试 status 不匹配 - loginLogMapper.insert(cloneIgnoreId(loginLogDO, o -> o.setResult(CAPTCHA_CODE_ERROR.getResult()))); - // 测试 ip 不匹配 - loginLogMapper.insert(cloneIgnoreId(loginLogDO, o -> o.setUserIp("192.168.128.18"))); - // 测试 username 不匹配 - loginLogMapper.insert(cloneIgnoreId(loginLogDO, o -> o.setUsername("yunai"))); - // 测试 createTime 不匹配 - loginLogMapper.insert(cloneIgnoreId(loginLogDO, o -> o.setCreateTime(buildTime(2021, 2, 6)))); - // 构造调用参数 - LoginLogPageReqVO reqVO = new LoginLogPageReqVO(); - reqVO.setUsername("wang"); - reqVO.setUserIp("192.168.199"); - reqVO.setStatus(true); - reqVO.setCreateTime(buildBetweenTime(2021, 3, 5, 2021, 3, 7)); - - // 调用 - PageResult pageResult = loginLogService.getLoginLogPage(reqVO); - // 断言,只查到了一条符合条件的 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(loginLogDO, pageResult.getList().get(0)); - } - - @Test - public void testGetLoginLogList() { - // mock 数据 - LoginLogDO loginLogDO = randomPojo(LoginLogDO.class, o -> { - o.setUserIp("192.168.199.16"); - o.setUsername("wang"); - o.setResult(SUCCESS.getResult()); - o.setCreateTime(buildTime(2021, 3, 6)); - }); - loginLogMapper.insert(loginLogDO); - // 测试 status 不匹配 - loginLogMapper.insert(cloneIgnoreId(loginLogDO, o -> o.setResult(CAPTCHA_CODE_ERROR.getResult()))); - // 测试 ip 不匹配 - loginLogMapper.insert(cloneIgnoreId(loginLogDO, o -> o.setUserIp("192.168.128.18"))); - // 测试 username 不匹配 - loginLogMapper.insert(cloneIgnoreId(loginLogDO, o -> o.setUsername("yunai"))); - // 测试 createTime 不匹配 - loginLogMapper.insert(cloneIgnoreId(loginLogDO, o -> o.setCreateTime(buildTime(2021, 2, 6)))); - // 构造调用参数 - LoginLogExportReqVO reqVO = new LoginLogExportReqVO(); - reqVO.setUsername("wang"); - reqVO.setUserIp("192.168.199"); - reqVO.setStatus(true); - reqVO.setCreateTime(buildBetweenTime(2021, 3, 5, 2021, 3, 7)); - - // 调用service方法 - List list = loginLogService.getLoginLogList(reqVO); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(loginLogDO, list.get(0)); - } - - @Test - public void testCreateLoginLog() { - LoginLogCreateReqDTO reqDTO = randomPojo(LoginLogCreateReqDTO.class); - - // 调用 - loginLogService.createLoginLog(reqDTO); - // 断言 - LoginLogDO loginLogDO = loginLogMapper.selectOne(null); - assertPojoEquals(reqDTO, loginLogDO); - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/logger/OperateLogServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/logger/OperateLogServiceImplTest.java deleted file mode 100644 index a6210a64..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/logger/OperateLogServiceImplTest.java +++ /dev/null @@ -1,155 +0,0 @@ -package com.win.module.system.service.logger; - -import cn.hutool.core.map.MapUtil; -import com.win.framework.common.enums.CommonStatusEnum; -import com.win.framework.common.enums.UserTypeEnum; -import com.win.framework.common.exception.enums.GlobalErrorCodeConstants; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.operatelog.core.enums.OperateTypeEnum; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.framework.test.core.util.RandomUtils; -import com.win.module.system.api.logger.dto.OperateLogCreateReqDTO; -import com.win.module.system.controller.admin.logger.vo.operatelog.OperateLogExportReqVO; -import com.win.module.system.controller.admin.logger.vo.operatelog.OperateLogPageReqVO; -import com.win.module.system.dal.dataobject.logger.OperateLogDO; -import com.win.module.system.dal.dataobject.user.AdminUserDO; -import com.win.module.system.dal.mysql.logger.OperateLogMapper; -import com.win.module.system.service.user.AdminUserService; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.Collections; -import java.util.List; - -import static cn.hutool.core.util.RandomUtil.randomEle; -import static com.win.framework.common.exception.enums.GlobalErrorCodeConstants.BAD_REQUEST; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.RandomUtils.randomLongId; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.Mockito.when; - -@Import({OperateLogServiceImpl.class}) -public class OperateLogServiceImplTest extends BaseDbUnitTest { - - @Resource - private OperateLogService operateLogServiceImpl; - - @Resource - private OperateLogMapper operateLogMapper; - - @MockBean - private AdminUserService userService; - - @Test - public void testCreateOperateLogAsync() { - OperateLogCreateReqDTO reqVO = RandomUtils.randomPojo(OperateLogCreateReqDTO.class, - o -> o.setExts(MapUtil.builder("orderId", randomLongId()).build())); - - // 调研 - operateLogServiceImpl.createOperateLog(reqVO); - // 断言 - OperateLogDO operateLogDO = operateLogMapper.selectOne(null); - assertPojoEquals(reqVO, operateLogDO); - } - - @Test - public void testGetOperateLogPage() { - // mock(用户信息) - AdminUserDO user = RandomUtils.randomPojo(AdminUserDO.class, o -> { - o.setNickname("wang"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - }); - when(userService.getUserListByNickname("wang")).thenReturn(Collections.singletonList(user)); - Long userId = user.getId(); - - // 构造操作日志 - OperateLogDO operateLogDO = RandomUtils.randomPojo(OperateLogDO.class, o -> { - o.setUserId(userId); - o.setUserType(randomEle(UserTypeEnum.values()).getValue()); - o.setModule("order"); - o.setType(OperateTypeEnum.CREATE.getType()); - o.setStartTime(buildTime(2021, 3, 6)); - o.setResultCode(GlobalErrorCodeConstants.SUCCESS.getCode()); - o.setExts(MapUtil.builder("orderId", randomLongId()).build()); - }); - operateLogMapper.insert(operateLogDO); - // 测试 userId 不匹配 - operateLogMapper.insert(cloneIgnoreId(operateLogDO, o -> o.setUserId(userId + 1))); - // 测试 module 不匹配 - operateLogMapper.insert(cloneIgnoreId(operateLogDO, o -> o.setModule("user"))); - // 测试 type 不匹配 - operateLogMapper.insert(cloneIgnoreId(operateLogDO, o -> o.setType(OperateTypeEnum.IMPORT.getType()))); - // 测试 createTime 不匹配 - operateLogMapper.insert(cloneIgnoreId(operateLogDO, o -> o.setStartTime(buildTime(2021, 2, 6)))); - // 测试 resultCode 不匹配 - operateLogMapper.insert(cloneIgnoreId(operateLogDO, o -> o.setResultCode(BAD_REQUEST.getCode()))); - - // 构造调用参数 - OperateLogPageReqVO reqVO = new OperateLogPageReqVO(); - reqVO.setUserNickname("wang"); - reqVO.setModule("order"); - reqVO.setType(OperateTypeEnum.CREATE.getType()); - reqVO.setStartTime(buildBetweenTime(2021, 3, 5, 2021, 3, 7)); - reqVO.setSuccess(true); - - // 调用 - PageResult pageResult = operateLogServiceImpl.getOperateLogPage(reqVO); - // 断言,只查到了一条符合条件的 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(operateLogDO, pageResult.getList().get(0)); - } - - @Test - public void testGetOperateLogs() { - // mock(用户信息) - AdminUserDO user = RandomUtils.randomPojo(AdminUserDO.class, o -> { - o.setNickname("wang"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - }); - when(userService.getUserListByNickname("wang")).thenReturn(Collections.singletonList(user)); - Long userId = user.getId(); - - // 构造操作日志 - OperateLogDO operateLogDO = RandomUtils.randomPojo(OperateLogDO.class, o -> { - o.setUserId(userId); - o.setUserType(randomEle(UserTypeEnum.values()).getValue()); - o.setModule("order"); - o.setType(OperateTypeEnum.CREATE.getType()); - o.setStartTime(buildTime(2021, 3, 6)); - o.setResultCode(GlobalErrorCodeConstants.SUCCESS.getCode()); - o.setExts(MapUtil.builder("orderId", randomLongId()).build()); - }); - operateLogMapper.insert(operateLogDO); - // 测试 userId 不匹配 - operateLogMapper.insert(cloneIgnoreId(operateLogDO, o -> o.setUserId(userId + 1))); - // 测试 module 不匹配 - operateLogMapper.insert(cloneIgnoreId(operateLogDO, o -> o.setModule("user"))); - // 测试 type 不匹配 - operateLogMapper.insert(cloneIgnoreId(operateLogDO, o -> o.setType(OperateTypeEnum.IMPORT.getType()))); - // 测试 createTime 不匹配 - operateLogMapper.insert(cloneIgnoreId(operateLogDO, o -> o.setStartTime(buildTime(2021, 2, 6)))); - // 测试 resultCode 不匹配 - operateLogMapper.insert(cloneIgnoreId(operateLogDO, o -> o.setResultCode(BAD_REQUEST.getCode()))); - - // 构造调用参数 - OperateLogExportReqVO reqVO = new OperateLogExportReqVO(); - reqVO.setUserNickname("wang"); - reqVO.setModule("order"); - reqVO.setType(OperateTypeEnum.CREATE.getType()); - reqVO.setStartTime(buildBetweenTime(2021, 3, 5, 2021, 3, 7)); - reqVO.setSuccess(true); - - // 调用 service 方法 - List list = operateLogServiceImpl.getOperateLogList(reqVO); - // 断言,只查到了一条符合条件的 - assertEquals(1, list.size()); - assertPojoEquals(operateLogDO, list.get(0)); - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/mail/MailAccountServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/mail/MailAccountServiceImplTest.java deleted file mode 100644 index 79c8ce9a..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/mail/MailAccountServiceImplTest.java +++ /dev/null @@ -1,179 +0,0 @@ -package com.win.module.system.service.mail; - -import com.win.framework.common.pojo.PageResult; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.controller.admin.mail.vo.account.MailAccountCreateReqVO; -import com.win.module.system.controller.admin.mail.vo.account.MailAccountPageReqVO; -import com.win.module.system.controller.admin.mail.vo.account.MailAccountUpdateReqVO; -import com.win.module.system.dal.dataobject.mail.MailAccountDO; -import com.win.module.system.dal.mysql.mail.MailAccountMapper; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.List; - -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.*; -import static com.win.module.system.enums.ErrorCodeConstants.MAIL_ACCOUNT_NOT_EXISTS; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.when; - -/** - * {@link MailAccountServiceImpl} 的单元测试类 - * - * @author 芋道源码 - */ -@Import(MailAccountServiceImpl.class) -public class MailAccountServiceImplTest extends BaseDbUnitTest { - - @Resource - private MailAccountServiceImpl mailAccountService; - - @Resource - private MailAccountMapper mailAccountMapper; - - @MockBean - private MailTemplateService mailTemplateService; - - @Test - public void testCreateMailAccount_success() { - // 准备参数 - MailAccountCreateReqVO reqVO = randomPojo(MailAccountCreateReqVO.class, o -> o.setMail(randomEmail())); - - // 调用 - Long mailAccountId = mailAccountService.createMailAccount(reqVO); - // 断言 - assertNotNull(mailAccountId); - // 校验记录的属性是否正确 - MailAccountDO mailAccount = mailAccountMapper.selectById(mailAccountId); - assertPojoEquals(reqVO, mailAccount); - } - - @Test - public void testUpdateMailAccount_success() { - // mock 数据 - MailAccountDO dbMailAccount = randomPojo(MailAccountDO.class); - mailAccountMapper.insert(dbMailAccount);// @Sql: 先插入出一条存在的数据 - // 准备参数 - MailAccountUpdateReqVO reqVO = randomPojo(MailAccountUpdateReqVO.class, o -> { - o.setId(dbMailAccount.getId()); // 设置更新的 ID - o.setMail(randomEmail()); - }); - - // 调用 - mailAccountService.updateMailAccount(reqVO); - // 校验是否更新正确 - MailAccountDO mailAccount = mailAccountMapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, mailAccount); - } - - @Test - public void testUpdateMailAccount_notExists() { - // 准备参数 - MailAccountUpdateReqVO reqVO = randomPojo(MailAccountUpdateReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> mailAccountService.updateMailAccount(reqVO), MAIL_ACCOUNT_NOT_EXISTS); - } - - @Test - public void testDeleteMailAccount_success() { - // mock 数据 - MailAccountDO dbMailAccount = randomPojo(MailAccountDO.class); - mailAccountMapper.insert(dbMailAccount);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbMailAccount.getId(); - // mock 方法(无关联模版) - when(mailTemplateService.countByAccountId(eq(id))).thenReturn(0L); - - // 调用 - mailAccountService.deleteMailAccount(id); - // 校验数据不存在了 - assertNull(mailAccountMapper.selectById(id)); - } - - @Test - public void testGetMailAccountFromCache() { - // mock 数据 - MailAccountDO dbMailAccount = randomPojo(MailAccountDO.class); - mailAccountMapper.insert(dbMailAccount);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbMailAccount.getId(); - - // 调用 - MailAccountDO mailAccount = mailAccountService.getMailAccountFromCache(id); - // 断言 - assertPojoEquals(dbMailAccount, mailAccount); - } - - @Test - public void testDeleteMailAccount_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> mailAccountService.deleteMailAccount(id), MAIL_ACCOUNT_NOT_EXISTS); - } - - @Test - public void testGetMailAccountPage() { - // mock 数据 - MailAccountDO dbMailAccount = randomPojo(MailAccountDO.class, o -> { // 等会查询到 - o.setMail("768@qq.com"); - o.setUsername("yunai"); - }); - mailAccountMapper.insert(dbMailAccount); - // 测试 mail 不匹配 - mailAccountMapper.insert(cloneIgnoreId(dbMailAccount, o -> o.setMail("788@qq.com"))); - // 测试 username 不匹配 - mailAccountMapper.insert(cloneIgnoreId(dbMailAccount, o -> o.setUsername("tudou"))); - // 准备参数 - MailAccountPageReqVO reqVO = new MailAccountPageReqVO(); - reqVO.setMail("768"); - reqVO.setUsername("yu"); - - // 调用 - PageResult pageResult = mailAccountService.getMailAccountPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbMailAccount, pageResult.getList().get(0)); - } - - @Test - public void testGetMailAccount() { - // mock 数据 - MailAccountDO dbMailAccount = randomPojo(MailAccountDO.class); - mailAccountMapper.insert(dbMailAccount);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbMailAccount.getId(); - - // 调用 - MailAccountDO mailAccount = mailAccountService.getMailAccount(id); - // 断言 - assertPojoEquals(dbMailAccount, mailAccount); - } - - @Test - public void testGetMailAccountList() { - // mock 数据 - MailAccountDO dbMailAccount01 = randomPojo(MailAccountDO.class); - mailAccountMapper.insert(dbMailAccount01); - MailAccountDO dbMailAccount02 = randomPojo(MailAccountDO.class); - mailAccountMapper.insert(dbMailAccount02); - // 准备参数 - - // 调用 - List list = mailAccountService.getMailAccountList(); - // 断言 - assertEquals(2, list.size()); - assertPojoEquals(dbMailAccount01, list.get(0)); - assertPojoEquals(dbMailAccount02, list.get(1)); - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/mail/MailLogServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/mail/MailLogServiceImplTest.java deleted file mode 100644 index 3c99d171..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/mail/MailLogServiceImplTest.java +++ /dev/null @@ -1,183 +0,0 @@ -package com.win.module.system.service.mail; - -import cn.hutool.core.map.MapUtil; -import com.win.framework.common.enums.UserTypeEnum; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.controller.admin.mail.vo.log.MailLogPageReqVO; -import com.win.module.system.dal.dataobject.mail.MailAccountDO; -import com.win.module.system.dal.dataobject.mail.MailLogDO; -import com.win.module.system.dal.dataobject.mail.MailTemplateDO; -import com.win.module.system.dal.mysql.mail.MailLogMapper; -import com.win.module.system.enums.mail.MailSendStatusEnum; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.Map; - -import static cn.hutool.core.util.RandomUtil.randomEle; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.RandomUtils.*; -import static org.junit.jupiter.api.Assertions.*; - -/** - * {@link MailLogServiceImpl} 的单元测试类 - * - * @author 芋道源码 - */ -@Import(MailLogServiceImpl.class) -public class MailLogServiceImplTest extends BaseDbUnitTest { - - @Resource - private MailLogServiceImpl mailLogService; - - @Resource - private MailLogMapper mailLogMapper; - - @Test - public void testCreateMailLog() { - // 准备参数 - Long userId = randomLongId(); - Integer userType = randomEle(UserTypeEnum.values()).getValue(); - String toMail = randomEmail(); - MailAccountDO account = randomPojo(MailAccountDO.class); - MailTemplateDO template = randomPojo(MailTemplateDO.class); - String templateContent = randomString(); - Map templateParams = randomTemplateParams(); - Boolean isSend = true; - // mock 方法 - - // 调用 - Long logId = mailLogService.createMailLog(userId, userType, toMail, account, template, templateContent, templateParams, isSend); - // 断言 - MailLogDO log = mailLogMapper.selectById(logId); - assertNotNull(log); - assertEquals(MailSendStatusEnum.INIT.getStatus(), log.getSendStatus()); - assertEquals(userId, log.getUserId()); - assertEquals(userType, log.getUserType()); - assertEquals(toMail, log.getToMail()); - assertEquals(account.getId(), log.getAccountId()); - assertEquals(account.getMail(), log.getFromMail()); - assertEquals(template.getId(), log.getTemplateId()); - assertEquals(template.getCode(), log.getTemplateCode()); - assertEquals(template.getNickname(), log.getTemplateNickname()); - assertEquals(template.getTitle(), log.getTemplateTitle()); - assertEquals(templateContent, log.getTemplateContent()); - assertEquals(templateParams, log.getTemplateParams()); - } - - @Test - public void testUpdateMailSendResult_success() { - // mock 数据 - MailLogDO log = randomPojo(MailLogDO.class, o -> { - o.setSendStatus(MailSendStatusEnum.INIT.getStatus()); - o.setSendTime(null).setSendMessageId(null).setSendException(null) - .setTemplateParams(randomTemplateParams()); - }); - mailLogMapper.insert(log); - // 准备参数 - Long logId = log.getId(); - String messageId = randomString(); - - // 调用 - mailLogService.updateMailSendResult(logId, messageId, null); - // 断言 - MailLogDO dbLog = mailLogMapper.selectById(logId); - assertEquals(MailSendStatusEnum.SUCCESS.getStatus(), dbLog.getSendStatus()); - assertNotNull(dbLog.getSendTime()); - assertEquals(messageId, dbLog.getSendMessageId()); - assertNull(dbLog.getSendException()); - } - - @Test - public void testUpdateMailSendResult_exception() { - // mock 数据 - MailLogDO log = randomPojo(MailLogDO.class, o -> { - o.setSendStatus(MailSendStatusEnum.INIT.getStatus()); - o.setSendTime(null).setSendMessageId(null).setSendException(null) - .setTemplateParams(randomTemplateParams()); - }); - mailLogMapper.insert(log); - // 准备参数 - Long logId = log.getId(); - Exception exception = new NullPointerException("测试异常"); - - // 调用 - mailLogService.updateMailSendResult(logId, null, exception); - // 断言 - MailLogDO dbLog = mailLogMapper.selectById(logId); - assertEquals(MailSendStatusEnum.FAILURE.getStatus(), dbLog.getSendStatus()); - assertNotNull(dbLog.getSendTime()); - assertNull(dbLog.getSendMessageId()); - assertEquals("NullPointerException: 测试异常", dbLog.getSendException()); - } - - @Test - public void testGetMailLog() { - // mock 数据 - MailLogDO dbMailLog = randomPojo(MailLogDO.class, o -> o.setTemplateParams(randomTemplateParams())); - mailLogMapper.insert(dbMailLog); - // 准备参数 - Long id = dbMailLog.getId(); - - // 调用 - MailLogDO mailLog = mailLogService.getMailLog(id); - // 断言 - assertPojoEquals(dbMailLog, mailLog); - } - - @Test - public void testGetMailLogPage() { - // mock 数据 - MailLogDO dbMailLog = randomPojo(MailLogDO.class, o -> { // 等会查询到 - o.setUserId(1L); - o.setUserType(UserTypeEnum.ADMIN.getValue()); - o.setToMail("768@qq.com"); - o.setAccountId(10L); - o.setTemplateId(100L); - o.setSendStatus(MailSendStatusEnum.INIT.getStatus()); - o.setSendTime(buildTime(2023, 2, 10)); - o.setTemplateParams(randomTemplateParams()); - }); - mailLogMapper.insert(dbMailLog); - // 测试 userId 不匹配 - mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setUserId(2L))); - // 测试 userType 不匹配 - mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setUserType(UserTypeEnum.MEMBER.getValue()))); - // 测试 toMail 不匹配 - mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setToMail("788@.qq.com"))); - // 测试 accountId 不匹配 - mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setAccountId(11L))); - // 测试 templateId 不匹配 - mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setTemplateId(101L))); - // 测试 sendStatus 不匹配 - mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setSendStatus(MailSendStatusEnum.SUCCESS.getStatus()))); - // 测试 sendTime 不匹配 - mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setSendTime(buildTime(2023, 3, 10)))); - // 准备参数 - MailLogPageReqVO reqVO = new MailLogPageReqVO(); - reqVO.setUserId(1L); - reqVO.setUserType(UserTypeEnum.ADMIN.getValue()); - reqVO.setToMail("768"); - reqVO.setAccountId(10L); - reqVO.setTemplateId(100L); - reqVO.setSendStatus(MailSendStatusEnum.INIT.getStatus()); - reqVO.setSendTime((buildBetweenTime(2023, 2, 1, 2023, 2, 15))); - - // 调用 - PageResult pageResult = mailLogService.getMailLogPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbMailLog, pageResult.getList().get(0)); - } - - private static Map randomTemplateParams() { - return MapUtil.builder().put(randomString(), randomString()) - .put(randomString(), randomString()).build(); - } -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/mail/MailSendServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/mail/MailSendServiceImplTest.java deleted file mode 100644 index a5d22b3f..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/mail/MailSendServiceImplTest.java +++ /dev/null @@ -1,332 +0,0 @@ -package com.win.module.system.service.mail; - -import cn.hutool.core.map.MapUtil; -import cn.hutool.extra.mail.MailAccount; -import cn.hutool.extra.mail.MailUtil; -import com.win.framework.common.enums.CommonStatusEnum; -import com.win.framework.common.enums.UserTypeEnum; -import com.win.framework.test.core.ut.BaseMockitoUnitTest; -import com.win.framework.test.core.util.RandomUtils; -import com.win.module.system.dal.dataobject.mail.MailAccountDO; -import com.win.module.system.dal.dataobject.mail.MailTemplateDO; -import com.win.module.system.dal.dataobject.user.AdminUserDO; -import com.win.module.system.mq.message.mail.MailSendMessage; -import com.win.module.system.mq.producer.mail.MailProducer; -import com.win.module.system.service.member.MemberService; -import com.win.module.system.service.user.AdminUserService; -import org.assertj.core.util.Lists; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.MockedStatic; - -import java.util.HashMap; -import java.util.Map; - -import static cn.hutool.core.util.RandomUtil.randomEle; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.*; -import static com.win.module.system.enums.ErrorCodeConstants.*; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.*; - -public class MailSendServiceImplTest extends BaseMockitoUnitTest { - - @InjectMocks - private MailSendServiceImpl mailSendService; - - @Mock - private AdminUserService adminUserService; - @Mock - private MemberService memberService; - @Mock - private MailAccountService mailAccountService; - @Mock - private MailTemplateService mailTemplateService; - @Mock - private MailLogService mailLogService; - @Mock - private MailProducer mailProducer; - - /** - * 用于快速测试你的邮箱账号是否正常 - */ - @Test - @Disabled - public void testDemo() { - MailAccount mailAccount = new MailAccount() -// .setFrom("奥特曼 ") - .setFrom("ydym_test@163.com") // 邮箱地址 - .setHost("smtp.163.com").setPort(465).setSslEnable(true) // SMTP 服务器 - .setAuth(true).setUser("ydym_test@163.com").setPass("WBZTEINMIFVRYSOE"); // 登录账号密码 - String messageId = MailUtil.send(mailAccount, "7685413@qq.com", "主题", "内容", false); - System.out.println("发送结果:" + messageId); - } - - @Test - public void testSendSingleMailToAdmin() { - // 准备参数 - Long userId = randomLongId(); - String templateCode = RandomUtils.randomString(); - Map templateParams = MapUtil.builder().put("code", "1234") - .put("op", "login").build(); - // mock adminUserService 的方法 - AdminUserDO user = randomPojo(AdminUserDO.class, o -> o.setMobile("15601691300")); - when(adminUserService.getUser(eq(userId))).thenReturn(user); - - // mock MailTemplateService 的方法 - MailTemplateDO template = randomPojo(MailTemplateDO.class, o -> { - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setContent("验证码为{code}, 操作为{op}"); - o.setParams(Lists.newArrayList("code", "op")); - }); - when(mailTemplateService.getMailTemplateByCodeFromCache(eq(templateCode))).thenReturn(template); - String title = RandomUtils.randomString(); - when(mailTemplateService.formatMailTemplateContent(eq(template.getTitle()), eq(templateParams))) - .thenReturn(title); - String content = RandomUtils.randomString(); - when(mailTemplateService.formatMailTemplateContent(eq(template.getContent()), eq(templateParams))) - .thenReturn(content); - // mock MailAccountService 的方法 - MailAccountDO account = randomPojo(MailAccountDO.class); - when(mailAccountService.getMailAccountFromCache(eq(template.getAccountId()))).thenReturn(account); - // mock MailLogService 的方法 - Long mailLogId = randomLongId(); - when(mailLogService.createMailLog(eq(userId), eq(UserTypeEnum.ADMIN.getValue()), eq(user.getEmail()), - eq(account), eq(template), eq(content), eq(templateParams), eq(true))).thenReturn(mailLogId); - - // 调用 - Long resultMailLogId = mailSendService.sendSingleMailToAdmin(null, userId, templateCode, templateParams); - // 断言 - assertEquals(mailLogId, resultMailLogId); - // 断言调用 - verify(mailProducer).sendMailSendMessage(eq(mailLogId), eq(user.getEmail()), - eq(account.getId()), eq(template.getNickname()), eq(title), eq(content)); - } - - @Test - public void testSendSingleMailToMember() { - // 准备参数 - Long userId = randomLongId(); - String templateCode = RandomUtils.randomString(); - Map templateParams = MapUtil.builder().put("code", "1234") - .put("op", "login").build(); - // mock memberService 的方法 - String mail = randomEmail(); - when(memberService.getMemberUserEmail(eq(userId))).thenReturn(mail); - - // mock MailTemplateService 的方法 - MailTemplateDO template = randomPojo(MailTemplateDO.class, o -> { - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setContent("验证码为{code}, 操作为{op}"); - o.setParams(Lists.newArrayList("code", "op")); - }); - when(mailTemplateService.getMailTemplateByCodeFromCache(eq(templateCode))).thenReturn(template); - String title = RandomUtils.randomString(); - when(mailTemplateService.formatMailTemplateContent(eq(template.getTitle()), eq(templateParams))) - .thenReturn(title); - String content = RandomUtils.randomString(); - when(mailTemplateService.formatMailTemplateContent(eq(template.getContent()), eq(templateParams))) - .thenReturn(content); - // mock MailAccountService 的方法 - MailAccountDO account = randomPojo(MailAccountDO.class); - when(mailAccountService.getMailAccountFromCache(eq(template.getAccountId()))).thenReturn(account); - // mock MailLogService 的方法 - Long mailLogId = randomLongId(); - when(mailLogService.createMailLog(eq(userId), eq(UserTypeEnum.MEMBER.getValue()), eq(mail), - eq(account), eq(template), eq(content), eq(templateParams), eq(true))).thenReturn(mailLogId); - - // 调用 - Long resultMailLogId = mailSendService.sendSingleMailToMember(null, userId, templateCode, templateParams); - // 断言 - assertEquals(mailLogId, resultMailLogId); - // 断言调用 - verify(mailProducer).sendMailSendMessage(eq(mailLogId), eq(mail), - eq(account.getId()), eq(template.getNickname()), eq(title), eq(content)); - } - - /** - * 发送成功,当短信模板开启时 - */ - @Test - public void testSendSingleMail_successWhenMailTemplateEnable() { - // 准备参数 - String mail = randomEmail(); - Long userId = randomLongId(); - Integer userType = randomEle(UserTypeEnum.values()).getValue(); - String templateCode = RandomUtils.randomString(); - Map templateParams = MapUtil.builder().put("code", "1234") - .put("op", "login").build(); - // mock MailTemplateService 的方法 - MailTemplateDO template = randomPojo(MailTemplateDO.class, o -> { - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setContent("验证码为{code}, 操作为{op}"); - o.setParams(Lists.newArrayList("code", "op")); - }); - when(mailTemplateService.getMailTemplateByCodeFromCache(eq(templateCode))).thenReturn(template); - String title = RandomUtils.randomString(); - when(mailTemplateService.formatMailTemplateContent(eq(template.getTitle()), eq(templateParams))) - .thenReturn(title); - String content = RandomUtils.randomString(); - when(mailTemplateService.formatMailTemplateContent(eq(template.getContent()), eq(templateParams))) - .thenReturn(content); - // mock MailAccountService 的方法 - MailAccountDO account = randomPojo(MailAccountDO.class); - when(mailAccountService.getMailAccountFromCache(eq(template.getAccountId()))).thenReturn(account); - // mock MailLogService 的方法 - Long mailLogId = randomLongId(); - when(mailLogService.createMailLog(eq(userId), eq(userType), eq(mail), - eq(account), eq(template), eq(content), eq(templateParams), eq(true))).thenReturn(mailLogId); - - // 调用 - Long resultMailLogId = mailSendService.sendSingleMail(mail, userId, userType, templateCode, templateParams); - // 断言 - assertEquals(mailLogId, resultMailLogId); - // 断言调用 - verify(mailProducer).sendMailSendMessage(eq(mailLogId), eq(mail), - eq(account.getId()), eq(template.getNickname()), eq(title), eq(content)); - } - - /** - * 发送成功,当短信模板关闭时 - */ - @Test - public void testSendSingleMail_successWhenSmsTemplateDisable() { - // 准备参数 - String mail = randomEmail(); - Long userId = randomLongId(); - Integer userType = randomEle(UserTypeEnum.values()).getValue(); - String templateCode = RandomUtils.randomString(); - Map templateParams = MapUtil.builder().put("code", "1234") - .put("op", "login").build(); - // mock MailTemplateService 的方法 - MailTemplateDO template = randomPojo(MailTemplateDO.class, o -> { - o.setStatus(CommonStatusEnum.DISABLE.getStatus()); - o.setContent("验证码为{code}, 操作为{op}"); - o.setParams(Lists.newArrayList("code", "op")); - }); - when(mailTemplateService.getMailTemplateByCodeFromCache(eq(templateCode))).thenReturn(template); - String title = RandomUtils.randomString(); - when(mailTemplateService.formatMailTemplateContent(eq(template.getTitle()), eq(templateParams))) - .thenReturn(title); - String content = RandomUtils.randomString(); - when(mailTemplateService.formatMailTemplateContent(eq(template.getContent()), eq(templateParams))) - .thenReturn(content); - // mock MailAccountService 的方法 - MailAccountDO account = randomPojo(MailAccountDO.class); - when(mailAccountService.getMailAccountFromCache(eq(template.getAccountId()))).thenReturn(account); - // mock MailLogService 的方法 - Long mailLogId = randomLongId(); - when(mailLogService.createMailLog(eq(userId), eq(userType), eq(mail), - eq(account), eq(template), eq(content), eq(templateParams), eq(false))).thenReturn(mailLogId); - - // 调用 - Long resultMailLogId = mailSendService.sendSingleMail(mail, userId, userType, templateCode, templateParams); - // 断言 - assertEquals(mailLogId, resultMailLogId); - // 断言调用 - verify(mailProducer, times(0)).sendMailSendMessage(anyLong(), anyString(), - anyLong(), anyString(), anyString(), anyString()); - } - - @Test - public void testValidateMailTemplateValid_notExists() { - // 准备参数 - String templateCode = RandomUtils.randomString(); - // mock 方法 - - // 调用,并断言异常 - assertServiceException(() -> mailSendService.validateMailTemplate(templateCode), - MAIL_TEMPLATE_NOT_EXISTS); - } - - @Test - public void testValidateTemplateParams_paramMiss() { - // 准备参数 - MailTemplateDO template = randomPojo(MailTemplateDO.class, - o -> o.setParams(Lists.newArrayList("code"))); - Map templateParams = new HashMap<>(); - // mock 方法 - - // 调用,并断言异常 - assertServiceException(() -> mailSendService.validateTemplateParams(template, templateParams), - MAIL_SEND_TEMPLATE_PARAM_MISS, "code"); - } - - @Test - public void testValidateMail_notExists() { - // 准备参数 - // mock 方法 - - // 调用,并断言异常 - assertServiceException(() -> mailSendService.validateMail(null), - MAIL_SEND_MAIL_NOT_EXISTS); - } - - @Test - public void testDoSendMail_success() { - try (MockedStatic mailUtilMock = mockStatic(MailUtil.class)) { - // 准备参数 - MailSendMessage message = randomPojo(MailSendMessage.class, o -> o.setNickname("芋艿")); - // mock 方法(获得邮箱账号) - MailAccountDO account = randomPojo(MailAccountDO.class, o -> o.setMail("7685@qq.com")); - when(mailAccountService.getMailAccountFromCache(eq(message.getAccountId()))) - .thenReturn(account); - - // mock 方法(发送邮件) - String messageId = randomString(); - mailUtilMock.when(() -> MailUtil.send( - argThat(mailAccount -> { - assertEquals("芋艿 <7685@qq.com>", mailAccount.getFrom()); - assertTrue(mailAccount.isAuth()); - assertEquals(account.getUsername(), mailAccount.getUser()); - assertEquals(account.getPassword(), mailAccount.getPass()); - assertEquals(account.getHost(), mailAccount.getHost()); - assertEquals(account.getPort(), mailAccount.getPort()); - assertEquals(account.getSslEnable(), mailAccount.isSslEnable()); - return true; - }), eq(message.getMail()), eq(message.getTitle()), eq(message.getContent()), eq(true))) - .thenReturn(messageId); - - // 调用 - mailSendService.doSendMail(message); - // 断言 - verify(mailLogService).updateMailSendResult(eq(message.getLogId()), eq(messageId), isNull()); - } - } - - @Test - public void testDoSendMail_exception() { - try (MockedStatic mailUtilMock = mockStatic(MailUtil.class)) { - // 准备参数 - MailSendMessage message = randomPojo(MailSendMessage.class, o -> o.setNickname("芋艿")); - // mock 方法(获得邮箱账号) - MailAccountDO account = randomPojo(MailAccountDO.class, o -> o.setMail("7685@qq.com")); - when(mailAccountService.getMailAccountFromCache(eq(message.getAccountId()))) - .thenReturn(account); - - // mock 方法(发送邮件) - Exception e = new NullPointerException("啦啦啦"); - mailUtilMock.when(() -> MailUtil.send(argThat(mailAccount -> { - assertEquals("芋艿 <7685@qq.com>", mailAccount.getFrom()); - assertTrue(mailAccount.isAuth()); - assertEquals(account.getUsername(), mailAccount.getUser()); - assertEquals(account.getPassword(), mailAccount.getPass()); - assertEquals(account.getHost(), mailAccount.getHost()); - assertEquals(account.getPort(), mailAccount.getPort()); - assertEquals(account.getSslEnable(), mailAccount.isSslEnable()); - return true; - }), eq(message.getMail()), eq(message.getTitle()), eq(message.getContent()), eq(true))) - .thenThrow(e); - - // 调用 - mailSendService.doSendMail(message); - // 断言 - verify(mailLogService).updateMailSendResult(eq(message.getLogId()), isNull(), same(e)); - } - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/mail/MailTemplateServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/mail/MailTemplateServiceImplTest.java deleted file mode 100644 index e818610a..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/mail/MailTemplateServiceImplTest.java +++ /dev/null @@ -1,215 +0,0 @@ -package com.win.module.system.service.mail; - -import com.win.framework.common.enums.CommonStatusEnum; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.controller.admin.mail.vo.template.MailTemplateCreateReqVO; -import com.win.module.system.controller.admin.mail.vo.template.MailTemplatePageReqVO; -import com.win.module.system.controller.admin.mail.vo.template.MailTemplateUpdateReqVO; -import com.win.module.system.dal.dataobject.mail.MailTemplateDO; -import com.win.module.system.dal.mysql.mail.MailTemplateMapper; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.randomLongId; -import static com.win.framework.test.core.util.RandomUtils.randomPojo; -import static com.win.module.system.enums.ErrorCodeConstants.MAIL_TEMPLATE_NOT_EXISTS; -import static org.junit.jupiter.api.Assertions.*; - -/** - * {@link MailTemplateServiceImpl} 的单元测试类 - * - * @author 芋道源码 - */ -@Import(MailTemplateServiceImpl.class) -public class MailTemplateServiceImplTest extends BaseDbUnitTest { - - @Resource - private MailTemplateServiceImpl mailTemplateService; - - @Resource - private MailTemplateMapper mailTemplateMapper; - - @Test - public void testCreateMailTemplate_success() { - // 准备参数 - MailTemplateCreateReqVO reqVO = randomPojo(MailTemplateCreateReqVO.class); - - // 调用 - Long mailTemplateId = mailTemplateService.createMailTemplate(reqVO); - // 断言 - assertNotNull(mailTemplateId); - // 校验记录的属性是否正确 - MailTemplateDO mailTemplate = mailTemplateMapper.selectById(mailTemplateId); - assertPojoEquals(reqVO, mailTemplate); - } - - @Test - public void testUpdateMailTemplate_success() { - // mock 数据 - MailTemplateDO dbMailTemplate = randomPojo(MailTemplateDO.class); - mailTemplateMapper.insert(dbMailTemplate);// @Sql: 先插入出一条存在的数据 - // 准备参数 - MailTemplateUpdateReqVO reqVO = randomPojo(MailTemplateUpdateReqVO.class, o -> { - o.setId(dbMailTemplate.getId()); // 设置更新的 ID - }); - - // 调用 - mailTemplateService.updateMailTemplate(reqVO); - // 校验是否更新正确 - MailTemplateDO mailTemplate = mailTemplateMapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, mailTemplate); - } - - @Test - public void testUpdateMailTemplate_notExists() { - // 准备参数 - MailTemplateUpdateReqVO reqVO = randomPojo(MailTemplateUpdateReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> mailTemplateService.updateMailTemplate(reqVO), MAIL_TEMPLATE_NOT_EXISTS); - } - - @Test - public void testDeleteMailTemplate_success() { - // mock 数据 - MailTemplateDO dbMailTemplate = randomPojo(MailTemplateDO.class); - mailTemplateMapper.insert(dbMailTemplate);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbMailTemplate.getId(); - - // 调用 - mailTemplateService.deleteMailTemplate(id); - // 校验数据不存在了 - assertNull(mailTemplateMapper.selectById(id)); - } - - @Test - public void testDeleteMailTemplate_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> mailTemplateService.deleteMailTemplate(id), MAIL_TEMPLATE_NOT_EXISTS); - } - - @Test - public void testGetMailTemplatePage() { - // mock 数据 - MailTemplateDO dbMailTemplate = randomPojo(MailTemplateDO.class, o -> { // 等会查询到 - o.setName("源码"); - o.setCode("test_01"); - o.setAccountId(1L); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setCreateTime(buildTime(2023, 2, 3)); - }); - mailTemplateMapper.insert(dbMailTemplate); - // 测试 name 不匹配 - mailTemplateMapper.insert(cloneIgnoreId(dbMailTemplate, o -> o.setName("芋道"))); - // 测试 code 不匹配 - mailTemplateMapper.insert(cloneIgnoreId(dbMailTemplate, o -> o.setCode("test_02"))); - // 测试 accountId 不匹配 - mailTemplateMapper.insert(cloneIgnoreId(dbMailTemplate, o -> o.setAccountId(2L))); - // 测试 status 不匹配 - mailTemplateMapper.insert(cloneIgnoreId(dbMailTemplate, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 测试 createTime 不匹配 - mailTemplateMapper.insert(cloneIgnoreId(dbMailTemplate, o -> o.setCreateTime(buildTime(2023, 1, 5)))); - // 准备参数 - MailTemplatePageReqVO reqVO = new MailTemplatePageReqVO(); - reqVO.setName("源"); - reqVO.setCode("est_01"); - reqVO.setAccountId(1L); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 5)); - - // 调用 - PageResult pageResult = mailTemplateService.getMailTemplatePage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbMailTemplate, pageResult.getList().get(0)); - } - - @Test - public void testGetMailTemplateList() { - // mock 数据 - MailTemplateDO dbMailTemplate01 = randomPojo(MailTemplateDO.class); - mailTemplateMapper.insert(dbMailTemplate01); - MailTemplateDO dbMailTemplate02 = randomPojo(MailTemplateDO.class); - mailTemplateMapper.insert(dbMailTemplate02); - - // 调用 - List list = mailTemplateService.getMailTemplateList(); - // 断言 - assertEquals(2, list.size()); - assertEquals(dbMailTemplate01, list.get(0)); - assertEquals(dbMailTemplate02, list.get(1)); - } - - @Test - public void testGetMailTemplate() { - // mock 数据 - MailTemplateDO dbMailTemplate = randomPojo(MailTemplateDO.class); - mailTemplateMapper.insert(dbMailTemplate); - // 准备参数 - Long id = dbMailTemplate.getId(); - - // 调用 - MailTemplateDO mailTemplate = mailTemplateService.getMailTemplate(id); - // 断言 - assertPojoEquals(dbMailTemplate, mailTemplate); - } - - @Test - public void testGetMailTemplateByCodeFromCache() { - // mock 数据 - MailTemplateDO dbMailTemplate = randomPojo(MailTemplateDO.class); - mailTemplateMapper.insert(dbMailTemplate); - // 准备参数 - String code = dbMailTemplate.getCode(); - - // 调用 - MailTemplateDO mailTemplate = mailTemplateService.getMailTemplateByCodeFromCache(code); - // 断言 - assertPojoEquals(dbMailTemplate, mailTemplate); - } - - @Test - public void testFormatMailTemplateContent() { - // 准备参数 - Map params = new HashMap<>(); - params.put("name", "小红"); - params.put("what", "饭"); - - // 调用,并断言 - assertEquals("小红,你好,饭吃了吗?", - mailTemplateService.formatMailTemplateContent("{name},你好,{what}吃了吗?", params)); - } - - @Test - public void testCountByAccountId() { - // mock 数据 - MailTemplateDO dbMailTemplate = randomPojo(MailTemplateDO.class); - mailTemplateMapper.insert(dbMailTemplate); - // 测试 accountId 不匹配 - mailTemplateMapper.insert(cloneIgnoreId(dbMailTemplate, o -> o.setAccountId(2L))); - // 准备参数 - Long accountId = dbMailTemplate.getAccountId(); - - // 调用 - long count = mailTemplateService.countByAccountId(accountId); - // 断言 - assertEquals(1, count); - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/notice/NoticeServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/notice/NoticeServiceImplTest.java deleted file mode 100644 index 852dee54..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/notice/NoticeServiceImplTest.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.win.module.system.service.notice; - -import com.win.framework.common.enums.CommonStatusEnum; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.controller.admin.notice.vo.NoticeCreateReqVO; -import com.win.module.system.controller.admin.notice.vo.NoticePageReqVO; -import com.win.module.system.controller.admin.notice.vo.NoticeUpdateReqVO; -import com.win.module.system.dal.dataobject.notice.NoticeDO; -import com.win.module.system.dal.mysql.notice.NoticeMapper; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; - -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.randomLongId; -import static com.win.framework.test.core.util.RandomUtils.randomPojo; -import static com.win.module.system.enums.ErrorCodeConstants.NOTICE_NOT_FOUND; -import static org.junit.jupiter.api.Assertions.*; - -@Import(NoticeServiceImpl.class) -class NoticeServiceImplTest extends BaseDbUnitTest { - - @Resource - private NoticeServiceImpl noticeService; - - @Resource - private NoticeMapper noticeMapper; - - @Test - public void testGetNoticePage_success() { - // 插入前置数据 - NoticeDO dbNotice = randomPojo(NoticeDO.class, o -> { - o.setTitle("尼古拉斯赵四来啦!"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - }); - noticeMapper.insert(dbNotice); - // 测试 title 不匹配 - noticeMapper.insert(cloneIgnoreId(dbNotice, o -> o.setTitle("尼古拉斯凯奇也来啦!"))); - // 测试 status 不匹配 - noticeMapper.insert(cloneIgnoreId(dbNotice, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 准备参数 - NoticePageReqVO reqVO = new NoticePageReqVO(); - reqVO.setTitle("尼古拉斯赵四来啦!"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - - // 调用 - PageResult pageResult = noticeService.getNoticePage(reqVO); - // 验证查询结果经过筛选 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbNotice, pageResult.getList().get(0)); - } - - @Test - public void testGetNotice_success() { - // 插入前置数据 - NoticeDO dbNotice = randomPojo(NoticeDO.class); - noticeMapper.insert(dbNotice); - - // 查询 - NoticeDO notice = noticeService.getNotice(dbNotice.getId()); - - // 验证插入与读取对象是否一致 - assertNotNull(notice); - assertPojoEquals(dbNotice, notice); - } - - @Test - public void testCreateNotice_success() { - // 准备参数 - NoticeCreateReqVO reqVO = randomPojo(NoticeCreateReqVO.class); - - // 调用 - Long noticeId = noticeService.createNotice(reqVO); - // 校验插入属性是否正确 - assertNotNull(noticeId); - NoticeDO notice = noticeMapper.selectById(noticeId); - assertPojoEquals(reqVO, notice); - } - - @Test - public void testUpdateNotice_success() { - // 插入前置数据 - NoticeDO dbNoticeDO = randomPojo(NoticeDO.class); - noticeMapper.insert(dbNoticeDO); - - // 准备更新参数 - NoticeUpdateReqVO reqVO = randomPojo(NoticeUpdateReqVO.class, o -> o.setId(dbNoticeDO.getId())); - - // 更新 - noticeService.updateNotice(reqVO); - // 检验是否更新成功 - NoticeDO notice = noticeMapper.selectById(reqVO.getId()); - assertPojoEquals(reqVO, notice); - } - - @Test - public void testDeleteNotice_success() { - // 插入前置数据 - NoticeDO dbNotice = randomPojo(NoticeDO.class); - noticeMapper.insert(dbNotice); - - // 删除 - noticeService.deleteNotice(dbNotice.getId()); - - // 检查是否删除成功 - assertNull(noticeMapper.selectById(dbNotice.getId())); - } - - @Test - public void testValidateNoticeExists_success() { - // 插入前置数据 - NoticeDO dbNotice = randomPojo(NoticeDO.class); - noticeMapper.insert(dbNotice); - - // 成功调用 - noticeService.validateNoticeExists(dbNotice.getId()); - } - - @Test - public void testValidateNoticeExists_noExists() { - assertServiceException(() -> - noticeService.validateNoticeExists(randomLongId()), NOTICE_NOT_FOUND); - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/notify/NotifyMessageServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/notify/NotifyMessageServiceImplTest.java deleted file mode 100644 index 6975463a..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/notify/NotifyMessageServiceImplTest.java +++ /dev/null @@ -1,280 +0,0 @@ -package com.win.module.system.service.notify; - -import cn.hutool.core.map.MapUtil; -import com.win.framework.common.enums.UserTypeEnum; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.mybatis.core.enums.SqlConstants; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.controller.admin.notify.vo.message.NotifyMessageMyPageReqVO; -import com.win.module.system.controller.admin.notify.vo.message.NotifyMessagePageReqVO; -import com.win.module.system.dal.dataobject.notify.NotifyMessageDO; -import com.win.module.system.dal.dataobject.notify.NotifyTemplateDO; -import com.win.module.system.dal.mysql.notify.NotifyMessageMapper; -import com.baomidou.mybatisplus.annotation.DbType; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; -import java.util.Map; - -import static cn.hutool.core.util.RandomUtil.randomEle; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.RandomUtils.*; -import static org.junit.jupiter.api.Assertions.*; - -/** -* {@link NotifyMessageServiceImpl} 的单元测试类 -* -* @author 芋道源码 -*/ -@Import(NotifyMessageServiceImpl.class) -public class NotifyMessageServiceImplTest extends BaseDbUnitTest { - - @Resource - private NotifyMessageServiceImpl notifyMessageService; - - @Resource - private NotifyMessageMapper notifyMessageMapper; - - @Test - public void testCreateNotifyMessage_success() { - // 准备参数 - Long userId = randomLongId(); - Integer userType = randomEle(UserTypeEnum.values()).getValue(); - NotifyTemplateDO template = randomPojo(NotifyTemplateDO.class); - String templateContent = randomString(); - Map templateParams = randomTemplateParams(); - // mock 方法 - - // 调用 - Long messageId = notifyMessageService.createNotifyMessage(userId, userType, - template, templateContent, templateParams); - // 断言 - NotifyMessageDO message = notifyMessageMapper.selectById(messageId); - assertNotNull(message); - assertEquals(userId, message.getUserId()); - assertEquals(userType, message.getUserType()); - assertEquals(template.getId(), message.getTemplateId()); - assertEquals(template.getCode(), message.getTemplateCode()); - assertEquals(template.getType(), message.getTemplateType()); - assertEquals(template.getNickname(), message.getTemplateNickname()); - assertEquals(templateContent, message.getTemplateContent()); - assertEquals(templateParams, message.getTemplateParams()); - assertEquals(false, message.getReadStatus()); - assertNull(message.getReadTime()); - } - - @Test - public void testGetNotifyMessagePage() { - // mock 数据 - NotifyMessageDO dbNotifyMessage = randomPojo(NotifyMessageDO.class, o -> { // 等会查询到 - o.setUserId(1L); - o.setUserType(UserTypeEnum.ADMIN.getValue()); - o.setTemplateCode("test_01"); - o.setTemplateType(10); - o.setCreateTime(buildTime(2022, 1, 2)); - o.setTemplateParams(randomTemplateParams()); - }); - notifyMessageMapper.insert(dbNotifyMessage); - // 测试 userId 不匹配 - notifyMessageMapper.insert(cloneIgnoreId(dbNotifyMessage, o -> o.setUserId(2L))); - // 测试 userType 不匹配 - notifyMessageMapper.insert(cloneIgnoreId(dbNotifyMessage, o -> o.setUserType(UserTypeEnum.MEMBER.getValue()))); - // 测试 templateCode 不匹配 - notifyMessageMapper.insert(cloneIgnoreId(dbNotifyMessage, o -> o.setTemplateCode("test_11"))); - // 测试 templateType 不匹配 - notifyMessageMapper.insert(cloneIgnoreId(dbNotifyMessage, o -> o.setTemplateType(20))); - // 测试 createTime 不匹配 - notifyMessageMapper.insert(cloneIgnoreId(dbNotifyMessage, o -> o.setCreateTime(buildTime(2022, 2, 1)))); - // 准备参数 - NotifyMessagePageReqVO reqVO = new NotifyMessagePageReqVO(); - reqVO.setUserId(1L); - reqVO.setUserType(UserTypeEnum.ADMIN.getValue()); - reqVO.setTemplateCode("est_01"); - reqVO.setTemplateType(10); - reqVO.setCreateTime(buildBetweenTime(2022, 1, 1, 2022, 1, 10)); - - // 调用 - PageResult pageResult = notifyMessageService.getNotifyMessagePage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbNotifyMessage, pageResult.getList().get(0)); - } - - @Test - public void testGetNotifyMessage() { - // mock 数据 - NotifyMessageDO dbNotifyMessage = randomPojo(NotifyMessageDO.class, - o -> o.setTemplateParams(randomTemplateParams())); - notifyMessageMapper.insert(dbNotifyMessage); - // 准备参数 - Long id = dbNotifyMessage.getId(); - - // 调用 - NotifyMessageDO notifyMessage = notifyMessageService.getNotifyMessage(id); - assertPojoEquals(dbNotifyMessage, notifyMessage); - } - - @Test - public void testGetMyNotifyMessagePage() { - // mock 数据 - NotifyMessageDO dbNotifyMessage = randomPojo(NotifyMessageDO.class, o -> { // 等会查询到 - o.setUserId(1L); - o.setUserType(UserTypeEnum.ADMIN.getValue()); - o.setReadStatus(true); - o.setCreateTime(buildTime(2022, 1, 2)); - o.setTemplateParams(randomTemplateParams()); - }); - notifyMessageMapper.insert(dbNotifyMessage); - // 测试 userId 不匹配 - notifyMessageMapper.insert(cloneIgnoreId(dbNotifyMessage, o -> o.setUserId(2L))); - // 测试 userType 不匹配 - notifyMessageMapper.insert(cloneIgnoreId(dbNotifyMessage, o -> o.setUserType(UserTypeEnum.MEMBER.getValue()))); - // 测试 readStatus 不匹配 - notifyMessageMapper.insert(cloneIgnoreId(dbNotifyMessage, o -> o.setReadStatus(false))); - // 测试 createTime 不匹配 - notifyMessageMapper.insert(cloneIgnoreId(dbNotifyMessage, o -> o.setCreateTime(buildTime(2022, 2, 1)))); - // 准备参数 - Long userId = 1L; - Integer userType = UserTypeEnum.ADMIN.getValue(); - NotifyMessageMyPageReqVO reqVO = new NotifyMessageMyPageReqVO(); - reqVO.setReadStatus(true); - reqVO.setCreateTime(buildBetweenTime(2022, 1, 1, 2022, 1, 10)); - - // 调用 - PageResult pageResult = notifyMessageService.getMyMyNotifyMessagePage(reqVO, userId, userType); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbNotifyMessage, pageResult.getList().get(0)); - } - - @Test - public void testGetUnreadNotifyMessageList() { - SqlConstants.init(DbType.MYSQL); - // mock 数据 - NotifyMessageDO dbNotifyMessage = randomPojo(NotifyMessageDO.class, o -> { // 等会查询到 - o.setUserId(1L); - o.setUserType(UserTypeEnum.ADMIN.getValue()); - o.setReadStatus(false); - o.setTemplateParams(randomTemplateParams()); - }); - notifyMessageMapper.insert(dbNotifyMessage); - // 测试 userId 不匹配 - notifyMessageMapper.insert(cloneIgnoreId(dbNotifyMessage, o -> o.setUserId(2L))); - // 测试 userType 不匹配 - notifyMessageMapper.insert(cloneIgnoreId(dbNotifyMessage, o -> o.setUserType(UserTypeEnum.MEMBER.getValue()))); - // 测试 readStatus 不匹配 - notifyMessageMapper.insert(cloneIgnoreId(dbNotifyMessage, o -> o.setReadStatus(true))); - // 准备参数 - Long userId = 1L; - Integer userType = UserTypeEnum.ADMIN.getValue(); - Integer size = 10; - - // 调用 - List list = notifyMessageService.getUnreadNotifyMessageList(userId, userType, size); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(dbNotifyMessage, list.get(0)); - } - - @Test - public void testGetUnreadNotifyMessageCount() { - SqlConstants.init(DbType.MYSQL); - // mock 数据 - NotifyMessageDO dbNotifyMessage = randomPojo(NotifyMessageDO.class, o -> { // 等会查询到 - o.setUserId(1L); - o.setUserType(UserTypeEnum.ADMIN.getValue()); - o.setReadStatus(false); - o.setTemplateParams(randomTemplateParams()); - }); - notifyMessageMapper.insert(dbNotifyMessage); - // 测试 userId 不匹配 - notifyMessageMapper.insert(cloneIgnoreId(dbNotifyMessage, o -> o.setUserId(2L))); - // 测试 userType 不匹配 - notifyMessageMapper.insert(cloneIgnoreId(dbNotifyMessage, o -> o.setUserType(UserTypeEnum.MEMBER.getValue()))); - // 测试 readStatus 不匹配 - notifyMessageMapper.insert(cloneIgnoreId(dbNotifyMessage, o -> o.setReadStatus(true))); - // 准备参数 - Long userId = 1L; - Integer userType = UserTypeEnum.ADMIN.getValue(); - - // 调用,并断言 - assertEquals(1, notifyMessageService.getUnreadNotifyMessageCount(userId, userType)); - } - - @Test - public void testUpdateNotifyMessageRead() { - // mock 数据 - NotifyMessageDO dbNotifyMessage = randomPojo(NotifyMessageDO.class, o -> { // 等会查询到 - o.setUserId(1L); - o.setUserType(UserTypeEnum.ADMIN.getValue()); - o.setReadStatus(false); - o.setReadTime(null); - o.setTemplateParams(randomTemplateParams()); - }); - notifyMessageMapper.insert(dbNotifyMessage); - // 测试 userId 不匹配 - notifyMessageMapper.insert(cloneIgnoreId(dbNotifyMessage, o -> o.setUserId(2L))); - // 测试 userType 不匹配 - notifyMessageMapper.insert(cloneIgnoreId(dbNotifyMessage, o -> o.setUserType(UserTypeEnum.MEMBER.getValue()))); - // 测试 readStatus 不匹配 - notifyMessageMapper.insert(cloneIgnoreId(dbNotifyMessage, o -> o.setReadStatus(true))); - // 准备参数 - Collection ids = Arrays.asList(dbNotifyMessage.getId(), dbNotifyMessage.getId() + 1, - dbNotifyMessage.getId() + 2, dbNotifyMessage.getId() + 3); - Long userId = 1L; - Integer userType = UserTypeEnum.ADMIN.getValue(); - - // 调用 - int updateCount = notifyMessageService.updateNotifyMessageRead(ids, userId, userType); - // 断言 - assertEquals(1, updateCount); - NotifyMessageDO notifyMessage = notifyMessageMapper.selectById(dbNotifyMessage.getId()); - assertTrue(notifyMessage.getReadStatus()); - assertNotNull(notifyMessage.getReadTime()); - } - - @Test - public void testUpdateAllNotifyMessageRead() { - // mock 数据 - NotifyMessageDO dbNotifyMessage = randomPojo(NotifyMessageDO.class, o -> { // 等会查询到 - o.setUserId(1L); - o.setUserType(UserTypeEnum.ADMIN.getValue()); - o.setReadStatus(false); - o.setReadTime(null); - o.setTemplateParams(randomTemplateParams()); - }); - notifyMessageMapper.insert(dbNotifyMessage); - // 测试 userId 不匹配 - notifyMessageMapper.insert(cloneIgnoreId(dbNotifyMessage, o -> o.setUserId(2L))); - // 测试 userType 不匹配 - notifyMessageMapper.insert(cloneIgnoreId(dbNotifyMessage, o -> o.setUserType(UserTypeEnum.MEMBER.getValue()))); - // 测试 readStatus 不匹配 - notifyMessageMapper.insert(cloneIgnoreId(dbNotifyMessage, o -> o.setReadStatus(true))); - // 准备参数 - Long userId = 1L; - Integer userType = UserTypeEnum.ADMIN.getValue(); - - // 调用 - int updateCount = notifyMessageService.updateAllNotifyMessageRead(userId, userType); - // 断言 - assertEquals(1, updateCount); - NotifyMessageDO notifyMessage = notifyMessageMapper.selectById(dbNotifyMessage.getId()); - assertTrue(notifyMessage.getReadStatus()); - assertNotNull(notifyMessage.getReadTime()); - } - - private static Map randomTemplateParams() { - return MapUtil.builder().put(randomString(), randomString()) - .put(randomString(), randomString()).build(); - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/notify/NotifySendServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/notify/NotifySendServiceImplTest.java deleted file mode 100644 index 613af564..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/notify/NotifySendServiceImplTest.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.win.module.system.service.notify; - -import cn.hutool.core.map.MapUtil; -import com.win.framework.common.enums.CommonStatusEnum; -import com.win.framework.common.enums.UserTypeEnum; -import com.win.framework.test.core.ut.BaseMockitoUnitTest; -import com.win.module.system.dal.dataobject.notify.NotifyTemplateDO; -import org.assertj.core.util.Lists; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; - -import java.util.HashMap; -import java.util.Map; - -import static cn.hutool.core.util.RandomUtil.randomEle; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.*; -import static com.win.module.system.enums.ErrorCodeConstants.NOTICE_NOT_FOUND; -import static com.win.module.system.enums.ErrorCodeConstants.NOTIFY_SEND_TEMPLATE_PARAM_MISS; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.*; - -class NotifySendServiceImplTest extends BaseMockitoUnitTest { - - @InjectMocks - private NotifySendServiceImpl notifySendService; - - @Mock - private NotifyTemplateService notifyTemplateService; - @Mock - private NotifyMessageService notifyMessageService; - - @Test - public void testSendSingleNotifyToAdmin() { - // 准备参数 - Long userId = randomLongId(); - String templateCode = randomString(); - Map templateParams = MapUtil.builder().put("code", "1234") - .put("op", "login").build(); - // mock NotifyTemplateService 的方法 - NotifyTemplateDO template = randomPojo(NotifyTemplateDO.class, o -> { - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setContent("验证码为{code}, 操作为{op}"); - o.setParams(Lists.newArrayList("code", "op")); - }); - when(notifyTemplateService.getNotifyTemplateByCodeFromCache(eq(templateCode))).thenReturn(template); - String content = randomString(); - when(notifyTemplateService.formatNotifyTemplateContent(eq(template.getContent()), eq(templateParams))) - .thenReturn(content); - // mock NotifyMessageService 的方法 - Long messageId = randomLongId(); - when(notifyMessageService.createNotifyMessage(eq(userId), eq(UserTypeEnum.ADMIN.getValue()), - eq(template), eq(content), eq(templateParams))).thenReturn(messageId); - - // 调用 - Long resultMessageId = notifySendService.sendSingleNotifyToAdmin(userId, templateCode, templateParams); - // 断言 - assertEquals(messageId, resultMessageId); - } - - @Test - public void testSendSingleNotifyToMember() { - // 准备参数 - Long userId = randomLongId(); - String templateCode = randomString(); - Map templateParams = MapUtil.builder().put("code", "1234") - .put("op", "login").build(); - // mock NotifyTemplateService 的方法 - NotifyTemplateDO template = randomPojo(NotifyTemplateDO.class, o -> { - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setContent("验证码为{code}, 操作为{op}"); - o.setParams(Lists.newArrayList("code", "op")); - }); - when(notifyTemplateService.getNotifyTemplateByCodeFromCache(eq(templateCode))).thenReturn(template); - String content = randomString(); - when(notifyTemplateService.formatNotifyTemplateContent(eq(template.getContent()), eq(templateParams))) - .thenReturn(content); - // mock NotifyMessageService 的方法 - Long messageId = randomLongId(); - when(notifyMessageService.createNotifyMessage(eq(userId), eq(UserTypeEnum.MEMBER.getValue()), - eq(template), eq(content), eq(templateParams))).thenReturn(messageId); - - // 调用 - Long resultMessageId = notifySendService.sendSingleNotifyToMember(userId, templateCode, templateParams); - // 断言 - assertEquals(messageId, resultMessageId); - } - - /** - * 发送成功,当短信模板开启时 - */ - @Test - public void testSendSingleNotify_successWhenMailTemplateEnable() { - // 准备参数 - Long userId = randomLongId(); - Integer userType = randomEle(UserTypeEnum.values()).getValue(); - String templateCode = randomString(); - Map templateParams = MapUtil.builder().put("code", "1234") - .put("op", "login").build(); - // mock NotifyTemplateService 的方法 - NotifyTemplateDO template = randomPojo(NotifyTemplateDO.class, o -> { - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setContent("验证码为{code}, 操作为{op}"); - o.setParams(Lists.newArrayList("code", "op")); - }); - when(notifyTemplateService.getNotifyTemplateByCodeFromCache(eq(templateCode))).thenReturn(template); - String content = randomString(); - when(notifyTemplateService.formatNotifyTemplateContent(eq(template.getContent()), eq(templateParams))) - .thenReturn(content); - // mock NotifyMessageService 的方法 - Long messageId = randomLongId(); - when(notifyMessageService.createNotifyMessage(eq(userId), eq(userType), - eq(template), eq(content), eq(templateParams))).thenReturn(messageId); - - // 调用 - Long resultMessageId = notifySendService.sendSingleNotify(userId, userType, templateCode, templateParams); - // 断言 - assertEquals(messageId, resultMessageId); - } - - /** - * 发送成功,当短信模板关闭时 - */ - @Test - public void testSendSingleMail_successWhenSmsTemplateDisable() { - // 准备参数 - Long userId = randomLongId(); - Integer userType = randomEle(UserTypeEnum.values()).getValue(); - String templateCode = randomString(); - Map templateParams = MapUtil.builder().put("code", "1234") - .put("op", "login").build(); - // mock NotifyTemplateService 的方法 - NotifyTemplateDO template = randomPojo(NotifyTemplateDO.class, o -> { - o.setStatus(CommonStatusEnum.DISABLE.getStatus()); - o.setContent("验证码为{code}, 操作为{op}"); - o.setParams(Lists.newArrayList("code", "op")); - }); - when(notifyTemplateService.getNotifyTemplateByCodeFromCache(eq(templateCode))).thenReturn(template); - - // 调用 - Long resultMessageId = notifySendService.sendSingleNotify(userId, userType, templateCode, templateParams); - // 断言 - assertNull(resultMessageId); - verify(notifyTemplateService, never()).formatNotifyTemplateContent(anyString(), anyMap()); - verify(notifyMessageService, never()).createNotifyMessage(anyLong(), anyInt(), any(), anyString(), anyMap()); - } - - @Test - public void testCheckMailTemplateValid_notExists() { - // 准备参数 - String templateCode = randomString(); - // mock 方法 - - // 调用,并断言异常 - assertServiceException(() -> notifySendService.validateNotifyTemplate(templateCode), - NOTICE_NOT_FOUND); - } - - @Test - public void testCheckTemplateParams_paramMiss() { - // 准备参数 - NotifyTemplateDO template = randomPojo(NotifyTemplateDO.class, - o -> o.setParams(Lists.newArrayList("code"))); - Map templateParams = new HashMap<>(); - // mock 方法 - - // 调用,并断言异常 - assertServiceException(() -> notifySendService.validateTemplateParams(template, templateParams), - NOTIFY_SEND_TEMPLATE_PARAM_MISS, "code"); - } - - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/notify/NotifyTemplateServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/notify/NotifyTemplateServiceImplTest.java deleted file mode 100644 index 48b3708f..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/notify/NotifyTemplateServiceImplTest.java +++ /dev/null @@ -1,178 +0,0 @@ -package com.win.module.system.service.notify; - -import com.win.framework.common.enums.CommonStatusEnum; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.controller.admin.notify.vo.template.NotifyTemplateCreateReqVO; -import com.win.module.system.controller.admin.notify.vo.template.NotifyTemplatePageReqVO; -import com.win.module.system.controller.admin.notify.vo.template.NotifyTemplateUpdateReqVO; -import com.win.module.system.dal.dataobject.notify.NotifyTemplateDO; -import com.win.module.system.dal.mysql.notify.NotifyTemplateMapper; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.HashMap; -import java.util.Map; - -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.*; -import static com.win.module.system.enums.ErrorCodeConstants.NOTIFY_TEMPLATE_NOT_EXISTS; -import static org.junit.jupiter.api.Assertions.*; - -/** - * {@link NotifyTemplateServiceImpl} 的单元测试类 - * - * @author 芋道源码 - */ -@Import(NotifyTemplateServiceImpl.class) -public class NotifyTemplateServiceImplTest extends BaseDbUnitTest { - - @Resource - private NotifyTemplateServiceImpl notifyTemplateService; - - @Resource - private NotifyTemplateMapper notifyTemplateMapper; - - @Test - public void testCreateNotifyTemplate_success() { - // 准备参数 - NotifyTemplateCreateReqVO reqVO = randomPojo(NotifyTemplateCreateReqVO.class, - o -> o.setStatus(randomCommonStatus())); - - // 调用 - Long notifyTemplateId = notifyTemplateService.createNotifyTemplate(reqVO); - // 断言 - assertNotNull(notifyTemplateId); - // 校验记录的属性是否正确 - NotifyTemplateDO notifyTemplate = notifyTemplateMapper.selectById(notifyTemplateId); - assertPojoEquals(reqVO, notifyTemplate); - } - - @Test - public void testUpdateNotifyTemplate_success() { - // mock 数据 - NotifyTemplateDO dbNotifyTemplate = randomPojo(NotifyTemplateDO.class); - notifyTemplateMapper.insert(dbNotifyTemplate);// @Sql: 先插入出一条存在的数据 - // 准备参数 - NotifyTemplateUpdateReqVO reqVO = randomPojo(NotifyTemplateUpdateReqVO.class, o -> { - o.setId(dbNotifyTemplate.getId()); // 设置更新的 ID - o.setStatus(randomCommonStatus()); - }); - - // 调用 - notifyTemplateService.updateNotifyTemplate(reqVO); - // 校验是否更新正确 - NotifyTemplateDO notifyTemplate = notifyTemplateMapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, notifyTemplate); - } - - @Test - public void testUpdateNotifyTemplate_notExists() { - // 准备参数 - NotifyTemplateUpdateReqVO reqVO = randomPojo(NotifyTemplateUpdateReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> notifyTemplateService.updateNotifyTemplate(reqVO), NOTIFY_TEMPLATE_NOT_EXISTS); - } - - @Test - public void testDeleteNotifyTemplate_success() { - // mock 数据 - NotifyTemplateDO dbNotifyTemplate = randomPojo(NotifyTemplateDO.class); - notifyTemplateMapper.insert(dbNotifyTemplate);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbNotifyTemplate.getId(); - - // 调用 - notifyTemplateService.deleteNotifyTemplate(id); - // 校验数据不存在了 - assertNull(notifyTemplateMapper.selectById(id)); - } - - @Test - public void testDeleteNotifyTemplate_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> notifyTemplateService.deleteNotifyTemplate(id), NOTIFY_TEMPLATE_NOT_EXISTS); - } - - @Test - public void testGetNotifyTemplatePage() { - // mock 数据 - NotifyTemplateDO dbNotifyTemplate = randomPojo(NotifyTemplateDO.class, o -> { // 等会查询到 - o.setName("芋头"); - o.setCode("test_01"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setCreateTime(buildTime(2022, 2, 3)); - }); - notifyTemplateMapper.insert(dbNotifyTemplate); - // 测试 name 不匹配 - notifyTemplateMapper.insert(cloneIgnoreId(dbNotifyTemplate, o -> o.setName("投"))); - // 测试 code 不匹配 - notifyTemplateMapper.insert(cloneIgnoreId(dbNotifyTemplate, o -> o.setCode("test_02"))); - // 测试 status 不匹配 - notifyTemplateMapper.insert(cloneIgnoreId(dbNotifyTemplate, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 测试 createTime 不匹配 - notifyTemplateMapper.insert(cloneIgnoreId(dbNotifyTemplate, o -> o.setCreateTime(buildTime(2022, 1, 5)))); - // 准备参数 - NotifyTemplatePageReqVO reqVO = new NotifyTemplatePageReqVO(); - reqVO.setName("芋"); - reqVO.setCode("est_01"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - reqVO.setCreateTime(buildBetweenTime(2022, 2, 1, 2022, 2, 5)); - - // 调用 - PageResult pageResult = notifyTemplateService.getNotifyTemplatePage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbNotifyTemplate, pageResult.getList().get(0)); - } - - @Test - public void testGetNotifyTemplate() { - // mock 数据 - NotifyTemplateDO dbNotifyTemplate = randomPojo(NotifyTemplateDO.class); - notifyTemplateMapper.insert(dbNotifyTemplate); - // 准备参数 - Long id = dbNotifyTemplate.getId(); - - // 调用 - NotifyTemplateDO notifyTemplate = notifyTemplateService.getNotifyTemplate(id); - // 断言 - assertPojoEquals(dbNotifyTemplate, notifyTemplate); - } - - @Test - public void testGetNotifyTemplateByCodeFromCache() { - // mock 数据 - NotifyTemplateDO dbNotifyTemplate = randomPojo(NotifyTemplateDO.class); - notifyTemplateMapper.insert(dbNotifyTemplate); - // 准备参数 - String code = dbNotifyTemplate.getCode(); - - // 调用 - NotifyTemplateDO notifyTemplate = notifyTemplateService.getNotifyTemplateByCodeFromCache(code); - // 断言 - assertPojoEquals(dbNotifyTemplate, notifyTemplate); - } - - @Test - public void testFormatNotifyTemplateContent() { - // 准备参数 - Map params = new HashMap<>(); - params.put("name", "小红"); - params.put("what", "饭"); - - // 调用,并断言 - assertEquals("小红,你好,饭吃了吗?", - notifyTemplateService.formatNotifyTemplateContent("{name},你好,{what}吃了吗?", params)); - } -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/oauth2/OAuth2ApproveServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/oauth2/OAuth2ApproveServiceImplTest.java deleted file mode 100644 index 9a6c7847..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/oauth2/OAuth2ApproveServiceImplTest.java +++ /dev/null @@ -1,269 +0,0 @@ -package com.win.module.system.service.oauth2; - -import cn.hutool.core.date.LocalDateTimeUtil; -import cn.hutool.core.util.ObjectUtil; -import com.win.framework.common.enums.UserTypeEnum; -import com.win.framework.common.util.date.DateUtils; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.dal.dataobject.oauth2.OAuth2ApproveDO; -import com.win.module.system.dal.dataobject.oauth2.OAuth2ClientDO; -import com.win.module.system.dal.mysql.oauth2.OAuth2ApproveMapper; -import org.assertj.core.util.Lists; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.temporal.ChronoUnit; -import java.util.*; - -import static cn.hutool.core.util.RandomUtil.*; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.RandomUtils.randomString; -import static com.win.framework.test.core.util.RandomUtils.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.when; - -/** - * {@link OAuth2ApproveServiceImpl} 的单元测试类 - * - * @author 芋道源码 - */ -@Import(OAuth2ApproveServiceImpl.class) -public class OAuth2ApproveServiceImplTest extends BaseDbUnitTest { - - @Resource - private OAuth2ApproveServiceImpl oauth2ApproveService; - - @Resource - private OAuth2ApproveMapper oauth2ApproveMapper; - - @MockBean - private OAuth2ClientService oauth2ClientService; - - @Test - public void checkForPreApproval_clientAutoApprove() { - // 准备参数 - Long userId = randomLongId(); - Integer userType = randomEle(UserTypeEnum.values()).getValue(); - String clientId = randomString(); - List requestedScopes = Lists.newArrayList("read"); - // mock 方法 - when(oauth2ClientService.validOAuthClientFromCache(eq(clientId))) - .thenReturn(randomPojo(OAuth2ClientDO.class).setAutoApproveScopes(requestedScopes)); - - // 调用 - boolean success = oauth2ApproveService.checkForPreApproval(userId, userType, - clientId, requestedScopes); - // 断言 - assertTrue(success); - List result = oauth2ApproveMapper.selectList(); - assertEquals(1, result.size()); - assertEquals(userId, result.get(0).getUserId()); - assertEquals(userType, result.get(0).getUserType()); - assertEquals(clientId, result.get(0).getClientId()); - assertEquals("read", result.get(0).getScope()); - assertTrue(result.get(0).getApproved()); - assertFalse(DateUtils.isExpired(result.get(0).getExpiresTime())); - } - - @Test - public void checkForPreApproval_approve() { - // 准备参数 - Long userId = randomLongId(); - Integer userType = randomEle(UserTypeEnum.values()).getValue(); - String clientId = randomString(); - List requestedScopes = Lists.newArrayList("read"); - // mock 方法 - when(oauth2ClientService.validOAuthClientFromCache(eq(clientId))) - .thenReturn(randomPojo(OAuth2ClientDO.class).setAutoApproveScopes(null)); - // mock 数据 - OAuth2ApproveDO approve = randomPojo(OAuth2ApproveDO.class).setUserId(userId) - .setUserType(userType).setClientId(clientId).setScope("read") - .setExpiresTime(LocalDateTimeUtil.offset(LocalDateTime.now(), 1L, ChronoUnit.DAYS)).setApproved(true); // 同意 - oauth2ApproveMapper.insert(approve); - - // 调用 - boolean success = oauth2ApproveService.checkForPreApproval(userId, userType, - clientId, requestedScopes); - // 断言 - assertTrue(success); - } - - @Test - public void checkForPreApproval_reject() { - // 准备参数 - Long userId = randomLongId(); - Integer userType = randomEle(UserTypeEnum.values()).getValue(); - String clientId = randomString(); - List requestedScopes = Lists.newArrayList("read"); - // mock 方法 - when(oauth2ClientService.validOAuthClientFromCache(eq(clientId))) - .thenReturn(randomPojo(OAuth2ClientDO.class).setAutoApproveScopes(null)); - // mock 数据 - OAuth2ApproveDO approve = randomPojo(OAuth2ApproveDO.class).setUserId(userId) - .setUserType(userType).setClientId(clientId).setScope("read") - .setExpiresTime(LocalDateTimeUtil.offset(LocalDateTime.now(), 1L, ChronoUnit.DAYS)).setApproved(false); // 拒绝 - oauth2ApproveMapper.insert(approve); - - // 调用 - boolean success = oauth2ApproveService.checkForPreApproval(userId, userType, - clientId, requestedScopes); - // 断言 - assertFalse(success); - } - - @Test - public void testUpdateAfterApproval_none() { - // 准备参数 - Long userId = randomLongId(); - Integer userType = randomEle(UserTypeEnum.values()).getValue(); - String clientId = randomString(); - - // 调用 - boolean success = oauth2ApproveService.updateAfterApproval(userId, userType, clientId, - null); - // 断言 - assertTrue(success); - List result = oauth2ApproveMapper.selectList(); - assertEquals(0, result.size()); - } - - @Test - public void testUpdateAfterApproval_approved() { - // 准备参数 - Long userId = randomLongId(); - Integer userType = randomEle(UserTypeEnum.values()).getValue(); - String clientId = randomString(); - Map requestedScopes = new LinkedHashMap<>(); // 有序,方便判断 - requestedScopes.put("read", true); - requestedScopes.put("write", false); - // mock 方法 - - // 调用 - boolean success = oauth2ApproveService.updateAfterApproval(userId, userType, clientId, - requestedScopes); - // 断言 - assertTrue(success); - List result = oauth2ApproveMapper.selectList(); - assertEquals(2, result.size()); - // read - assertEquals(userId, result.get(0).getUserId()); - assertEquals(userType, result.get(0).getUserType()); - assertEquals(clientId, result.get(0).getClientId()); - assertEquals("read", result.get(0).getScope()); - assertTrue(result.get(0).getApproved()); - assertFalse(DateUtils.isExpired(result.get(0).getExpiresTime())); - // write - assertEquals(userId, result.get(1).getUserId()); - assertEquals(userType, result.get(1).getUserType()); - assertEquals(clientId, result.get(1).getClientId()); - assertEquals("write", result.get(1).getScope()); - assertFalse(result.get(1).getApproved()); - assertFalse(DateUtils.isExpired(result.get(1).getExpiresTime())); - } - - @Test - public void testUpdateAfterApproval_reject() { - // 准备参数 - Long userId = randomLongId(); - Integer userType = randomEle(UserTypeEnum.values()).getValue(); - String clientId = randomString(); - Map requestedScopes = new LinkedHashMap<>(); - requestedScopes.put("write", false); - // mock 方法 - - // 调用 - boolean success = oauth2ApproveService.updateAfterApproval(userId, userType, clientId, - requestedScopes); - // 断言 - assertFalse(success); - List result = oauth2ApproveMapper.selectList(); - assertEquals(1, result.size()); - // write - assertEquals(userId, result.get(0).getUserId()); - assertEquals(userType, result.get(0).getUserType()); - assertEquals(clientId, result.get(0).getClientId()); - assertEquals("write", result.get(0).getScope()); - assertFalse(result.get(0).getApproved()); - assertFalse(DateUtils.isExpired(result.get(0).getExpiresTime())); - } - - @Test - public void testGetApproveList() { - // 准备参数 - Long userId = 10L; - Integer userType = UserTypeEnum.ADMIN.getValue(); - String clientId = randomString(); - // mock 数据 - OAuth2ApproveDO approve = randomPojo(OAuth2ApproveDO.class).setUserId(userId) - .setUserType(userType).setClientId(clientId).setExpiresTime(LocalDateTimeUtil.offset(LocalDateTime.now(), 1L, ChronoUnit.DAYS)); - oauth2ApproveMapper.insert(approve); // 未过期 - oauth2ApproveMapper.insert(ObjectUtil.clone(approve).setId(null) - .setExpiresTime(LocalDateTimeUtil.offset(LocalDateTime.now(), -1L, ChronoUnit.DAYS))); // 已过期 - - // 调用 - List result = oauth2ApproveService.getApproveList(userId, userType, clientId); - // 断言 - assertEquals(1, result.size()); - assertPojoEquals(approve, result.get(0)); - } - - @Test - public void testSaveApprove_insert() { - // 准备参数 - Long userId = randomLongId(); - Integer userType = randomEle(UserTypeEnum.values()).getValue(); - String clientId = randomString(); - String scope = randomString(); - Boolean approved = randomBoolean(); - LocalDateTime expireTime = LocalDateTime.ofInstant(randomDay(1, 30).toInstant(), ZoneId.systemDefault()); - // mock 方法 - - // 调用 - oauth2ApproveService.saveApprove(userId, userType, clientId, - scope, approved, expireTime); - // 断言 - List result = oauth2ApproveMapper.selectList(); - assertEquals(1, result.size()); - assertEquals(userId, result.get(0).getUserId()); - assertEquals(userType, result.get(0).getUserType()); - assertEquals(clientId, result.get(0).getClientId()); - assertEquals(scope, result.get(0).getScope()); - assertEquals(approved, result.get(0).getApproved()); - assertEquals(expireTime, result.get(0).getExpiresTime()); - } - - @Test - public void testSaveApprove_update() { - // mock 数据 - OAuth2ApproveDO approve = randomPojo(OAuth2ApproveDO.class); - oauth2ApproveMapper.insert(approve); - // 准备参数 - Long userId = approve.getUserId(); - Integer userType = approve.getUserType(); - String clientId = approve.getClientId(); - String scope = approve.getScope(); - Boolean approved = randomBoolean(); - LocalDateTime expireTime = LocalDateTime.ofInstant(randomDay(1, 30).toInstant(), ZoneId.systemDefault()); - // mock 方法 - - // 调用 - oauth2ApproveService.saveApprove(userId, userType, clientId, - scope, approved, expireTime); - // 断言 - List result = oauth2ApproveMapper.selectList(); - assertEquals(1, result.size()); - assertEquals(approve.getId(), result.get(0).getId()); - assertEquals(userId, result.get(0).getUserId()); - assertEquals(userType, result.get(0).getUserType()); - assertEquals(clientId, result.get(0).getClientId()); - assertEquals(scope, result.get(0).getScope()); - assertEquals(approved, result.get(0).getApproved()); - assertEquals(expireTime, result.get(0).getExpiresTime()); - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/oauth2/OAuth2ClientServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/oauth2/OAuth2ClientServiceImplTest.java deleted file mode 100644 index 60d5ccbd..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/oauth2/OAuth2ClientServiceImplTest.java +++ /dev/null @@ -1,220 +0,0 @@ -package com.win.module.system.service.oauth2; - -import cn.hutool.extra.spring.SpringUtil; -import com.win.framework.common.enums.CommonStatusEnum; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.controller.admin.oauth2.vo.client.OAuth2ClientCreateReqVO; -import com.win.module.system.controller.admin.oauth2.vo.client.OAuth2ClientPageReqVO; -import com.win.module.system.controller.admin.oauth2.vo.client.OAuth2ClientUpdateReqVO; -import com.win.module.system.dal.dataobject.oauth2.OAuth2ClientDO; -import com.win.module.system.dal.mysql.oauth2.OAuth2ClientMapper; -import org.junit.jupiter.api.Test; -import org.mockito.MockedStatic; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.Collections; - -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.*; -import static com.win.module.system.enums.ErrorCodeConstants.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.mockStatic; - -/** - * {@link OAuth2ClientServiceImpl} 的单元测试类 - * - * @author 芋道源码 - */ -@Import(OAuth2ClientServiceImpl.class) -public class OAuth2ClientServiceImplTest extends BaseDbUnitTest { - - @Resource - private OAuth2ClientServiceImpl oauth2ClientService; - - @Resource - private OAuth2ClientMapper oauth2ClientMapper; - - @Test - public void testCreateOAuth2Client_success() { - // 准备参数 - OAuth2ClientCreateReqVO reqVO = randomPojo(OAuth2ClientCreateReqVO.class, - o -> o.setLogo(randomString())); - - // 调用 - Long oauth2ClientId = oauth2ClientService.createOAuth2Client(reqVO); - // 断言 - assertNotNull(oauth2ClientId); - // 校验记录的属性是否正确 - OAuth2ClientDO oAuth2Client = oauth2ClientMapper.selectById(oauth2ClientId); - assertPojoEquals(reqVO, oAuth2Client); - } - - @Test - public void testUpdateOAuth2Client_success() { - // mock 数据 - OAuth2ClientDO dbOAuth2Client = randomPojo(OAuth2ClientDO.class); - oauth2ClientMapper.insert(dbOAuth2Client);// @Sql: 先插入出一条存在的数据 - // 准备参数 - OAuth2ClientUpdateReqVO reqVO = randomPojo(OAuth2ClientUpdateReqVO.class, o -> { - o.setId(dbOAuth2Client.getId()); // 设置更新的 ID - o.setLogo(randomString()); - }); - - // 调用 - oauth2ClientService.updateOAuth2Client(reqVO); - // 校验是否更新正确 - OAuth2ClientDO oAuth2Client = oauth2ClientMapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, oAuth2Client); - } - - @Test - public void testUpdateOAuth2Client_notExists() { - // 准备参数 - OAuth2ClientUpdateReqVO reqVO = randomPojo(OAuth2ClientUpdateReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> oauth2ClientService.updateOAuth2Client(reqVO), OAUTH2_CLIENT_NOT_EXISTS); - } - - @Test - public void testDeleteOAuth2Client_success() { - // mock 数据 - OAuth2ClientDO dbOAuth2Client = randomPojo(OAuth2ClientDO.class); - oauth2ClientMapper.insert(dbOAuth2Client);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbOAuth2Client.getId(); - - // 调用 - oauth2ClientService.deleteOAuth2Client(id); - // 校验数据不存在了 - assertNull(oauth2ClientMapper.selectById(id)); - } - - @Test - public void testDeleteOAuth2Client_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> oauth2ClientService.deleteOAuth2Client(id), OAUTH2_CLIENT_NOT_EXISTS); - } - - @Test - public void testValidateClientIdExists_withId() { - // mock 数据 - OAuth2ClientDO client = randomPojo(OAuth2ClientDO.class).setClientId("tudou"); - oauth2ClientMapper.insert(client); - // 准备参数 - Long id = randomLongId(); - String clientId = "tudou"; - - // 调用,不会报错 - assertServiceException(() -> oauth2ClientService.validateClientIdExists(id, clientId), OAUTH2_CLIENT_EXISTS); - } - - @Test - public void testValidateClientIdExists_noId() { - // mock 数据 - OAuth2ClientDO client = randomPojo(OAuth2ClientDO.class).setClientId("tudou"); - oauth2ClientMapper.insert(client); - // 准备参数 - String clientId = "tudou"; - - // 调用,不会报错 - assertServiceException(() -> oauth2ClientService.validateClientIdExists(null, clientId), OAUTH2_CLIENT_EXISTS); - } - - @Test - public void testGetOAuth2Client() { - // mock 数据 - OAuth2ClientDO clientDO = randomPojo(OAuth2ClientDO.class); - oauth2ClientMapper.insert(clientDO); - // 准备参数 - Long id = clientDO.getId(); - - // 调用,并断言 - OAuth2ClientDO dbClientDO = oauth2ClientService.getOAuth2Client(id); - assertPojoEquals(clientDO, dbClientDO); - } - - @Test - public void testGetOAuth2ClientFromCache() { - // mock 数据 - OAuth2ClientDO clientDO = randomPojo(OAuth2ClientDO.class); - oauth2ClientMapper.insert(clientDO); - // 准备参数 - String clientId = clientDO.getClientId(); - - // 调用,并断言 - OAuth2ClientDO dbClientDO = oauth2ClientService.getOAuth2ClientFromCache(clientId); - assertPojoEquals(clientDO, dbClientDO); - } - - @Test - public void testGetOAuth2ClientPage() { - // mock 数据 - OAuth2ClientDO dbOAuth2Client = randomPojo(OAuth2ClientDO.class, o -> { // 等会查询到 - o.setName("潜龙"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - }); - oauth2ClientMapper.insert(dbOAuth2Client); - // 测试 name 不匹配 - oauth2ClientMapper.insert(cloneIgnoreId(dbOAuth2Client, o -> o.setName("凤凰"))); - // 测试 status 不匹配 - oauth2ClientMapper.insert(cloneIgnoreId(dbOAuth2Client, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 准备参数 - OAuth2ClientPageReqVO reqVO = new OAuth2ClientPageReqVO(); - reqVO.setName("龙"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - - // 调用 - PageResult pageResult = oauth2ClientService.getOAuth2ClientPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbOAuth2Client, pageResult.getList().get(0)); - } - - @Test - public void testValidOAuthClientFromCache() { - try (MockedStatic springUtilMockedStatic = mockStatic(SpringUtil.class)) { - springUtilMockedStatic.when(() -> SpringUtil.getBean(eq(OAuth2ClientServiceImpl.class))) - .thenReturn(oauth2ClientService); - - // mock 方法 - OAuth2ClientDO client = randomPojo(OAuth2ClientDO.class).setClientId("default") - .setStatus(CommonStatusEnum.ENABLE.getStatus()); - oauth2ClientMapper.insert(client); - OAuth2ClientDO client02 = randomPojo(OAuth2ClientDO.class).setClientId("disable") - .setStatus(CommonStatusEnum.DISABLE.getStatus()); - oauth2ClientMapper.insert(client02); - - // 调用,并断言 - assertServiceException(() -> oauth2ClientService.validOAuthClientFromCache(randomString(), - null, null, null, null), OAUTH2_CLIENT_NOT_EXISTS); - assertServiceException(() -> oauth2ClientService.validOAuthClientFromCache("disable", - null, null, null, null), OAUTH2_CLIENT_DISABLE); - assertServiceException(() -> oauth2ClientService.validOAuthClientFromCache("default", - randomString(), null, null, null), OAUTH2_CLIENT_CLIENT_SECRET_ERROR); - assertServiceException(() -> oauth2ClientService.validOAuthClientFromCache("default", - null, randomString(), null, null), OAUTH2_CLIENT_AUTHORIZED_GRANT_TYPE_NOT_EXISTS); - assertServiceException(() -> oauth2ClientService.validOAuthClientFromCache("default", - null, null, Collections.singleton(randomString()), null), OAUTH2_CLIENT_SCOPE_OVER); - assertServiceException(() -> oauth2ClientService.validOAuthClientFromCache("default", - null, null, null, "test"), OAUTH2_CLIENT_REDIRECT_URI_NOT_MATCH, "test"); - // 成功调用(1:参数完整) - OAuth2ClientDO result = oauth2ClientService.validOAuthClientFromCache(client.getClientId(), client.getSecret(), - client.getAuthorizedGrantTypes().get(0), client.getScopes(), client.getRedirectUris().get(0)); - assertPojoEquals(client, result); - // 成功调用(2:只有 clientId 参数) - result = oauth2ClientService.validOAuthClientFromCache(client.getClientId()); - assertPojoEquals(client, result); - } - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/oauth2/OAuth2CodeServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/oauth2/OAuth2CodeServiceImplTest.java deleted file mode 100644 index 6f7367fd..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/oauth2/OAuth2CodeServiceImplTest.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.win.module.system.service.oauth2; - -import cn.hutool.core.util.RandomUtil; -import com.win.framework.common.enums.UserTypeEnum; -import com.win.framework.common.util.date.DateUtils; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.dal.dataobject.oauth2.OAuth2CodeDO; -import com.win.module.system.dal.mysql.oauth2.OAuth2CodeMapper; -import org.assertj.core.util.Lists; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.time.LocalDateTime; -import java.util.List; - -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.*; -import static com.win.module.system.enums.ErrorCodeConstants.OAUTH2_CODE_EXPIRE; -import static com.win.module.system.enums.ErrorCodeConstants.OAUTH2_CODE_NOT_EXISTS; -import static org.junit.jupiter.api.Assertions.*; - -/** - * {@link OAuth2CodeServiceImpl} 的单元测试类 - * - * @author 芋道源码 - */ -@Import(OAuth2CodeServiceImpl.class) -class OAuth2CodeServiceImplTest extends BaseDbUnitTest { - - @Resource - private OAuth2CodeServiceImpl oauth2CodeService; - - @Resource - private OAuth2CodeMapper oauth2CodeMapper; - - @Test - public void testCreateAuthorizationCode() { - // 准备参数 - Long userId = randomLongId(); - Integer userType = RandomUtil.randomEle(UserTypeEnum.values()).getValue(); - String clientId = randomString(); - List scopes = Lists.newArrayList("read", "write"); - String redirectUri = randomString(); - String state = randomString(); - - // 调用 - OAuth2CodeDO codeDO = oauth2CodeService.createAuthorizationCode(userId, userType, clientId, - scopes, redirectUri, state); - // 断言 - OAuth2CodeDO dbCodeDO = oauth2CodeMapper.selectByCode(codeDO.getCode()); - assertPojoEquals(codeDO, dbCodeDO, "createTime", "updateTime", "deleted"); - assertEquals(userId, codeDO.getUserId()); - assertEquals(userType, codeDO.getUserType()); - assertEquals(clientId, codeDO.getClientId()); - assertEquals(scopes, codeDO.getScopes()); - assertEquals(redirectUri, codeDO.getRedirectUri()); - assertEquals(state, codeDO.getState()); - assertFalse(DateUtils.isExpired(codeDO.getExpiresTime())); - } - - @Test - public void testConsumeAuthorizationCode_null() { - // 调用,并断言 - assertServiceException(() -> oauth2CodeService.consumeAuthorizationCode(randomString()), - OAUTH2_CODE_NOT_EXISTS); - } - - @Test - public void testConsumeAuthorizationCode_expired() { - // 准备参数 - String code = "test_code"; - // mock 数据 - OAuth2CodeDO codeDO = randomPojo(OAuth2CodeDO.class).setCode(code) - .setExpiresTime(LocalDateTime.now().minusDays(1)); - oauth2CodeMapper.insert(codeDO); - - // 调用,并断言 - assertServiceException(() -> oauth2CodeService.consumeAuthorizationCode(code), - OAUTH2_CODE_EXPIRE); - } - - @Test - public void testConsumeAuthorizationCode_success() { - // 准备参数 - String code = "test_code"; - // mock 数据 - OAuth2CodeDO codeDO = randomPojo(OAuth2CodeDO.class).setCode(code) - .setExpiresTime(LocalDateTime.now().plusDays(1)); - oauth2CodeMapper.insert(codeDO); - - // 调用 - OAuth2CodeDO result = oauth2CodeService.consumeAuthorizationCode(code); - assertPojoEquals(codeDO, result); - assertNull(oauth2CodeMapper.selectByCode(code)); - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/oauth2/OAuth2GrantServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/oauth2/OAuth2GrantServiceImplTest.java deleted file mode 100644 index 60a00d1e..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/oauth2/OAuth2GrantServiceImplTest.java +++ /dev/null @@ -1,173 +0,0 @@ -package com.win.module.system.service.oauth2; - -import com.win.framework.common.enums.UserTypeEnum; -import com.win.framework.test.core.ut.BaseMockitoUnitTest; -import com.win.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; -import com.win.module.system.dal.dataobject.oauth2.OAuth2CodeDO; -import com.win.module.system.dal.dataobject.user.AdminUserDO; -import com.win.module.system.service.auth.AdminAuthService; -import com.google.common.collect.Lists; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; - -import java.util.List; - -import static cn.hutool.core.util.RandomUtil.randomEle; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.RandomUtils.*; -import static java.util.Collections.emptyList; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.when; - -/** - * {@link OAuth2GrantServiceImpl} 的单元测试 - * - * @author 芋道源码 - */ -public class OAuth2GrantServiceImplTest extends BaseMockitoUnitTest { - - @InjectMocks - private OAuth2GrantServiceImpl oauth2GrantService; - - @Mock - private OAuth2TokenService oauth2TokenService; - @Mock - private OAuth2CodeService oauth2CodeService; - @Mock - private AdminAuthService adminAuthService; - - @Test - public void testGrantImplicit() { - // 准备参数 - Long userId = randomLongId(); - Integer userType = randomEle(UserTypeEnum.values()).getValue(); - String clientId = randomString(); - List scopes = Lists.newArrayList("read", "write"); - // mock 方法 - OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class); - when(oauth2TokenService.createAccessToken(eq(userId), eq(userType), - eq(clientId), eq(scopes))).thenReturn(accessTokenDO); - - // 调用,并断言 - assertPojoEquals(accessTokenDO, oauth2GrantService.grantImplicit( - userId, userType, clientId, scopes)); - } - - @Test - public void testGrantAuthorizationCodeForCode() { - // 准备参数 - Long userId = randomLongId(); - Integer userType = randomEle(UserTypeEnum.values()).getValue(); - String clientId = randomString(); - List scopes = Lists.newArrayList("read", "write"); - String redirectUri = randomString(); - String state = randomString(); - // mock 方法 - OAuth2CodeDO codeDO = randomPojo(OAuth2CodeDO.class); - when(oauth2CodeService.createAuthorizationCode(eq(userId), eq(userType), - eq(clientId), eq(scopes), eq(redirectUri), eq(state))).thenReturn(codeDO); - - // 调用,并断言 - assertEquals(codeDO.getCode(), oauth2GrantService.grantAuthorizationCodeForCode(userId, userType, - clientId, scopes, redirectUri, state)); - } - - @Test - public void testGrantAuthorizationCodeForAccessToken() { - // 准备参数 - String clientId = randomString(); - String code = randomString(); - List scopes = Lists.newArrayList("read", "write"); - String redirectUri = randomString(); - String state = randomString(); - // mock 方法(code) - OAuth2CodeDO codeDO = randomPojo(OAuth2CodeDO.class, o -> { - o.setClientId(clientId); - o.setRedirectUri(redirectUri); - o.setState(state); - o.setScopes(scopes); - }); - when(oauth2CodeService.consumeAuthorizationCode(eq(code))).thenReturn(codeDO); - // mock 方法(创建令牌) - OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class); - when(oauth2TokenService.createAccessToken(eq(codeDO.getUserId()), eq(codeDO.getUserType()), - eq(codeDO.getClientId()), eq(codeDO.getScopes()))).thenReturn(accessTokenDO); - - // 调用,并断言 - assertPojoEquals(accessTokenDO, oauth2GrantService.grantAuthorizationCodeForAccessToken( - clientId, code, redirectUri, state)); - } - - @Test - public void testGrantPassword() { - // 准备参数 - String username = randomString(); - String password = randomString(); - String clientId = randomString(); - List scopes = Lists.newArrayList("read", "write"); - // mock 方法(认证) - AdminUserDO user = randomPojo(AdminUserDO.class); - when(adminAuthService.authenticate(eq(username), eq(password))).thenReturn(user); - // mock 方法(访问令牌) - OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class); - when(oauth2TokenService.createAccessToken(eq(user.getId()), eq(UserTypeEnum.ADMIN.getValue()), - eq(clientId), eq(scopes))).thenReturn(accessTokenDO); - - // 调用,并断言 - assertPojoEquals(accessTokenDO, oauth2GrantService.grantPassword( - username, password, clientId, scopes)); - } - - @Test - public void testGrantRefreshToken() { - // 准备参数 - String refreshToken = randomString(); - String clientId = randomString(); - // mock 方法 - OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class); - when(oauth2TokenService.refreshAccessToken(eq(refreshToken), eq(clientId))) - .thenReturn(accessTokenDO); - - // 调用,并断言 - assertPojoEquals(accessTokenDO, oauth2GrantService.grantRefreshToken( - refreshToken, clientId)); - } - - @Test - public void testGrantClientCredentials() { - assertThrows(UnsupportedOperationException.class, - () -> oauth2GrantService.grantClientCredentials(randomString(), emptyList()), - "暂时不支持 client_credentials 授权模式"); - } - - @Test - public void testRevokeToken_clientIdError() { - // 准备参数 - String clientId = randomString(); - String accessToken = randomString(); - // mock 方法 - OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class); - when(oauth2TokenService.getAccessToken(eq(accessToken))).thenReturn(accessTokenDO); - - // 调用,并断言 - assertFalse(oauth2GrantService.revokeToken(clientId, accessToken)); - } - - @Test - public void testRevokeToken_success() { - // 准备参数 - String clientId = randomString(); - String accessToken = randomString(); - // mock 方法(访问令牌) - OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class).setClientId(clientId); - when(oauth2TokenService.getAccessToken(eq(accessToken))).thenReturn(accessTokenDO); - // mock 方法(移除) - when(oauth2TokenService.removeAccessToken(eq(accessToken))).thenReturn(accessTokenDO); - - // 调用,并断言 - assertTrue(oauth2GrantService.revokeToken(clientId, accessToken)); - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/oauth2/OAuth2TokenServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/oauth2/OAuth2TokenServiceImplTest.java deleted file mode 100644 index b2635969..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/oauth2/OAuth2TokenServiceImplTest.java +++ /dev/null @@ -1,289 +0,0 @@ -package com.win.module.system.service.oauth2; - -import cn.hutool.core.date.LocalDateTimeUtil; -import cn.hutool.core.util.RandomUtil; -import com.win.framework.common.enums.UserTypeEnum; -import com.win.framework.common.exception.ErrorCode; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.common.util.date.DateUtils; -import com.win.framework.tenant.core.context.TenantContextHolder; -import com.win.framework.test.core.ut.BaseDbAndRedisUnitTest; -import com.win.module.system.controller.admin.oauth2.vo.token.OAuth2AccessTokenPageReqVO; -import com.win.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; -import com.win.module.system.dal.dataobject.oauth2.OAuth2ClientDO; -import com.win.module.system.dal.dataobject.oauth2.OAuth2RefreshTokenDO; -import com.win.module.system.dal.mysql.oauth2.OAuth2AccessTokenMapper; -import com.win.module.system.dal.mysql.oauth2.OAuth2RefreshTokenMapper; -import com.win.module.system.dal.redis.oauth2.OAuth2AccessTokenRedisDAO; -import org.assertj.core.util.Lists; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.time.LocalDateTime; -import java.util.List; - -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.when; - -/** - * {@link OAuth2TokenServiceImpl} 的单元测试类 - * - * @author 芋道源码 - */ -@Import({OAuth2TokenServiceImpl.class, OAuth2AccessTokenRedisDAO.class}) -public class OAuth2TokenServiceImplTest extends BaseDbAndRedisUnitTest { - - @Resource - private OAuth2TokenServiceImpl oauth2TokenService; - - @Resource - private OAuth2AccessTokenMapper oauth2AccessTokenMapper; - @Resource - private OAuth2RefreshTokenMapper oauth2RefreshTokenMapper; - - @Resource - private OAuth2AccessTokenRedisDAO oauth2AccessTokenRedisDAO; - - @MockBean - private OAuth2ClientService oauth2ClientService; - - @Test - public void testCreateAccessToken() { - TenantContextHolder.setTenantId(0L); - // 准备参数 - Long userId = randomLongId(); - Integer userType = RandomUtil.randomEle(UserTypeEnum.values()).getValue(); - String clientId = randomString(); - List scopes = Lists.newArrayList("read", "write"); - // mock 方法 - OAuth2ClientDO clientDO = randomPojo(OAuth2ClientDO.class).setClientId(clientId) - .setAccessTokenValiditySeconds(30).setRefreshTokenValiditySeconds(60); - when(oauth2ClientService.validOAuthClientFromCache(eq(clientId))).thenReturn(clientDO); - - // 调用 - OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.createAccessToken(userId, userType, clientId, scopes); - // 断言访问令牌 - OAuth2AccessTokenDO dbAccessTokenDO = oauth2AccessTokenMapper.selectByAccessToken(accessTokenDO.getAccessToken()); - assertPojoEquals(accessTokenDO, dbAccessTokenDO, "createTime", "updateTime", "deleted"); - assertEquals(userId, accessTokenDO.getUserId()); - assertEquals(userType, accessTokenDO.getUserType()); - assertEquals(clientId, accessTokenDO.getClientId()); - assertEquals(scopes, accessTokenDO.getScopes()); - assertFalse(DateUtils.isExpired(accessTokenDO.getExpiresTime())); - // 断言访问令牌的缓存 - OAuth2AccessTokenDO redisAccessTokenDO = oauth2AccessTokenRedisDAO.get(accessTokenDO.getAccessToken()); - assertPojoEquals(accessTokenDO, redisAccessTokenDO, "createTime", "updateTime", "deleted"); - // 断言刷新令牌 - OAuth2RefreshTokenDO refreshTokenDO = oauth2RefreshTokenMapper.selectList().get(0); - assertPojoEquals(accessTokenDO, refreshTokenDO, "id", "expiresTime", "createTime", "updateTime", "deleted"); - assertFalse(DateUtils.isExpired(refreshTokenDO.getExpiresTime())); - } - - @Test - public void testRefreshAccessToken_null() { - // 准备参数 - String refreshToken = randomString(); - String clientId = randomString(); - // mock 方法 - - // 调用,并断言 - assertServiceException(() -> oauth2TokenService.refreshAccessToken(refreshToken, clientId), - new ErrorCode(400, "无效的刷新令牌")); - } - - @Test - public void testRefreshAccessToken_clientIdError() { - // 准备参数 - String refreshToken = randomString(); - String clientId = randomString(); - // mock 方法 - OAuth2ClientDO clientDO = randomPojo(OAuth2ClientDO.class).setClientId(clientId); - when(oauth2ClientService.validOAuthClientFromCache(eq(clientId))).thenReturn(clientDO); - // mock 数据(访问令牌) - OAuth2RefreshTokenDO refreshTokenDO = randomPojo(OAuth2RefreshTokenDO.class) - .setRefreshToken(refreshToken).setClientId("error"); - oauth2RefreshTokenMapper.insert(refreshTokenDO); - - // 调用,并断言 - assertServiceException(() -> oauth2TokenService.refreshAccessToken(refreshToken, clientId), - new ErrorCode(400, "刷新令牌的客户端编号不正确")); - } - - @Test - public void testRefreshAccessToken_expired() { - // 准备参数 - String refreshToken = randomString(); - String clientId = randomString(); - // mock 方法 - OAuth2ClientDO clientDO = randomPojo(OAuth2ClientDO.class).setClientId(clientId); - when(oauth2ClientService.validOAuthClientFromCache(eq(clientId))).thenReturn(clientDO); - // mock 数据(访问令牌) - OAuth2RefreshTokenDO refreshTokenDO = randomPojo(OAuth2RefreshTokenDO.class) - .setRefreshToken(refreshToken).setClientId(clientId) - .setExpiresTime(LocalDateTime.now().minusDays(1)); - oauth2RefreshTokenMapper.insert(refreshTokenDO); - - // 调用,并断言 - assertServiceException(() -> oauth2TokenService.refreshAccessToken(refreshToken, clientId), - new ErrorCode(401, "刷新令牌已过期")); - assertEquals(0, oauth2RefreshTokenMapper.selectCount()); - } - - @Test - public void testRefreshAccessToken_success() { - TenantContextHolder.setTenantId(0L); - // 准备参数 - String refreshToken = randomString(); - String clientId = randomString(); - // mock 方法 - OAuth2ClientDO clientDO = randomPojo(OAuth2ClientDO.class).setClientId(clientId) - .setAccessTokenValiditySeconds(30); - when(oauth2ClientService.validOAuthClientFromCache(eq(clientId))).thenReturn(clientDO); - // mock 数据(访问令牌) - OAuth2RefreshTokenDO refreshTokenDO = randomPojo(OAuth2RefreshTokenDO.class) - .setRefreshToken(refreshToken).setClientId(clientId) - .setExpiresTime(LocalDateTime.now().plusDays(1)); - oauth2RefreshTokenMapper.insert(refreshTokenDO); - // mock 数据(访问令牌) - OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class).setRefreshToken(refreshToken); - oauth2AccessTokenMapper.insert(accessTokenDO); - oauth2AccessTokenRedisDAO.set(accessTokenDO); - - // 调用 - OAuth2AccessTokenDO newAccessTokenDO = oauth2TokenService.refreshAccessToken(refreshToken, clientId); - // 断言,老的访问令牌被删除 - assertNull(oauth2AccessTokenMapper.selectByAccessToken(accessTokenDO.getAccessToken())); - assertNull(oauth2AccessTokenRedisDAO.get(accessTokenDO.getAccessToken())); - // 断言,新的访问令牌 - OAuth2AccessTokenDO dbAccessTokenDO = oauth2AccessTokenMapper.selectByAccessToken(newAccessTokenDO.getAccessToken()); - assertPojoEquals(newAccessTokenDO, dbAccessTokenDO, "createTime", "updateTime", "deleted"); - assertPojoEquals(newAccessTokenDO, refreshTokenDO, "id", "expiresTime", "createTime", "updateTime", "deleted", - "creator", "updater"); - assertFalse(DateUtils.isExpired(newAccessTokenDO.getExpiresTime())); - // 断言,新的访问令牌的缓存 - OAuth2AccessTokenDO redisAccessTokenDO = oauth2AccessTokenRedisDAO.get(newAccessTokenDO.getAccessToken()); - assertPojoEquals(newAccessTokenDO, redisAccessTokenDO, "createTime", "updateTime", "deleted"); - } - - @Test - public void testGetAccessToken() { - // mock 数据(访问令牌) - OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class) - .setExpiresTime(LocalDateTime.now().plusDays(1)); - oauth2AccessTokenMapper.insert(accessTokenDO); - // 准备参数 - String accessToken = accessTokenDO.getAccessToken(); - - // 调用 - OAuth2AccessTokenDO result = oauth2TokenService.getAccessToken(accessToken); - // 断言 - assertPojoEquals(accessTokenDO, result, "createTime", "updateTime", "deleted", - "creator", "updater"); - assertPojoEquals(accessTokenDO, oauth2AccessTokenRedisDAO.get(accessToken), "createTime", "updateTime", "deleted", - "creator", "updater"); - } - - @Test - public void testCheckAccessToken_null() { - // 调研,并断言 - assertServiceException(() -> oauth2TokenService.checkAccessToken(randomString()), - new ErrorCode(401, "访问令牌不存在")); - } - - @Test - public void testCheckAccessToken_expired() { - // mock 数据(访问令牌) - OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class) - .setExpiresTime(LocalDateTime.now().minusDays(1)); - oauth2AccessTokenMapper.insert(accessTokenDO); - // 准备参数 - String accessToken = accessTokenDO.getAccessToken(); - - // 调研,并断言 - assertServiceException(() -> oauth2TokenService.checkAccessToken(accessToken), - new ErrorCode(401, "访问令牌已过期")); - } - - @Test - public void testCheckAccessToken_success() { - // mock 数据(访问令牌) - OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class) - .setExpiresTime(LocalDateTime.now().plusDays(1)); - oauth2AccessTokenMapper.insert(accessTokenDO); - // 准备参数 - String accessToken = accessTokenDO.getAccessToken(); - - // 调研,并断言 - OAuth2AccessTokenDO result = oauth2TokenService.getAccessToken(accessToken); - // 断言 - assertPojoEquals(accessTokenDO, result, "createTime", "updateTime", "deleted", - "creator", "updater"); - } - - @Test - public void testRemoveAccessToken_null() { - // 调用,并断言 - assertNull(oauth2TokenService.removeAccessToken(randomString())); - } - - @Test - public void testRemoveAccessToken_success() { - // mock 数据(访问令牌) - OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class) - .setExpiresTime(LocalDateTime.now().plusDays(1)); - oauth2AccessTokenMapper.insert(accessTokenDO); - // mock 数据(刷新令牌) - OAuth2RefreshTokenDO refreshTokenDO = randomPojo(OAuth2RefreshTokenDO.class) - .setRefreshToken(accessTokenDO.getRefreshToken()); - oauth2RefreshTokenMapper.insert(refreshTokenDO); - // 调用 - OAuth2AccessTokenDO result = oauth2TokenService.removeAccessToken(accessTokenDO.getAccessToken()); - assertPojoEquals(accessTokenDO, result, "createTime", "updateTime", "deleted", - "creator", "updater"); - // 断言数据 - assertNull(oauth2AccessTokenMapper.selectByAccessToken(accessTokenDO.getAccessToken())); - assertNull(oauth2RefreshTokenMapper.selectByRefreshToken(accessTokenDO.getRefreshToken())); - assertNull(oauth2AccessTokenRedisDAO.get(accessTokenDO.getAccessToken())); - } - - - @Test - public void testGetAccessTokenPage() { - // mock 数据 - OAuth2AccessTokenDO dbAccessToken = randomPojo(OAuth2AccessTokenDO.class, o -> { // 等会查询到 - o.setUserId(10L); - o.setUserType(1); - o.setClientId("test_client"); - o.setExpiresTime(LocalDateTime.now().plusDays(1)); - }); - oauth2AccessTokenMapper.insert(dbAccessToken); - // 测试 userId 不匹配 - oauth2AccessTokenMapper.insert(cloneIgnoreId(dbAccessToken, o -> o.setUserId(20L))); - // 测试 userType 不匹配 - oauth2AccessTokenMapper.insert(cloneIgnoreId(dbAccessToken, o -> o.setUserType(2))); - // 测试 userType 不匹配 - oauth2AccessTokenMapper.insert(cloneIgnoreId(dbAccessToken, o -> o.setClientId("it_client"))); - // 测试 expireTime 不匹配 - oauth2AccessTokenMapper.insert(cloneIgnoreId(dbAccessToken, o -> o.setExpiresTime(LocalDateTimeUtil.now()))); - // 准备参数 - OAuth2AccessTokenPageReqVO reqVO = new OAuth2AccessTokenPageReqVO(); - reqVO.setUserId(10L); - reqVO.setUserType(1); - reqVO.setClientId("test"); - - // 调用 - PageResult pageResult = oauth2TokenService.getAccessTokenPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbAccessToken, pageResult.getList().get(0)); - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/permission/MenuServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/permission/MenuServiceImplTest.java deleted file mode 100644 index 9d2998a6..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/permission/MenuServiceImplTest.java +++ /dev/null @@ -1,295 +0,0 @@ -package com.win.module.system.service.permission; - -import com.win.framework.common.enums.CommonStatusEnum; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.controller.admin.permission.vo.menu.MenuCreateReqVO; -import com.win.module.system.controller.admin.permission.vo.menu.MenuListReqVO; -import com.win.module.system.controller.admin.permission.vo.menu.MenuUpdateReqVO; -import com.win.module.system.dal.dataobject.permission.MenuDO; -import com.win.module.system.dal.mysql.permission.MenuMapper; -import com.win.module.system.enums.permission.MenuTypeEnum; -import com.win.module.system.service.tenant.TenantService; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.*; - -import static com.win.framework.common.util.collection.SetUtils.asSet; -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.*; -import static com.win.module.system.dal.dataobject.permission.MenuDO.ID_ROOT; -import static com.win.module.system.enums.ErrorCodeConstants.*; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.mockito.ArgumentMatchers.argThat; -import static org.mockito.Mockito.doNothing; -import static org.mockito.Mockito.verify; - -@Import(MenuServiceImpl.class) -public class MenuServiceImplTest extends BaseDbUnitTest { - - @Resource - private MenuServiceImpl menuService; - - @Resource - private MenuMapper menuMapper; - - @MockBean - private PermissionService permissionService; - @MockBean - private TenantService tenantService; - - @Test - public void testCreateMenu_success() { - // mock 数据(构造父菜单) - MenuDO menuDO = buildMenuDO(MenuTypeEnum.MENU, - "parent", 0L); - menuMapper.insert(menuDO); - Long parentId = menuDO.getId(); - // 准备参数 - MenuCreateReqVO reqVO = randomPojo(MenuCreateReqVO.class, o -> { - o.setParentId(parentId); - o.setName("testSonName"); - o.setType(MenuTypeEnum.MENU.getType()); - }); - Long menuId = menuService.createMenu(reqVO); - - // 校验记录的属性是否正确 - MenuDO dbMenu = menuMapper.selectById(menuId); - assertPojoEquals(reqVO, dbMenu); - } - - @Test - public void testUpdateMenu_success() { - // mock 数据(构造父子菜单) - MenuDO sonMenuDO = createParentAndSonMenu(); - Long sonId = sonMenuDO.getId(); - // 准备参数 - MenuUpdateReqVO reqVO = randomPojo(MenuUpdateReqVO.class, o -> { - o.setId(sonId); - o.setName("testSonName"); // 修改名字 - o.setParentId(sonMenuDO.getParentId()); - o.setType(MenuTypeEnum.MENU.getType()); - }); - - // 调用 - menuService.updateMenu(reqVO); - // 校验记录的属性是否正确 - MenuDO dbMenu = menuMapper.selectById(sonId); - assertPojoEquals(reqVO, dbMenu); - } - - @Test - public void testUpdateMenu_sonIdNotExist() { - // 准备参数 - MenuUpdateReqVO reqVO = randomPojo(MenuUpdateReqVO.class); - // 调用,并断言异常 - assertServiceException(() -> menuService.updateMenu(reqVO), MENU_NOT_EXISTS); - } - - @Test - public void testDeleteMenu_success() { - // mock 数据 - MenuDO menuDO = randomPojo(MenuDO.class); - menuMapper.insert(menuDO); - // 准备参数 - Long id = menuDO.getId(); - - // 调用 - menuService.deleteMenu(id); - // 断言 - MenuDO dbMenuDO = menuMapper.selectById(id); - assertNull(dbMenuDO); - verify(permissionService).processMenuDeleted(id); - } - - @Test - public void testDeleteMenu_menuNotExist() { - assertServiceException(() -> menuService.deleteMenu(randomLongId()), - MENU_NOT_EXISTS); - } - - @Test - public void testDeleteMenu_existChildren() { - // mock 数据(构造父子菜单) - MenuDO sonMenu = createParentAndSonMenu(); - // 准备参数 - Long parentId = sonMenu.getParentId(); - - // 调用并断言异常 - assertServiceException(() -> menuService.deleteMenu(parentId), MENU_EXISTS_CHILDREN); - } - - @Test - public void testGetMenuList_all() { - // mock 数据 - MenuDO menu100 = randomPojo(MenuDO.class); - menuMapper.insert(menu100); - MenuDO menu101 = randomPojo(MenuDO.class); - menuMapper.insert(menu101); - // 准备参数 - - // 调用 - List list = menuService.getMenuList(); - // 断言 - assertEquals(2, list.size()); - assertPojoEquals(menu100, list.get(0)); - assertPojoEquals(menu101, list.get(1)); - } - - @Test - public void testGetMenuList() { - // mock 数据 - MenuDO menuDO = randomPojo(MenuDO.class, o -> o.setName("芋艿").setStatus(CommonStatusEnum.ENABLE.getStatus())); - menuMapper.insert(menuDO); - // 测试 status 不匹配 - menuMapper.insert(cloneIgnoreId(menuDO, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 测试 name 不匹配 - menuMapper.insert(cloneIgnoreId(menuDO, o -> o.setName("艿"))); - // 准备参数 - MenuListReqVO reqVO = new MenuListReqVO().setName("芋").setStatus(CommonStatusEnum.ENABLE.getStatus()); - - // 调用 - List result = menuService.getMenuList(reqVO); - // 断言 - assertEquals(1, result.size()); - assertPojoEquals(menuDO, result.get(0)); - } - - @Test - public void testGetMenuListByTenant() { - // mock 数据 - MenuDO menu100 = randomPojo(MenuDO.class, o -> o.setId(100L).setStatus(CommonStatusEnum.ENABLE.getStatus())); - menuMapper.insert(menu100); - MenuDO menu101 = randomPojo(MenuDO.class, o -> o.setId(101L).setStatus(CommonStatusEnum.DISABLE.getStatus())); - menuMapper.insert(menu101); - MenuDO menu102 = randomPojo(MenuDO.class, o -> o.setId(102L).setStatus(CommonStatusEnum.ENABLE.getStatus())); - menuMapper.insert(menu102); - // mock 过滤菜单 - Set menuIds = asSet(100L, 101L); - doNothing().when(tenantService).handleTenantMenu(argThat(handler -> { - handler.handle(menuIds); - return true; - })); - // 准备参数 - MenuListReqVO reqVO = new MenuListReqVO().setStatus(CommonStatusEnum.ENABLE.getStatus()); - - // 调用 - List result = menuService.getMenuListByTenant(reqVO); - // 断言 - assertEquals(1, result.size()); - assertPojoEquals(menu100, result.get(0)); - } - - @Test - public void testGetMenu() { - // mock 数据 - MenuDO menu = randomPojo(MenuDO.class); - menuMapper.insert(menu); - // 准备参数 - Long id = menu.getId(); - - // 调用 - MenuDO dbMenu = menuService.getMenu(id); - // 断言 - assertPojoEquals(menu, dbMenu); - } - - @Test - public void testValidateParentMenu_success() { - // mock 数据 - MenuDO menuDO = buildMenuDO(MenuTypeEnum.MENU, "parent", 0L); - menuMapper.insert(menuDO); - // 准备参数 - Long parentId = menuDO.getId(); - - // 调用,无需断言 - menuService.validateParentMenu(parentId, null); - } - - @Test - public void testValidateParentMenu_canNotSetSelfToBeParent() { - // 调用,并断言异常 - assertServiceException(() -> menuService.validateParentMenu(1L, 1L), - MENU_PARENT_ERROR); - } - - @Test - public void testValidateParentMenu_parentNotExist() { - // 调用,并断言异常 - assertServiceException(() -> menuService.validateParentMenu(randomLongId(), null), - MENU_PARENT_NOT_EXISTS); - } - - @Test - public void testValidateParentMenu_parentTypeError() { - // mock 数据 - MenuDO menuDO = buildMenuDO(MenuTypeEnum.BUTTON, "parent", 0L); - menuMapper.insert(menuDO); - // 准备参数 - Long parentId = menuDO.getId(); - - // 调用,并断言异常 - assertServiceException(() -> menuService.validateParentMenu(parentId, null), - MENU_PARENT_NOT_DIR_OR_MENU); - } - - @Test - public void testValidateMenu_success() { - // mock 父子菜单 - MenuDO sonMenu = createParentAndSonMenu(); - // 准备参数 - Long parentId = sonMenu.getParentId(); - Long otherSonMenuId = randomLongId(); - String otherSonMenuName = randomString(); - - // 调用,无需断言 - menuService.validateMenu(parentId, otherSonMenuName, otherSonMenuId); - } - - @Test - public void testValidateMenu_sonMenuNameDuplicate() { - // mock 父子菜单 - MenuDO sonMenu = createParentAndSonMenu(); - // 准备参数 - Long parentId = sonMenu.getParentId(); - Long otherSonMenuId = randomLongId(); - String otherSonMenuName = sonMenu.getName(); //相同名称 - - // 调用,并断言异常 - assertServiceException(() -> menuService.validateMenu(parentId, otherSonMenuName, otherSonMenuId), - MENU_NAME_DUPLICATE); - } - - // ====================== 初始化方法 ====================== - - /** - * 插入父子菜单,返回子菜单 - * - * @return 子菜单 - */ - private MenuDO createParentAndSonMenu() { - // 构造父子菜单 - MenuDO parentMenuDO = buildMenuDO(MenuTypeEnum.MENU, "parent", ID_ROOT); - menuMapper.insert(parentMenuDO); - // 构建子菜单 - MenuDO sonMenuDO = buildMenuDO(MenuTypeEnum.MENU, "testSonName", - parentMenuDO.getParentId()); - menuMapper.insert(sonMenuDO); - return sonMenuDO; - } - - private MenuDO buildMenuDO(MenuTypeEnum type, String name, Long parentId) { - return buildMenuDO(type, name, parentId, randomCommonStatus()); - } - - private MenuDO buildMenuDO(MenuTypeEnum type, String name, Long parentId, Integer status) { - return randomPojo(MenuDO.class, o -> o.setId(null).setName(name).setParentId(parentId) - .setType(type.getType()).setStatus(status)); - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/permission/PermissionServiceTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/permission/PermissionServiceTest.java deleted file mode 100644 index b4f6d4e6..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/permission/PermissionServiceTest.java +++ /dev/null @@ -1,527 +0,0 @@ -package com.win.module.system.service.permission; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.extra.spring.SpringUtil; -import com.win.framework.common.enums.CommonStatusEnum; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.api.permission.dto.DeptDataPermissionRespDTO; -import com.win.module.system.dal.dataobject.dept.DeptDO; -import com.win.module.system.dal.dataobject.permission.MenuDO; -import com.win.module.system.dal.dataobject.permission.RoleDO; -import com.win.module.system.dal.dataobject.permission.RoleMenuDO; -import com.win.module.system.dal.dataobject.permission.UserRoleDO; -import com.win.module.system.dal.dataobject.user.AdminUserDO; -import com.win.module.system.dal.mysql.permission.RoleMenuMapper; -import com.win.module.system.dal.mysql.permission.UserRoleMapper; -import com.win.module.system.enums.permission.DataScopeEnum; -import com.win.module.system.service.dept.DeptService; -import com.win.module.system.service.user.AdminUserService; -import org.junit.jupiter.api.Test; -import org.mockito.MockedStatic; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.Collection; -import java.util.List; -import java.util.Set; - -import static cn.hutool.core.collection.ListUtil.toList; -import static com.win.framework.common.util.collection.SetUtils.asSet; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.RandomUtils.randomLongId; -import static com.win.framework.test.core.util.RandomUtils.randomPojo; -import static java.util.Collections.singleton; -import static java.util.Collections.singletonList; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.*; - -@Import({PermissionServiceImpl.class}) -public class PermissionServiceTest extends BaseDbUnitTest { - - @Resource - private PermissionServiceImpl permissionService; - - @Resource - private RoleMenuMapper roleMenuMapper; - @Resource - private UserRoleMapper userRoleMapper; - - @MockBean - private RoleService roleService; - @MockBean - private MenuService menuService; - @MockBean - private DeptService deptService; - @MockBean - private AdminUserService userService; - - @Test - public void testHasAnyPermissions_superAdmin() { - try (MockedStatic springUtilMockedStatic = mockStatic(SpringUtil.class)) { - springUtilMockedStatic.when(() -> SpringUtil.getBean(eq(PermissionServiceImpl.class))) - .thenReturn(permissionService); - - // 准备参数 - Long userId = 1L; - String[] roles = new String[]{"system:user:query", "system:user:create"}; - // mock 用户登录的角色 - userRoleMapper.insert(randomPojo(UserRoleDO.class).setUserId(userId).setRoleId(100L)); - RoleDO role = randomPojo(RoleDO.class, o -> o.setId(100L) - .setStatus(CommonStatusEnum.ENABLE.getStatus())); - when(roleService.getRoleListFromCache(eq(singleton(100L)))).thenReturn(toList(role)); - // mock 其它方法 - when(roleService.hasAnySuperAdmin(eq(asSet(100L)))).thenReturn(true); - - // 调用,并断言 - assertTrue(permissionService.hasAnyPermissions(userId, roles)); - } - } - - @Test - public void testHasAnyPermissions_normal() { - try (MockedStatic springUtilMockedStatic = mockStatic(SpringUtil.class)) { - springUtilMockedStatic.when(() -> SpringUtil.getBean(eq(PermissionServiceImpl.class))) - .thenReturn(permissionService); - - // 准备参数 - Long userId = 1L; - String[] roles = new String[]{"system:user:query", "system:user:create"}; - // mock 用户登录的角色 - userRoleMapper.insert(randomPojo(UserRoleDO.class).setUserId(userId).setRoleId(100L)); - RoleDO role = randomPojo(RoleDO.class, o -> o.setId(100L) - .setStatus(CommonStatusEnum.ENABLE.getStatus())); - when(roleService.getRoleListFromCache(eq(singleton(100L)))).thenReturn(toList(role)); - // mock 菜单 - Long menuId = 1000L; - when(menuService.getMenuIdListByPermissionFromCache( - eq("system:user:create"))).thenReturn(singletonList(menuId)); - roleMenuMapper.insert(randomPojo(RoleMenuDO.class).setRoleId(100L).setMenuId(1000L)); - - // 调用,并断言 - assertTrue(permissionService.hasAnyPermissions(userId, roles)); - } - } - - @Test - public void testHasAnyRoles() { - try (MockedStatic springUtilMockedStatic = mockStatic(SpringUtil.class)) { - springUtilMockedStatic.when(() -> SpringUtil.getBean(eq(PermissionServiceImpl.class))) - .thenReturn(permissionService); - - // 准备参数 - Long userId = 1L; - String[] roles = new String[]{"yunai", "tudou"}; - // mock 用户与角色的缓存 - userRoleMapper.insert(randomPojo(UserRoleDO.class).setUserId(userId).setRoleId(100L)); - RoleDO role = randomPojo(RoleDO.class, o -> o.setId(100L).setCode("tudou") - .setStatus(CommonStatusEnum.ENABLE.getStatus())); - when(roleService.getRoleListFromCache(eq(singleton(100L)))).thenReturn(toList(role)); - - // 调用,并断言 - assertTrue(permissionService.hasAnyRoles(userId, roles)); - } - } - - // ========== 角色-菜单的相关方法 ========== - - @Test - public void testAssignRoleMenu() { - // 准备参数 - Long roleId = 1L; - Set menuIds = asSet(200L, 300L); - // mock 数据 - RoleMenuDO roleMenu01 = randomPojo(RoleMenuDO.class).setRoleId(1L).setMenuId(100L); - roleMenuMapper.insert(roleMenu01); - RoleMenuDO roleMenu02 = randomPojo(RoleMenuDO.class).setRoleId(1L).setMenuId(200L); - roleMenuMapper.insert(roleMenu02); - - // 调用 - permissionService.assignRoleMenu(roleId, menuIds); - // 断言 - List roleMenuList = roleMenuMapper.selectList(); - assertEquals(2, roleMenuList.size()); - assertEquals(1L, roleMenuList.get(0).getRoleId()); - assertEquals(200L, roleMenuList.get(0).getMenuId()); - assertEquals(1L, roleMenuList.get(1).getRoleId()); - assertEquals(300L, roleMenuList.get(1).getMenuId()); - } - - @Test - public void testProcessRoleDeleted() { - // 准备参数 - Long roleId = randomLongId(); - // mock 数据 UserRole - UserRoleDO userRoleDO01 = randomPojo(UserRoleDO.class, o -> o.setRoleId(roleId)); // 被删除 - userRoleMapper.insert(userRoleDO01); - UserRoleDO userRoleDO02 = randomPojo(UserRoleDO.class); // 不被删除 - userRoleMapper.insert(userRoleDO02); - // mock 数据 RoleMenu - RoleMenuDO roleMenuDO01 = randomPojo(RoleMenuDO.class, o -> o.setRoleId(roleId)); // 被删除 - roleMenuMapper.insert(roleMenuDO01); - RoleMenuDO roleMenuDO02 = randomPojo(RoleMenuDO.class); // 不被删除 - roleMenuMapper.insert(roleMenuDO02); - - // 调用 - permissionService.processRoleDeleted(roleId); - // 断言数据 RoleMenuDO - List dbRoleMenus = roleMenuMapper.selectList(); - assertEquals(1, dbRoleMenus.size()); - assertPojoEquals(dbRoleMenus.get(0), roleMenuDO02); - // 断言数据 UserRoleDO - List dbUserRoles = userRoleMapper.selectList(); - assertEquals(1, dbUserRoles.size()); - assertPojoEquals(dbUserRoles.get(0), userRoleDO02); - } - - @Test - public void testProcessMenuDeleted() { - // 准备参数 - Long menuId = randomLongId(); - // mock 数据 - RoleMenuDO roleMenuDO01 = randomPojo(RoleMenuDO.class, o -> o.setMenuId(menuId)); // 被删除 - roleMenuMapper.insert(roleMenuDO01); - RoleMenuDO roleMenuDO02 = randomPojo(RoleMenuDO.class); // 不被删除 - roleMenuMapper.insert(roleMenuDO02); - - // 调用 - permissionService.processMenuDeleted(menuId); - // 断言数据 - List dbRoleMenus = roleMenuMapper.selectList(); - assertEquals(1, dbRoleMenus.size()); - assertPojoEquals(dbRoleMenus.get(0), roleMenuDO02); - } - - @Test - public void testGetRoleMenuIds_superAdmin() { - // 准备参数 - Long roleId = 100L; - // mock 方法 - when(roleService.hasAnySuperAdmin(eq(singleton(100L)))).thenReturn(true); - List menuList = singletonList(randomPojo(MenuDO.class).setId(1L)); - when(menuService.getMenuList()).thenReturn(menuList); - - // 调用 - Set menuIds = permissionService.getRoleMenuListByRoleId(roleId); - // 断言 - assertEquals(singleton(1L), menuIds); - } - - @Test - public void testGetRoleMenuIds_normal() { - // 准备参数 - Long roleId = 100L; - // mock 数据 - RoleMenuDO roleMenu01 = randomPojo(RoleMenuDO.class).setRoleId(100L).setMenuId(1L); - roleMenuMapper.insert(roleMenu01); - RoleMenuDO roleMenu02 = randomPojo(RoleMenuDO.class).setRoleId(100L).setMenuId(2L); - roleMenuMapper.insert(roleMenu02); - - // 调用 - Set menuIds = permissionService.getRoleMenuListByRoleId(roleId); - // 断言 - assertEquals(asSet(1L, 2L), menuIds); - } - - @Test - public void testGetMenuRoleIdListByMenuIdFromCache() { - // 准备参数 - Long menuId = 1L; - // mock 数据 - RoleMenuDO roleMenu01 = randomPojo(RoleMenuDO.class).setRoleId(100L).setMenuId(1L); - roleMenuMapper.insert(roleMenu01); - RoleMenuDO roleMenu02 = randomPojo(RoleMenuDO.class).setRoleId(200L).setMenuId(1L); - roleMenuMapper.insert(roleMenu02); - - // 调用 - Set roleIds = permissionService.getMenuRoleIdListByMenuIdFromCache(menuId); - // 断言 - assertEquals(asSet(100L, 200L), roleIds); - } - - // ========== 用户-角色的相关方法 ========== - - @Test - public void testAssignUserRole() { - // 准备参数 - Long userId = 1L; - Set roleIds = asSet(200L, 300L); - // mock 数据 - UserRoleDO userRole01 = randomPojo(UserRoleDO.class).setUserId(1L).setRoleId(100L); - userRoleMapper.insert(userRole01); - UserRoleDO userRole02 = randomPojo(UserRoleDO.class).setUserId(1L).setRoleId(200L); - userRoleMapper.insert(userRole02); - - // 调用 - permissionService.assignUserRole(userId, roleIds); - // 断言 - List userRoleDOList = userRoleMapper.selectList(); - assertEquals(2, userRoleDOList.size()); - assertEquals(1L, userRoleDOList.get(0).getUserId()); - assertEquals(200L, userRoleDOList.get(0).getRoleId()); - assertEquals(1L, userRoleDOList.get(1).getUserId()); - assertEquals(300L, userRoleDOList.get(1).getRoleId()); - } - - @Test - public void testProcessUserDeleted() { - // 准备参数 - Long userId = randomLongId(); - // mock 数据 - UserRoleDO userRoleDO01 = randomPojo(UserRoleDO.class, o -> o.setUserId(userId)); // 被删除 - userRoleMapper.insert(userRoleDO01); - UserRoleDO userRoleDO02 = randomPojo(UserRoleDO.class); // 不被删除 - userRoleMapper.insert(userRoleDO02); - - // 调用 - permissionService.processUserDeleted(userId); - // 断言数据 - List dbUserRoles = userRoleMapper.selectList(); - assertEquals(1, dbUserRoles.size()); - assertPojoEquals(dbUserRoles.get(0), userRoleDO02); - } - - @Test - public void testGetUserRoleIdListByUserId() { - // 准备参数 - Long userId = 1L; - // mock 数据 - UserRoleDO userRoleDO01 = randomPojo(UserRoleDO.class, o -> o.setUserId(1L).setRoleId(10L)); - userRoleMapper.insert(userRoleDO01); - UserRoleDO roleMenuDO02 = randomPojo(UserRoleDO.class, o -> o.setUserId(1L).setRoleId(20L)); - userRoleMapper.insert(roleMenuDO02); - - // 调用 - Set result = permissionService.getUserRoleIdListByUserId(userId); - // 断言 - assertEquals(asSet(10L, 20L), result); - } - - @Test - public void testGetUserRoleIdListByUserIdFromCache() { - // 准备参数 - Long userId = 1L; - // mock 数据 - UserRoleDO userRoleDO01 = randomPojo(UserRoleDO.class, o -> o.setUserId(1L).setRoleId(10L)); - userRoleMapper.insert(userRoleDO01); - UserRoleDO roleMenuDO02 = randomPojo(UserRoleDO.class, o -> o.setUserId(1L).setRoleId(20L)); - userRoleMapper.insert(roleMenuDO02); - - // 调用 - Set result = permissionService.getUserRoleIdListByUserIdFromCache(userId); - // 断言 - assertEquals(asSet(10L, 20L), result); - } - - @Test - public void testGetUserRoleIdsFromCache() { - // 准备参数 - Long userId = 1L; - // mock 数据 - UserRoleDO userRoleDO01 = randomPojo(UserRoleDO.class, o -> o.setUserId(1L).setRoleId(10L)); - userRoleMapper.insert(userRoleDO01); - UserRoleDO roleMenuDO02 = randomPojo(UserRoleDO.class, o -> o.setUserId(1L).setRoleId(20L)); - userRoleMapper.insert(roleMenuDO02); - - // 调用 - Set result = permissionService.getUserRoleIdListByUserIdFromCache(userId); - // 断言 - assertEquals(asSet(10L, 20L), result); - } - - @Test - public void testGetUserRoleIdListByRoleId() { - // 准备参数 - Collection roleIds = asSet(10L, 20L); - // mock 数据 - UserRoleDO userRoleDO01 = randomPojo(UserRoleDO.class, o -> o.setUserId(1L).setRoleId(10L)); - userRoleMapper.insert(userRoleDO01); - UserRoleDO roleMenuDO02 = randomPojo(UserRoleDO.class, o -> o.setUserId(2L).setRoleId(20L)); - userRoleMapper.insert(roleMenuDO02); - - // 调用 - Set result = permissionService.getUserRoleIdListByRoleId(roleIds); - // 断言 - assertEquals(asSet(1L, 2L), result); - } - - @Test - public void testGetEnableUserRoleListByUserIdFromCache() { - try (MockedStatic springUtilMockedStatic = mockStatic(SpringUtil.class)) { - springUtilMockedStatic.when(() -> SpringUtil.getBean(eq(PermissionServiceImpl.class))) - .thenReturn(permissionService); - - // 准备参数 - Long userId = 1L; - // mock 用户登录的角色 - userRoleMapper.insert(randomPojo(UserRoleDO.class).setUserId(userId).setRoleId(100L)); - userRoleMapper.insert(randomPojo(UserRoleDO.class).setUserId(userId).setRoleId(200L)); - RoleDO role01 = randomPojo(RoleDO.class, o -> o.setId(100L) - .setStatus(CommonStatusEnum.ENABLE.getStatus())); - RoleDO role02 = randomPojo(RoleDO.class, o -> o.setId(200L) - .setStatus(CommonStatusEnum.DISABLE.getStatus())); - when(roleService.getRoleListFromCache(eq(asSet(100L, 200L)))) - .thenReturn(toList(role01, role02)); - - // 调用 - List result = permissionService.getEnableUserRoleListByUserIdFromCache(userId); - // 断言 - assertEquals(1, result.size()); - assertPojoEquals(role01, result.get(0)); - } - } - - // ========== 用户-部门的相关方法 ========== - - @Test - public void testAssignRoleDataScope() { - // 准备参数 - Long roleId = 1L; - Integer dataScope = 2; - Set dataScopeDeptIds = asSet(10L, 20L); - - // 调用 - permissionService.assignRoleDataScope(roleId, dataScope, dataScopeDeptIds); - // 断言 - verify(roleService).updateRoleDataScope(eq(roleId), eq(dataScope), eq(dataScopeDeptIds)); - } - - @Test - public void testGetDeptDataPermission_All() { - try (MockedStatic springUtilMockedStatic = mockStatic(SpringUtil.class)) { - springUtilMockedStatic.when(() -> SpringUtil.getBean(eq(PermissionServiceImpl.class))) - .thenReturn(permissionService); - - // 准备参数 - Long userId = 1L; - // mock 用户的角色编号 - userRoleMapper.insert(randomPojo(UserRoleDO.class).setUserId(userId).setRoleId(2L)); - // mock 获得用户的角色 - RoleDO roleDO = randomPojo(RoleDO.class, o -> o.setDataScope(DataScopeEnum.ALL.getScope()) - .setStatus(CommonStatusEnum.ENABLE.getStatus())); - when(roleService.getRoleListFromCache(eq(singleton(2L)))).thenReturn(toList(roleDO)); - - // 调用 - DeptDataPermissionRespDTO result = permissionService.getDeptDataPermission(userId); - // 断言 - assertTrue(result.getAll()); - assertFalse(result.getSelf()); - assertTrue(CollUtil.isEmpty(result.getDeptIds())); - } - } - - @Test - public void testGetDeptDataPermission_DeptCustom() { - try (MockedStatic springUtilMockedStatic = mockStatic(SpringUtil.class)) { - springUtilMockedStatic.when(() -> SpringUtil.getBean(eq(PermissionServiceImpl.class))) - .thenReturn(permissionService); - - // 准备参数 - Long userId = 1L; - // mock 用户的角色编号 - userRoleMapper.insert(randomPojo(UserRoleDO.class).setUserId(userId).setRoleId(2L)); - // mock 获得用户的角色 - RoleDO roleDO = randomPojo(RoleDO.class, o -> o.setDataScope(DataScopeEnum.DEPT_CUSTOM.getScope()) - .setStatus(CommonStatusEnum.ENABLE.getStatus())); - when(roleService.getRoleListFromCache(eq(singleton(2L)))).thenReturn(toList(roleDO)); - // mock 部门的返回 - when(userService.getUser(eq(1L))).thenReturn(new AdminUserDO().setDeptId(3L), - null, null); // 最后返回 null 的目的,看看会不会重复调用 - - // 调用 - DeptDataPermissionRespDTO result = permissionService.getDeptDataPermission(userId); - // 断言 - assertFalse(result.getAll()); - assertFalse(result.getSelf()); - assertEquals(roleDO.getDataScopeDeptIds().size() + 1, result.getDeptIds().size()); - assertTrue(CollUtil.containsAll(result.getDeptIds(), roleDO.getDataScopeDeptIds())); - assertTrue(CollUtil.contains(result.getDeptIds(), 3L)); - } - } - - @Test - public void testGetDeptDataPermission_DeptOnly() { - try (MockedStatic springUtilMockedStatic = mockStatic(SpringUtil.class)) { - springUtilMockedStatic.when(() -> SpringUtil.getBean(eq(PermissionServiceImpl.class))) - .thenReturn(permissionService); - - // 准备参数 - Long userId = 1L; - // mock 用户的角色编号 - userRoleMapper.insert(randomPojo(UserRoleDO.class).setUserId(userId).setRoleId(2L)); - // mock 获得用户的角色 - RoleDO roleDO = randomPojo(RoleDO.class, o -> o.setDataScope(DataScopeEnum.DEPT_ONLY.getScope()) - .setStatus(CommonStatusEnum.ENABLE.getStatus())); - when(roleService.getRoleListFromCache(eq(singleton(2L)))).thenReturn(toList(roleDO)); - // mock 部门的返回 - when(userService.getUser(eq(1L))).thenReturn(new AdminUserDO().setDeptId(3L), - null, null); // 最后返回 null 的目的,看看会不会重复调用 - - // 调用 - DeptDataPermissionRespDTO result = permissionService.getDeptDataPermission(userId); - // 断言 - assertFalse(result.getAll()); - assertFalse(result.getSelf()); - assertEquals(1, result.getDeptIds().size()); - assertTrue(CollUtil.contains(result.getDeptIds(), 3L)); - } - } - - @Test - public void testGetDeptDataPermission_DeptAndChild() { - try (MockedStatic springUtilMockedStatic = mockStatic(SpringUtil.class)) { - springUtilMockedStatic.when(() -> SpringUtil.getBean(eq(PermissionServiceImpl.class))) - .thenReturn(permissionService); - - // 准备参数 - Long userId = 1L; - // mock 用户的角色编号 - userRoleMapper.insert(randomPojo(UserRoleDO.class).setUserId(userId).setRoleId(2L)); - // mock 获得用户的角色 - RoleDO roleDO = randomPojo(RoleDO.class, o -> o.setDataScope(DataScopeEnum.DEPT_AND_CHILD.getScope()) - .setStatus(CommonStatusEnum.ENABLE.getStatus())); - when(roleService.getRoleListFromCache(eq(singleton(2L)))).thenReturn(toList(roleDO)); - // mock 部门的返回 - when(userService.getUser(eq(1L))).thenReturn(new AdminUserDO().setDeptId(3L), - null, null); // 最后返回 null 的目的,看看会不会重复调用 - // mock 方法(部门) - DeptDO deptDO = randomPojo(DeptDO.class); - when(deptService.getChildDeptIdListFromCache(eq(3L))).thenReturn(singleton(deptDO.getId())); - - // 调用 - DeptDataPermissionRespDTO result = permissionService.getDeptDataPermission(userId); - // 断言 - assertFalse(result.getAll()); - assertFalse(result.getSelf()); - assertEquals(2, result.getDeptIds().size()); - assertTrue(CollUtil.contains(result.getDeptIds(), deptDO.getId())); - assertTrue(CollUtil.contains(result.getDeptIds(), 3L)); - } - } - - @Test - public void testGetDeptDataPermission_Self() { - try (MockedStatic springUtilMockedStatic = mockStatic(SpringUtil.class)) { - springUtilMockedStatic.when(() -> SpringUtil.getBean(eq(PermissionServiceImpl.class))) - .thenReturn(permissionService); - - // 准备参数 - Long userId = 1L; - // mock 用户的角色编号 - userRoleMapper.insert(randomPojo(UserRoleDO.class).setUserId(userId).setRoleId(2L)); - // mock 获得用户的角色 - RoleDO roleDO = randomPojo(RoleDO.class, o -> o.setDataScope(DataScopeEnum.SELF.getScope()) - .setStatus(CommonStatusEnum.ENABLE.getStatus())); - when(roleService.getRoleListFromCache(eq(singleton(2L)))).thenReturn(toList(roleDO)); - - // 调用 - DeptDataPermissionRespDTO result = permissionService.getDeptDataPermission(userId); - // 断言 - assertFalse(result.getAll()); - assertTrue(result.getSelf()); - assertTrue(CollUtil.isEmpty(result.getDeptIds())); - } - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/permission/RoleServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/permission/RoleServiceImplTest.java deleted file mode 100644 index 3edec3e9..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/permission/RoleServiceImplTest.java +++ /dev/null @@ -1,386 +0,0 @@ -package com.win.module.system.service.permission; - -import cn.hutool.extra.spring.SpringUtil; -import com.win.framework.common.enums.CommonStatusEnum; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.controller.admin.permission.vo.role.RoleCreateReqVO; -import com.win.module.system.controller.admin.permission.vo.role.RoleExportReqVO; -import com.win.module.system.controller.admin.permission.vo.role.RolePageReqVO; -import com.win.module.system.controller.admin.permission.vo.role.RoleUpdateReqVO; -import com.win.module.system.dal.dataobject.permission.RoleDO; -import com.win.module.system.dal.mysql.permission.RoleMapper; -import com.win.module.system.enums.permission.DataScopeEnum; -import com.win.module.system.enums.permission.RoleTypeEnum; -import org.junit.jupiter.api.Test; -import org.mockito.MockedStatic; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.Collection; -import java.util.List; -import java.util.Set; - -import static cn.hutool.core.util.RandomUtil.randomEle; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.*; -import static com.win.module.system.enums.ErrorCodeConstants.*; -import static java.util.Collections.singleton; -import static java.util.Collections.singletonList; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.mockStatic; -import static org.mockito.Mockito.verify; - -@Import(RoleServiceImpl.class) -public class RoleServiceImplTest extends BaseDbUnitTest { - - @Resource - private RoleServiceImpl roleService; - - @Resource - private RoleMapper roleMapper; - - @MockBean - private PermissionService permissionService; - - @Test - public void testCreateRole() { - // 准备参数 - RoleCreateReqVO reqVO = randomPojo(RoleCreateReqVO.class); - - // 调用 - Long roleId = roleService.createRole(reqVO, null); - // 断言 - RoleDO roleDO = roleMapper.selectById(roleId); - assertPojoEquals(reqVO, roleDO); - assertEquals(RoleTypeEnum.CUSTOM.getType(), roleDO.getType()); - assertEquals(CommonStatusEnum.ENABLE.getStatus(), roleDO.getStatus()); - assertEquals(DataScopeEnum.ALL.getScope(), roleDO.getDataScope()); - } - - @Test - public void testUpdateRole() { - // mock 数据 - RoleDO roleDO = randomPojo(RoleDO.class, o -> o.setType(RoleTypeEnum.CUSTOM.getType())); - roleMapper.insert(roleDO); - // 准备参数 - Long id = roleDO.getId(); - RoleUpdateReqVO reqVO = randomPojo(RoleUpdateReqVO.class, o -> o.setId(id)); - - // 调用 - roleService.updateRole(reqVO); - // 断言 - RoleDO newRoleDO = roleMapper.selectById(id); - assertPojoEquals(reqVO, newRoleDO); - } - - @Test - public void testUpdateRoleStatus() { - // mock 数据 - RoleDO roleDO = randomPojo(RoleDO.class, o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus()) - .setType(RoleTypeEnum.CUSTOM.getType())); - roleMapper.insert(roleDO); - - // 准备参数 - Long roleId = roleDO.getId(); - - // 调用 - roleService.updateRoleStatus(roleId, CommonStatusEnum.DISABLE.getStatus()); - // 断言 - RoleDO dbRoleDO = roleMapper.selectById(roleId); - assertEquals(CommonStatusEnum.DISABLE.getStatus(), dbRoleDO.getStatus()); - } - - @Test - public void testUpdateRoleDataScope() { - // mock 数据 - RoleDO roleDO = randomPojo(RoleDO.class, o -> o.setType(RoleTypeEnum.CUSTOM.getType())); - roleMapper.insert(roleDO); - // 准备参数 - Long id = roleDO.getId(); - Integer dataScope = randomEle(DataScopeEnum.values()).getScope(); - Set dataScopeRoleIds = randomSet(Long.class); - - // 调用 - roleService.updateRoleDataScope(id, dataScope, dataScopeRoleIds); - // 断言 - RoleDO dbRoleDO = roleMapper.selectById(id); - assertEquals(dataScope, dbRoleDO.getDataScope()); - assertEquals(dataScopeRoleIds, dbRoleDO.getDataScopeDeptIds()); - } - - @Test - public void testDeleteRole() { - // mock 数据 - RoleDO roleDO = randomPojo(RoleDO.class, o -> o.setType(RoleTypeEnum.CUSTOM.getType())); - roleMapper.insert(roleDO); - // 参数准备 - Long id = roleDO.getId(); - - // 调用 - roleService.deleteRole(id); - // 断言 - assertNull(roleMapper.selectById(id)); - // verify 删除相关数据 - verify(permissionService).processRoleDeleted(id); - } - - @Test - public void testValidateRoleDuplicate_success() { - // 调用,不会抛异常 - roleService.validateRoleDuplicate(randomString(), randomString(), null); - } - - @Test - public void testValidateRoleDuplicate_nameDuplicate() { - // mock 数据 - RoleDO roleDO = randomPojo(RoleDO.class, o -> o.setName("role_name")); - roleMapper.insert(roleDO); - // 准备参数 - String name = "role_name"; - - // 调用,并断言异常 - assertServiceException(() -> roleService.validateRoleDuplicate(name, randomString(), null), - ROLE_NAME_DUPLICATE, name); - } - - @Test - public void testValidateRoleDuplicate_codeDuplicate() { - // mock 数据 - RoleDO roleDO = randomPojo(RoleDO.class, o -> o.setCode("code")); - roleMapper.insert(roleDO); - // 准备参数 - String code = "code"; - - // 调用,并断言异常 - assertServiceException(() -> roleService.validateRoleDuplicate(randomString(), code, null), - ROLE_CODE_DUPLICATE, code); - } - - @Test - public void testValidateUpdateRole_success() { - RoleDO roleDO = randomPojo(RoleDO.class); - roleMapper.insert(roleDO); - // 准备参数 - Long id = roleDO.getId(); - - // 调用,无异常 - roleService.validateRoleForUpdate(id); - } - - @Test - public void testValidateUpdateRole_roleIdNotExist() { - assertServiceException(() -> roleService.validateRoleForUpdate(randomLongId()), ROLE_NOT_EXISTS); - } - - @Test - public void testValidateUpdateRole_systemRoleCanNotBeUpdate() { - RoleDO roleDO = randomPojo(RoleDO.class, o -> o.setType(RoleTypeEnum.SYSTEM.getType())); - roleMapper.insert(roleDO); - // 准备参数 - Long id = roleDO.getId(); - - assertServiceException(() -> roleService.validateRoleForUpdate(id), - ROLE_CAN_NOT_UPDATE_SYSTEM_TYPE_ROLE); - } - - @Test - public void testGetRole() { - // mock 数据 - RoleDO roleDO = randomPojo(RoleDO.class); - roleMapper.insert(roleDO); - // 参数准备 - Long id = roleDO.getId(); - - // 调用 - RoleDO dbRoleDO = roleService.getRole(id); - // 断言 - assertPojoEquals(roleDO, dbRoleDO); - } - - @Test - public void testGetRoleFromCache() { - // mock 数据(缓存) - RoleDO roleDO = randomPojo(RoleDO.class); - roleMapper.insert(roleDO); - // 参数准备 - Long id = roleDO.getId(); - - // 调用 - RoleDO dbRoleDO = roleService.getRoleFromCache(id); - // 断言 - assertPojoEquals(roleDO, dbRoleDO); - } - - @Test - public void testGetRoleListByStatus() { - // mock 数据 - RoleDO dbRole01 = randomPojo(RoleDO.class, o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus())); - roleMapper.insert(dbRole01); - RoleDO dbRole02 = randomPojo(RoleDO.class, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())); - roleMapper.insert(dbRole02); - - // 调用 - List list = roleService.getRoleListByStatus( - singleton(CommonStatusEnum.ENABLE.getStatus())); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(dbRole01, list.get(0)); - } - - @Test - public void testGetRoleListFromCache() { - try (MockedStatic springUtilMockedStatic = mockStatic(SpringUtil.class)) { - springUtilMockedStatic.when(() -> SpringUtil.getBean(eq(RoleServiceImpl.class))) - .thenReturn(roleService); - - // mock 数据 - RoleDO dbRole = randomPojo(RoleDO.class, o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus())); - roleMapper.insert(dbRole); - // 测试 id 不匹配 - roleMapper.insert(cloneIgnoreId(dbRole, o -> {})); - // 准备参数 - Collection ids = singleton(dbRole.getId()); - - // 调用 - List list = roleService.getRoleListFromCache(ids); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(dbRole, list.get(0)); - } - } - - @Test - public void testGetRoleList() { - // mock 数据 - RoleDO dbRole = randomPojo(RoleDO.class, o -> { // 等会查询到 - o.setName("土豆"); - o.setCode("tudou"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setCreateTime(buildTime(2022, 2, 8)); - }); - roleMapper.insert(dbRole); - // 测试 name 不匹配 - roleMapper.insert(cloneIgnoreId(dbRole, o -> o.setName("红薯"))); - // 测试 code 不匹配 - roleMapper.insert(cloneIgnoreId(dbRole, o -> o.setCode("hong"))); - // 测试 createTime 不匹配 - roleMapper.insert(cloneIgnoreId(dbRole, o -> o.setCreateTime(buildTime(2022, 2, 16)))); - // 准备参数 - RoleExportReqVO reqVO = new RoleExportReqVO(); - reqVO.setName("土豆"); - reqVO.setCode("tu"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - reqVO.setCreateTime(buildBetweenTime(2022, 2, 1, 2022, 2, 12)); - - // 调用 - List list = roleService.getRoleList(reqVO); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(dbRole, list.get(0)); - } - - @Test - public void testGetRolePage() { - // mock 数据 - RoleDO dbRole = randomPojo(RoleDO.class, o -> { // 等会查询到 - o.setName("土豆"); - o.setCode("tudou"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setCreateTime(buildTime(2022, 2, 8)); - }); - roleMapper.insert(dbRole); - // 测试 name 不匹配 - roleMapper.insert(cloneIgnoreId(dbRole, o -> o.setName("红薯"))); - // 测试 code 不匹配 - roleMapper.insert(cloneIgnoreId(dbRole, o -> o.setCode("hong"))); - // 测试 createTime 不匹配 - roleMapper.insert(cloneIgnoreId(dbRole, o -> o.setCreateTime(buildTime(2022, 2, 16)))); - // 准备参数 - RolePageReqVO reqVO = new RolePageReqVO(); - reqVO.setName("土豆"); - reqVO.setCode("tu"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - reqVO.setCreateTime(buildBetweenTime(2022, 2, 1, 2022, 2, 12)); - - // 调用 - PageResult pageResult = roleService.getRolePage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbRole, pageResult.getList().get(0)); - } - - @Test - public void testHasAnySuperAdmin_true() { - try (MockedStatic springUtilMockedStatic = mockStatic(SpringUtil.class)) { - springUtilMockedStatic.when(() -> SpringUtil.getBean(eq(RoleServiceImpl.class))) - .thenReturn(roleService); - - // mock 数据 - RoleDO dbRole = randomPojo(RoleDO.class).setCode("super_admin"); - roleMapper.insert(dbRole); - // 准备参数 - Long id = dbRole.getId(); - - // 调用,并调用 - assertTrue(roleService.hasAnySuperAdmin(singletonList(id))); - } - } - - @Test - public void testHasAnySuperAdmin_false() { - try (MockedStatic springUtilMockedStatic = mockStatic(SpringUtil.class)) { - springUtilMockedStatic.when(() -> SpringUtil.getBean(eq(RoleServiceImpl.class))) - .thenReturn(roleService); - - // mock 数据 - RoleDO dbRole = randomPojo(RoleDO.class).setCode("tenant_admin"); - roleMapper.insert(dbRole); - // 准备参数 - Long id = dbRole.getId(); - - // 调用,并调用 - assertFalse(roleService.hasAnySuperAdmin(singletonList(id))); - } - } - - @Test - public void testValidateRoleList_success() { - // mock 数据 - RoleDO roleDO = randomPojo(RoleDO.class, o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus())); - roleMapper.insert(roleDO); - // 准备参数 - List ids = singletonList(roleDO.getId()); - - // 调用,无需断言 - roleService.validateRoleList(ids); - } - - @Test - public void testValidateRoleList_notFound() { - // 准备参数 - List ids = singletonList(randomLongId()); - - // 调用, 并断言异常 - assertServiceException(() -> roleService.validateRoleList(ids), ROLE_NOT_EXISTS); - } - - @Test - public void testValidateRoleList_notEnable() { - // mock 数据 - RoleDO RoleDO = randomPojo(RoleDO.class, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())); - roleMapper.insert(RoleDO); - // 准备参数 - List ids = singletonList(RoleDO.getId()); - - // 调用, 并断言异常 - assertServiceException(() -> roleService.validateRoleList(ids), ROLE_IS_DISABLE, RoleDO.getName()); - } -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/sensitiveword/SensitiveWordServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/sensitiveword/SensitiveWordServiceImplTest.java deleted file mode 100644 index db82787c..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/sensitiveword/SensitiveWordServiceImplTest.java +++ /dev/null @@ -1,267 +0,0 @@ -package com.win.module.system.service.sensitiveword; - -import com.win.framework.common.enums.CommonStatusEnum; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.common.util.collection.SetUtils; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.controller.admin.sensitiveword.vo.SensitiveWordCreateReqVO; -import com.win.module.system.controller.admin.sensitiveword.vo.SensitiveWordExportReqVO; -import com.win.module.system.controller.admin.sensitiveword.vo.SensitiveWordPageReqVO; -import com.win.module.system.controller.admin.sensitiveword.vo.SensitiveWordUpdateReqVO; -import com.win.module.system.dal.dataobject.sensitiveword.SensitiveWordDO; -import com.win.module.system.dal.mysql.sensitiveword.SensitiveWordMapper; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.Arrays; -import java.util.List; - -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.randomLongId; -import static com.win.framework.test.core.util.RandomUtils.randomPojo; -import static com.win.module.system.enums.ErrorCodeConstants.SENSITIVE_WORD_NOT_EXISTS; -import static java.util.Collections.singletonList; -import static org.junit.jupiter.api.Assertions.*; - -/** - * {@link SensitiveWordServiceImpl} 的单元测试类 - * - * @author 永不言败 - */ -@Import(SensitiveWordServiceImpl.class) -public class SensitiveWordServiceImplTest extends BaseDbUnitTest { - - @Resource - private SensitiveWordServiceImpl sensitiveWordService; - - @Resource - private SensitiveWordMapper sensitiveWordMapper; - - @Test - public void testInitLocalCache() { - SensitiveWordDO wordDO1 = randomPojo(SensitiveWordDO.class, o -> o.setName("傻瓜") - .setTags(singletonList("论坛")).setStatus(CommonStatusEnum.ENABLE.getStatus())); - sensitiveWordMapper.insert(wordDO1); - SensitiveWordDO wordDO2 = randomPojo(SensitiveWordDO.class, o -> o.setName("笨蛋") - .setTags(singletonList("蔬菜")).setStatus(CommonStatusEnum.ENABLE.getStatus())); - sensitiveWordMapper.insert(wordDO2); - - // 调用 - sensitiveWordService.initLocalCache(); - // 断言 sensitiveWordTagsCache 缓存 - assertEquals(SetUtils.asSet("论坛", "蔬菜"), sensitiveWordService.getSensitiveWordTagSet()); - // 断言 sensitiveWordCache - assertEquals(2, sensitiveWordService.getSensitiveWordCache().size()); - assertPojoEquals(wordDO1, sensitiveWordService.getSensitiveWordCache().get(0)); - assertPojoEquals(wordDO2, sensitiveWordService.getSensitiveWordCache().get(1)); - // 断言 tagSensitiveWordTries 缓存 - assertNotNull(sensitiveWordService.getDefaultSensitiveWordTrie()); - assertEquals(2, sensitiveWordService.getTagSensitiveWordTries().size()); - assertNotNull(sensitiveWordService.getTagSensitiveWordTries().get("论坛")); - assertNotNull(sensitiveWordService.getTagSensitiveWordTries().get("蔬菜")); - } - - @Test - public void testCreateSensitiveWord_success() { - // 准备参数 - SensitiveWordCreateReqVO reqVO = randomPojo(SensitiveWordCreateReqVO.class); - - // 调用 - Long sensitiveWordId = sensitiveWordService.createSensitiveWord(reqVO); - // 断言 - assertNotNull(sensitiveWordId); - // 校验记录的属性是否正确 - SensitiveWordDO sensitiveWord = sensitiveWordMapper.selectById(sensitiveWordId); - assertPojoEquals(reqVO, sensitiveWord); - } - - @Test - public void testUpdateSensitiveWord_success() { - // mock 数据 - SensitiveWordDO dbSensitiveWord = randomPojo(SensitiveWordDO.class); - sensitiveWordMapper.insert(dbSensitiveWord);// @Sql: 先插入出一条存在的数据 - // 准备参数 - SensitiveWordUpdateReqVO reqVO = randomPojo(SensitiveWordUpdateReqVO.class, o -> { - o.setId(dbSensitiveWord.getId()); // 设置更新的 ID - }); - - // 调用 - sensitiveWordService.updateSensitiveWord(reqVO); - // 校验是否更新正确 - SensitiveWordDO sensitiveWord = sensitiveWordMapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, sensitiveWord); - } - - @Test - public void testUpdateSensitiveWord_notExists() { - // 准备参数 - SensitiveWordUpdateReqVO reqVO = randomPojo(SensitiveWordUpdateReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> sensitiveWordService.updateSensitiveWord(reqVO), SENSITIVE_WORD_NOT_EXISTS); - } - - @Test - public void testDeleteSensitiveWord_success() { - // mock 数据 - SensitiveWordDO dbSensitiveWord = randomPojo(SensitiveWordDO.class); - sensitiveWordMapper.insert(dbSensitiveWord);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbSensitiveWord.getId(); - - // 调用 - sensitiveWordService.deleteSensitiveWord(id); - // 校验数据不存在了 - assertNull(sensitiveWordMapper.selectById(id)); - } - - @Test - public void testDeleteSensitiveWord_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> sensitiveWordService.deleteSensitiveWord(id), SENSITIVE_WORD_NOT_EXISTS); - } - - @Test - public void testGetSensitiveWord() { - // mock 数据 - SensitiveWordDO sensitiveWord = randomPojo(SensitiveWordDO.class); - sensitiveWordMapper.insert(sensitiveWord); - // 准备参数 - Long id = sensitiveWord.getId(); - - // 调用 - SensitiveWordDO dbSensitiveWord = sensitiveWordService.getSensitiveWord(id); - // 断言 - assertPojoEquals(sensitiveWord, dbSensitiveWord); - } - - @Test - public void testGetSensitiveWordList() { - // mock 数据 - SensitiveWordDO sensitiveWord01 = randomPojo(SensitiveWordDO.class); - sensitiveWordMapper.insert(sensitiveWord01); - SensitiveWordDO sensitiveWord02 = randomPojo(SensitiveWordDO.class); - sensitiveWordMapper.insert(sensitiveWord02); - - // 调用 - List list = sensitiveWordService.getSensitiveWordList(); - // 断言 - assertEquals(2, list.size()); - assertEquals(sensitiveWord01, list.get(0)); - assertEquals(sensitiveWord02, list.get(1)); - } - - @Test - public void testGetSensitiveWordPage() { - // mock 数据 - SensitiveWordDO dbSensitiveWord = randomPojo(SensitiveWordDO.class, o -> { // 等会查询到 - o.setName("笨蛋"); - o.setTags(Arrays.asList("论坛", "蔬菜")); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setCreateTime(buildTime(2022, 2, 8)); - }); - sensitiveWordMapper.insert(dbSensitiveWord); - // 测试 name 不匹配 - sensitiveWordMapper.insert(cloneIgnoreId(dbSensitiveWord, o -> o.setName("傻瓜"))); - // 测试 tags 不匹配 - sensitiveWordMapper.insert(cloneIgnoreId(dbSensitiveWord, o -> o.setTags(Arrays.asList("短信", "日用品")))); - // 测试 createTime 不匹配 - sensitiveWordMapper.insert(cloneIgnoreId(dbSensitiveWord, o -> o.setCreateTime(buildTime(2022, 2, 16)))); - // 准备参数 - SensitiveWordPageReqVO reqVO = new SensitiveWordPageReqVO(); - reqVO.setName("笨"); - reqVO.setTag("论坛"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - reqVO.setCreateTime(buildBetweenTime(2022, 2, 1, 2022, 2, 12)); - - // 调用 - PageResult pageResult = sensitiveWordService.getSensitiveWordPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbSensitiveWord, pageResult.getList().get(0)); - } - - @Test - public void testGetSensitiveWordList_export() { - // mock 数据 - SensitiveWordDO dbSensitiveWord = randomPojo(SensitiveWordDO.class, o -> { // 等会查询到 - o.setName("笨蛋"); - o.setTags(Arrays.asList("论坛", "蔬菜")); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setCreateTime(buildTime(2022, 2, 8)); - }); - sensitiveWordMapper.insert(dbSensitiveWord); - // 测试 name 不匹配 - sensitiveWordMapper.insert(cloneIgnoreId(dbSensitiveWord, o -> o.setName("傻瓜"))); - // 测试 tags 不匹配 - sensitiveWordMapper.insert(cloneIgnoreId(dbSensitiveWord, o -> o.setTags(Arrays.asList("短信", "日用品")))); - // 测试 createTime 不匹配 - sensitiveWordMapper.insert(cloneIgnoreId(dbSensitiveWord, o -> o.setCreateTime(buildTime(2022, 2, 16)))); - // 准备参数 - SensitiveWordExportReqVO reqVO = new SensitiveWordExportReqVO(); - reqVO.setName("笨"); - reqVO.setTag("论坛"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - reqVO.setCreateTime(buildBetweenTime(2022, 2, 1, 2022, 2, 12)); - - // 调用 - List list = sensitiveWordService.getSensitiveWordList(reqVO); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(dbSensitiveWord, list.get(0)); - } - - @Test - public void testValidateText_noTag() { - testInitLocalCache(); - // 准备参数 - String text = "你是傻瓜,你是笨蛋"; - - // 调用 - List result = sensitiveWordService.validateText(text, null); - // 断言 - assertEquals(Arrays.asList("傻瓜", "笨蛋"), result); - } - - @Test - public void testValidateText_hasTag() { - testInitLocalCache(); - // 准备参数 - String text = "你是傻瓜,你是笨蛋"; - - // 调用 - List result = sensitiveWordService.validateText(text, singletonList("论坛")); - // 断言 - assertEquals(singletonList("傻瓜"), result); - } - - @Test - public void testIsTestValid_noTag() { - testInitLocalCache(); - // 准备参数 - String text = "你是傻瓜,你是笨蛋"; - - // 调用,断言 - assertFalse(sensitiveWordService.isTextValid(text, null)); - } - - @Test - public void testIsTestValid_hasTag() { - testInitLocalCache(); - // 准备参数 - String text = "你是傻瓜,你是笨蛋"; - - // 调用,断言 - assertFalse(sensitiveWordService.isTextValid(text, singletonList("论坛"))); - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/sms/SmsChannelServiceTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/sms/SmsChannelServiceTest.java deleted file mode 100644 index 1d517120..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/sms/SmsChannelServiceTest.java +++ /dev/null @@ -1,236 +0,0 @@ -package com.win.module.system.service.sms; - -import com.win.framework.common.enums.CommonStatusEnum; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.sms.core.client.SmsClient; -import com.win.framework.sms.core.client.SmsClientFactory; -import com.win.framework.sms.core.property.SmsChannelProperties; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.controller.admin.sms.vo.channel.SmsChannelCreateReqVO; -import com.win.module.system.controller.admin.sms.vo.channel.SmsChannelPageReqVO; -import com.win.module.system.controller.admin.sms.vo.channel.SmsChannelUpdateReqVO; -import com.win.module.system.convert.sms.SmsChannelConvert; -import com.win.module.system.dal.dataobject.sms.SmsChannelDO; -import com.win.module.system.dal.mysql.sms.SmsChannelMapper; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.List; - -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.*; -import static com.win.module.system.enums.ErrorCodeConstants.SMS_CHANNEL_HAS_CHILDREN; -import static com.win.module.system.enums.ErrorCodeConstants.SMS_CHANNEL_NOT_EXISTS; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.*; - -@Import(SmsChannelServiceImpl.class) -public class SmsChannelServiceTest extends BaseDbUnitTest { - - @Resource - private SmsChannelServiceImpl smsChannelService; - - @Resource - private SmsChannelMapper smsChannelMapper; - - @MockBean - private SmsClientFactory smsClientFactory; - @MockBean - private SmsTemplateService smsTemplateService; - - @Test - public void testCreateSmsChannel_success() { - // 准备参数 - SmsChannelCreateReqVO reqVO = randomPojo(SmsChannelCreateReqVO.class, o -> o.setStatus(randomCommonStatus())); - - // 调用 - Long smsChannelId = smsChannelService.createSmsChannel(reqVO); - // 断言 - assertNotNull(smsChannelId); - // 校验记录的属性是否正确 - SmsChannelDO smsChannel = smsChannelMapper.selectById(smsChannelId); - assertPojoEquals(reqVO, smsChannel); - // 断言 cache - assertNull(smsChannelService.getIdClientCache().getIfPresent(smsChannel.getId())); - assertNull(smsChannelService.getCodeClientCache().getIfPresent(smsChannel.getCode())); - } - - @Test - public void testUpdateSmsChannel_success() { - // mock 数据 - SmsChannelDO dbSmsChannel = randomPojo(SmsChannelDO.class); - smsChannelMapper.insert(dbSmsChannel);// @Sql: 先插入出一条存在的数据 - // 准备参数 - SmsChannelUpdateReqVO reqVO = randomPojo(SmsChannelUpdateReqVO.class, o -> { - o.setId(dbSmsChannel.getId()); // 设置更新的 ID - o.setStatus(randomCommonStatus()); - o.setCallbackUrl(randomString()); - }); - - // 调用 - smsChannelService.updateSmsChannel(reqVO); - // 校验是否更新正确 - SmsChannelDO smsChannel = smsChannelMapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, smsChannel); - // 断言 cache - assertNull(smsChannelService.getIdClientCache().getIfPresent(smsChannel.getId())); - assertNull(smsChannelService.getCodeClientCache().getIfPresent(smsChannel.getCode())); - } - - @Test - public void testUpdateSmsChannel_notExists() { - // 准备参数 - SmsChannelUpdateReqVO reqVO = randomPojo(SmsChannelUpdateReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> smsChannelService.updateSmsChannel(reqVO), SMS_CHANNEL_NOT_EXISTS); - } - - @Test - public void testDeleteSmsChannel_success() { - // mock 数据 - SmsChannelDO dbSmsChannel = randomPojo(SmsChannelDO.class); - smsChannelMapper.insert(dbSmsChannel);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbSmsChannel.getId(); - - // 调用 - smsChannelService.deleteSmsChannel(id); - // 校验数据不存在了 - assertNull(smsChannelMapper.selectById(id)); - // 断言 cache - assertNull(smsChannelService.getIdClientCache().getIfPresent(dbSmsChannel.getId())); - assertNull(smsChannelService.getCodeClientCache().getIfPresent(dbSmsChannel.getCode())); - } - - @Test - public void testDeleteSmsChannel_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> smsChannelService.deleteSmsChannel(id), SMS_CHANNEL_NOT_EXISTS); - } - - @Test - public void testDeleteSmsChannel_hasChildren() { - // mock 数据 - SmsChannelDO dbSmsChannel = randomPojo(SmsChannelDO.class); - smsChannelMapper.insert(dbSmsChannel);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbSmsChannel.getId(); - // mock 方法 - when(smsTemplateService.countByChannelId(eq(id))).thenReturn(10L); - - // 调用, 并断言异常 - assertServiceException(() -> smsChannelService.deleteSmsChannel(id), SMS_CHANNEL_HAS_CHILDREN); - } - - @Test - public void testGetSmsChannel() { - // mock 数据 - SmsChannelDO dbSmsChannel = randomPojo(SmsChannelDO.class); - smsChannelMapper.insert(dbSmsChannel); // @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbSmsChannel.getId(); - - // 调用,并断言 - assertPojoEquals(dbSmsChannel, smsChannelService.getSmsChannel(id)); - } - - @Test - public void testGetSmsChannelList() { - // mock 数据 - SmsChannelDO dbSmsChannel01 = randomPojo(SmsChannelDO.class); - smsChannelMapper.insert(dbSmsChannel01); - SmsChannelDO dbSmsChannel02 = randomPojo(SmsChannelDO.class); - smsChannelMapper.insert(dbSmsChannel02); - // 准备参数 - - // 调用 - List list = smsChannelService.getSmsChannelList(); - // 断言 - assertEquals(2, list.size()); - assertPojoEquals(dbSmsChannel01, list.get(0)); - assertPojoEquals(dbSmsChannel02, list.get(1)); - } - - @Test - public void testGetSmsChannelPage() { - // mock 数据 - SmsChannelDO dbSmsChannel = randomPojo(SmsChannelDO.class, o -> { // 等会查询到 - o.setSignature("芋道源码"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setCreateTime(buildTime(2020, 12, 12)); - }); - smsChannelMapper.insert(dbSmsChannel); - // 测试 signature 不匹配 - smsChannelMapper.insert(cloneIgnoreId(dbSmsChannel, o -> o.setSignature("源码"))); - // 测试 status 不匹配 - smsChannelMapper.insert(cloneIgnoreId(dbSmsChannel, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 测试 createTime 不匹配 - smsChannelMapper.insert(cloneIgnoreId(dbSmsChannel, o -> o.setCreateTime(buildTime(2020, 11, 11)))); - // 准备参数 - SmsChannelPageReqVO reqVO = new SmsChannelPageReqVO(); - reqVO.setSignature("芋道"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - reqVO.setCreateTime(buildBetweenTime(2020, 12, 1, 2020, 12, 24)); - - // 调用 - PageResult pageResult = smsChannelService.getSmsChannelPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbSmsChannel, pageResult.getList().get(0)); - } - - @Test - public void testGetSmsClient_id() { - // mock 数据 - SmsChannelDO channel = randomPojo(SmsChannelDO.class); - smsChannelMapper.insert(channel); - // mock 参数 - Long id = channel.getId(); - // mock 方法 - SmsClient mockClient = mock(SmsClient.class); - when(smsClientFactory.getSmsClient(eq(id))).thenReturn(mockClient); - - // 调用 - SmsClient client = smsChannelService.getSmsClient(id); - // 断言 - assertSame(client, mockClient); - verify(smsClientFactory).createOrUpdateSmsClient(argThat(arg -> { - SmsChannelProperties properties = SmsChannelConvert.INSTANCE.convert02(channel); - return properties.equals(arg); - })); - } - - @Test - public void testGetSmsClient_code() { - // mock 数据 - SmsChannelDO channel = randomPojo(SmsChannelDO.class); - smsChannelMapper.insert(channel); - // mock 参数 - String code = channel.getCode(); - // mock 方法 - SmsClient mockClient = mock(SmsClient.class); - when(smsClientFactory.getSmsClient(eq(code))).thenReturn(mockClient); - - // 调用 - SmsClient client = smsChannelService.getSmsClient(code); - // 断言 - assertSame(client, mockClient); - verify(smsClientFactory).createOrUpdateSmsClient(argThat(arg -> { - SmsChannelProperties properties = SmsChannelConvert.INSTANCE.convert02(channel); - return properties.equals(arg); - })); - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/sms/SmsCodeServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/sms/SmsCodeServiceImplTest.java deleted file mode 100644 index f54474af..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/sms/SmsCodeServiceImplTest.java +++ /dev/null @@ -1,209 +0,0 @@ -package com.win.module.system.service.sms; - -import cn.hutool.core.map.MapUtil; -import com.win.framework.mybatis.core.enums.SqlConstants; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.api.sms.dto.code.SmsCodeSendReqDTO; -import com.win.module.system.api.sms.dto.code.SmsCodeUseReqDTO; -import com.win.module.system.api.sms.dto.code.SmsCodeValidateReqDTO; -import com.win.module.system.dal.dataobject.sms.SmsCodeDO; -import com.win.module.system.dal.mysql.sms.SmsCodeMapper; -import com.win.module.system.enums.sms.SmsSceneEnum; -import com.win.module.system.framework.sms.SmsCodeProperties; -import com.baomidou.mybatisplus.annotation.DbType; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.time.Duration; -import java.time.LocalDateTime; - -import static cn.hutool.core.util.RandomUtil.randomEle; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.randomPojo; -import static com.win.module.system.enums.ErrorCodeConstants.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.ArgumentMatchers.isNull; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -@Import(SmsCodeServiceImpl.class) -public class SmsCodeServiceImplTest extends BaseDbUnitTest { - - @Resource - private SmsCodeServiceImpl smsCodeService; - - @Resource - private SmsCodeMapper smsCodeMapper; - - @MockBean - private SmsCodeProperties smsCodeProperties; - @MockBean - private SmsSendService smsSendService; - - @BeforeEach - public void setUp() { - when(smsCodeProperties.getExpireTimes()).thenReturn(Duration.ofMinutes(5)); - when(smsCodeProperties.getSendFrequency()).thenReturn(Duration.ofMinutes(1)); - when(smsCodeProperties.getSendMaximumQuantityPerDay()).thenReturn(10); - when(smsCodeProperties.getBeginCode()).thenReturn(9999); - when(smsCodeProperties.getEndCode()).thenReturn(9999); - } - - @Test - public void sendSmsCode_success() { - // 准备参数 - SmsCodeSendReqDTO reqDTO = randomPojo(SmsCodeSendReqDTO.class, o -> { - o.setMobile("15601691300"); - o.setScene(SmsSceneEnum.MEMBER_LOGIN.getScene()); - }); - // mock 方法 - SqlConstants.init(DbType.MYSQL); - - // 调用 - smsCodeService.sendSmsCode(reqDTO); - // 断言 code 验证码 - SmsCodeDO smsCodeDO = smsCodeMapper.selectOne(null); - assertPojoEquals(reqDTO, smsCodeDO); - assertEquals("9999", smsCodeDO.getCode()); - assertEquals(1, smsCodeDO.getTodayIndex()); - assertFalse(smsCodeDO.getUsed()); - // 断言调用 - verify(smsSendService).sendSingleSms(eq(reqDTO.getMobile()), isNull(), isNull(), - eq("user-sms-login"), eq(MapUtil.of("code", "9999"))); - } - - @Test - public void sendSmsCode_tooFast() { - // mock 数据 - SmsCodeDO smsCodeDO = randomPojo(SmsCodeDO.class, - o -> o.setMobile("15601691300").setTodayIndex(1)); - smsCodeMapper.insert(smsCodeDO); - // 准备参数 - SmsCodeSendReqDTO reqDTO = randomPojo(SmsCodeSendReqDTO.class, o -> { - o.setMobile("15601691300"); - o.setScene(SmsSceneEnum.MEMBER_LOGIN.getScene()); - }); - // mock 方法 - SqlConstants.init(DbType.MYSQL); - - // 调用,并断言异常 - assertServiceException(() -> smsCodeService.sendSmsCode(reqDTO), - SMS_CODE_SEND_TOO_FAST); - } - - @Test - public void sendSmsCode_exceedDay() { - // mock 数据 - SmsCodeDO smsCodeDO = randomPojo(SmsCodeDO.class, - o -> o.setMobile("15601691300").setTodayIndex(10).setCreateTime(LocalDateTime.now())); - smsCodeMapper.insert(smsCodeDO); - // 准备参数 - SmsCodeSendReqDTO reqDTO = randomPojo(SmsCodeSendReqDTO.class, o -> { - o.setMobile("15601691300"); - o.setScene(SmsSceneEnum.MEMBER_LOGIN.getScene()); - }); - // mock 方法 - SqlConstants.init(DbType.MYSQL); - when(smsCodeProperties.getSendFrequency()).thenReturn(Duration.ofMillis(0)); - - // 调用,并断言异常 - assertServiceException(() -> smsCodeService.sendSmsCode(reqDTO), - SMS_CODE_EXCEED_SEND_MAXIMUM_QUANTITY_PER_DAY); - } - - @Test - public void testUseSmsCode_success() { - // 准备参数 - SmsCodeUseReqDTO reqDTO = randomPojo(SmsCodeUseReqDTO.class, o -> { - o.setMobile("15601691300"); - o.setScene(randomEle(SmsSceneEnum.values()).getScene()); - }); - // mock 数据 - SqlConstants.init(DbType.MYSQL); - smsCodeMapper.insert(randomPojo(SmsCodeDO.class, o -> { - o.setMobile(reqDTO.getMobile()).setScene(reqDTO.getScene()) - .setCode(reqDTO.getCode()).setUsed(false); - })); - - // 调用 - smsCodeService.useSmsCode(reqDTO); - // 断言 - SmsCodeDO smsCodeDO = smsCodeMapper.selectOne(null); - assertTrue(smsCodeDO.getUsed()); - assertNotNull(smsCodeDO.getUsedTime()); - assertEquals(reqDTO.getUsedIp(), smsCodeDO.getUsedIp()); - } - - @Test - public void validateSmsCode_success() { - // 准备参数 - SmsCodeValidateReqDTO reqDTO = randomPojo(SmsCodeValidateReqDTO.class, o -> { - o.setMobile("15601691300"); - o.setScene(randomEle(SmsSceneEnum.values()).getScene()); - }); - // mock 数据 - SqlConstants.init(DbType.MYSQL); - smsCodeMapper.insert(randomPojo(SmsCodeDO.class, o -> o.setMobile(reqDTO.getMobile()) - .setScene(reqDTO.getScene()).setCode(reqDTO.getCode()).setUsed(false))); - - // 调用 - smsCodeService.validateSmsCode(reqDTO); - } - - @Test - public void validateSmsCode_notFound() { - // 准备参数 - SmsCodeValidateReqDTO reqDTO = randomPojo(SmsCodeValidateReqDTO.class, o -> { - o.setMobile("15601691300"); - o.setScene(randomEle(SmsSceneEnum.values()).getScene()); - }); - // mock 数据 - SqlConstants.init(DbType.MYSQL); - - // 调用,并断言异常 - assertServiceException(() -> smsCodeService.validateSmsCode(reqDTO), - SMS_CODE_NOT_FOUND); - } - - @Test - public void validateSmsCode_expired() { - // 准备参数 - SmsCodeValidateReqDTO reqDTO = randomPojo(SmsCodeValidateReqDTO.class, o -> { - o.setMobile("15601691300"); - o.setScene(randomEle(SmsSceneEnum.values()).getScene()); - }); - // mock 数据 - SqlConstants.init(DbType.MYSQL); - smsCodeMapper.insert(randomPojo(SmsCodeDO.class, o -> o.setMobile(reqDTO.getMobile()) - .setScene(reqDTO.getScene()).setCode(reqDTO.getCode()).setUsed(false) - .setCreateTime(LocalDateTime.now().minusMinutes(6)))); - - // 调用,并断言异常 - assertServiceException(() -> smsCodeService.validateSmsCode(reqDTO), - SMS_CODE_EXPIRED); - } - - @Test - public void validateSmsCode_used() { - // 准备参数 - SmsCodeValidateReqDTO reqDTO = randomPojo(SmsCodeValidateReqDTO.class, o -> { - o.setMobile("15601691300"); - o.setScene(randomEle(SmsSceneEnum.values()).getScene()); - }); - // mock 数据 - SqlConstants.init(DbType.MYSQL); - smsCodeMapper.insert(randomPojo(SmsCodeDO.class, o -> o.setMobile(reqDTO.getMobile()) - .setScene(reqDTO.getScene()).setCode(reqDTO.getCode()).setUsed(true) - .setCreateTime(LocalDateTime.now()))); - - // 调用,并断言异常 - assertServiceException(() -> smsCodeService.validateSmsCode(reqDTO), - SMS_CODE_USED); - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/sms/SmsLogServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/sms/SmsLogServiceImplTest.java deleted file mode 100644 index fe5e9dfb..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/sms/SmsLogServiceImplTest.java +++ /dev/null @@ -1,239 +0,0 @@ -package com.win.module.system.service.sms; - -import cn.hutool.core.map.MapUtil; -import com.win.framework.common.enums.UserTypeEnum; -import com.win.framework.common.pojo.CommonResult; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.common.util.collection.ArrayUtils; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.controller.admin.sms.vo.log.SmsLogExportReqVO; -import com.win.module.system.controller.admin.sms.vo.log.SmsLogPageReqVO; -import com.win.module.system.dal.dataobject.sms.SmsLogDO; -import com.win.module.system.dal.dataobject.sms.SmsTemplateDO; -import com.win.module.system.dal.mysql.sms.SmsLogMapper; -import com.win.module.system.enums.sms.SmsReceiveStatusEnum; -import com.win.module.system.enums.sms.SmsSendStatusEnum; -import com.win.module.system.enums.sms.SmsTemplateTypeEnum; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.time.LocalDateTime; -import java.util.List; -import java.util.Map; -import java.util.function.Consumer; - -import static cn.hutool.core.util.RandomUtil.randomBoolean; -import static cn.hutool.core.util.RandomUtil.randomEle; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.RandomUtils.*; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - -@Import(SmsLogServiceImpl.class) -public class SmsLogServiceImplTest extends BaseDbUnitTest { - - @Resource - private SmsLogServiceImpl smsLogService; - - @Resource - private SmsLogMapper smsLogMapper; - - @Test - public void testGetSmsLogPage() { - // mock 数据 - SmsLogDO dbSmsLog = randomSmsLogDO(o -> { // 等会查询到 - o.setChannelId(1L); - o.setTemplateId(10L); - o.setMobile("15601691300"); - o.setSendStatus(SmsSendStatusEnum.INIT.getStatus()); - o.setSendTime(buildTime(2020, 11, 11)); - o.setReceiveStatus(SmsReceiveStatusEnum.INIT.getStatus()); - o.setReceiveTime(buildTime(2021, 11, 11)); - }); - smsLogMapper.insert(dbSmsLog); - // 测试 channelId 不匹配 - smsLogMapper.insert(cloneIgnoreId(dbSmsLog, o -> o.setChannelId(2L))); - // 测试 templateId 不匹配 - smsLogMapper.insert(cloneIgnoreId(dbSmsLog, o -> o.setTemplateId(20L))); - // 测试 mobile 不匹配 - smsLogMapper.insert(cloneIgnoreId(dbSmsLog, o -> o.setMobile("18818260999"))); - // 测试 sendStatus 不匹配 - smsLogMapper.insert(cloneIgnoreId(dbSmsLog, o -> o.setSendStatus(SmsSendStatusEnum.IGNORE.getStatus()))); - // 测试 sendTime 不匹配 - smsLogMapper.insert(cloneIgnoreId(dbSmsLog, o -> o.setSendTime(buildTime(2020, 12, 12)))); - // 测试 receiveStatus 不匹配 - smsLogMapper.insert(cloneIgnoreId(dbSmsLog, o -> o.setReceiveStatus(SmsReceiveStatusEnum.SUCCESS.getStatus()))); - // 测试 receiveTime 不匹配 - smsLogMapper.insert(cloneIgnoreId(dbSmsLog, o -> o.setReceiveTime(buildTime(2021, 12, 12)))); - // 准备参数 - SmsLogPageReqVO reqVO = new SmsLogPageReqVO(); - reqVO.setChannelId(1L); - reqVO.setTemplateId(10L); - reqVO.setMobile("156"); - reqVO.setSendStatus(SmsSendStatusEnum.INIT.getStatus()); - reqVO.setSendTime(buildBetweenTime(2020, 11, 1, 2020, 11, 30)); - reqVO.setReceiveStatus(SmsReceiveStatusEnum.INIT.getStatus()); - reqVO.setReceiveTime(buildBetweenTime(2021, 11, 1, 2021, 11, 30)); - - // 调用 - PageResult pageResult = smsLogService.getSmsLogPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbSmsLog, pageResult.getList().get(0)); - } - - @Test - public void testGetSmsLogList() { - // mock 数据 - SmsLogDO dbSmsLog = randomSmsLogDO(o -> { // 等会查询到 - o.setChannelId(1L); - o.setTemplateId(10L); - o.setMobile("15601691300"); - o.setSendStatus(SmsSendStatusEnum.INIT.getStatus()); - o.setSendTime(buildTime(2020, 11, 11)); - o.setReceiveStatus(SmsReceiveStatusEnum.INIT.getStatus()); - o.setReceiveTime(buildTime(2021, 11, 11)); - }); - smsLogMapper.insert(dbSmsLog); - // 测试 channelId 不匹配 - smsLogMapper.insert(cloneIgnoreId(dbSmsLog, o -> o.setChannelId(2L))); - // 测试 templateId 不匹配 - smsLogMapper.insert(cloneIgnoreId(dbSmsLog, o -> o.setTemplateId(20L))); - // 测试 mobile 不匹配 - smsLogMapper.insert(cloneIgnoreId(dbSmsLog, o -> o.setMobile("18818260999"))); - // 测试 sendStatus 不匹配 - smsLogMapper.insert(cloneIgnoreId(dbSmsLog, o -> o.setSendStatus(SmsSendStatusEnum.IGNORE.getStatus()))); - // 测试 sendTime 不匹配 - smsLogMapper.insert(cloneIgnoreId(dbSmsLog, o -> o.setSendTime(buildTime(2020, 12, 12)))); - // 测试 receiveStatus 不匹配 - smsLogMapper.insert(cloneIgnoreId(dbSmsLog, o -> o.setReceiveStatus(SmsReceiveStatusEnum.SUCCESS.getStatus()))); - // 测试 receiveTime 不匹配 - smsLogMapper.insert(cloneIgnoreId(dbSmsLog, o -> o.setReceiveTime(buildTime(2021, 12, 12)))); - // 准备参数 - SmsLogExportReqVO reqVO = new SmsLogExportReqVO(); - reqVO.setChannelId(1L); - reqVO.setTemplateId(10L); - reqVO.setMobile("156"); - reqVO.setSendStatus(SmsSendStatusEnum.INIT.getStatus()); - reqVO.setSendTime(buildBetweenTime(2020, 11, 1, 2020, 11, 30)); - reqVO.setReceiveStatus(SmsReceiveStatusEnum.INIT.getStatus()); - reqVO.setReceiveTime(buildBetweenTime(2021, 11, 1, 2021, 11, 30)); - - // 调用 - List list = smsLogService.getSmsLogList(reqVO); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(dbSmsLog, list.get(0)); - } - - @Test - public void testCreateSmsLog() { - // 准备参数 - String mobile = randomString(); - Long userId = randomLongId(); - Integer userType = randomEle(UserTypeEnum.values()).getValue(); - Boolean isSend = randomBoolean(); - SmsTemplateDO templateDO = randomPojo(SmsTemplateDO.class, - o -> o.setType(randomEle(SmsTemplateTypeEnum.values()).getType())); - String templateContent = randomString(); - Map templateParams = randomTemplateParams(); - // mock 方法 - - // 调用 - Long logId = smsLogService.createSmsLog(mobile, userId, userType, isSend, - templateDO, templateContent, templateParams); - // 断言 - SmsLogDO logDO = smsLogMapper.selectById(logId); - assertEquals(isSend ? SmsSendStatusEnum.INIT.getStatus() : SmsSendStatusEnum.IGNORE.getStatus(), - logDO.getSendStatus()); - assertEquals(mobile, logDO.getMobile()); - assertEquals(userType, logDO.getUserType()); - assertEquals(userId, logDO.getUserId()); - assertEquals(templateDO.getId(), logDO.getTemplateId()); - assertEquals(templateDO.getCode(), logDO.getTemplateCode()); - assertEquals(templateDO.getType(), logDO.getTemplateType()); - assertEquals(templateDO.getChannelId(), logDO.getChannelId()); - assertEquals(templateDO.getChannelCode(), logDO.getChannelCode()); - assertEquals(templateContent, logDO.getTemplateContent()); - assertEquals(templateParams, logDO.getTemplateParams()); - assertEquals(SmsReceiveStatusEnum.INIT.getStatus(), logDO.getReceiveStatus()); - } - - @Test - public void testUpdateSmsSendResult() { - // mock 数据 - SmsLogDO dbSmsLog = randomSmsLogDO( - o -> o.setSendStatus(SmsSendStatusEnum.IGNORE.getStatus())); - smsLogMapper.insert(dbSmsLog); - // 准备参数 - Long id = dbSmsLog.getId(); - Integer sendCode = randomInteger(); - String sendMsg = randomString(); - String apiSendCode = randomString(); - String apiSendMsg = randomString(); - String apiRequestId = randomString(); - String apiSerialNo = randomString(); - - // 调用 - smsLogService.updateSmsSendResult(id, sendCode, sendMsg, - apiSendCode, apiSendMsg, apiRequestId, apiSerialNo); - // 断言 - dbSmsLog = smsLogMapper.selectById(id); - assertEquals(CommonResult.isSuccess(sendCode) ? SmsSendStatusEnum.SUCCESS.getStatus() - : SmsSendStatusEnum.FAILURE.getStatus(), dbSmsLog.getSendStatus()); - assertNotNull(dbSmsLog.getSendTime()); - assertEquals(sendMsg, dbSmsLog.getSendMsg()); - assertEquals(apiSendCode, dbSmsLog.getApiSendCode()); - assertEquals(apiSendMsg, dbSmsLog.getApiSendMsg()); - assertEquals(apiRequestId, dbSmsLog.getApiRequestId()); - assertEquals(apiSerialNo, dbSmsLog.getApiSerialNo()); - } - - @Test - public void testUpdateSmsReceiveResult() { - // mock 数据 - SmsLogDO dbSmsLog = randomSmsLogDO( - o -> o.setReceiveStatus(SmsReceiveStatusEnum.INIT.getStatus())); - smsLogMapper.insert(dbSmsLog); - // 准备参数 - Long id = dbSmsLog.getId(); - Boolean success = randomBoolean(); - LocalDateTime receiveTime = randomLocalDateTime(); - String apiReceiveCode = randomString(); - String apiReceiveMsg = randomString(); - - // 调用 - smsLogService.updateSmsReceiveResult(id, success, receiveTime, apiReceiveCode, apiReceiveMsg); - // 断言 - dbSmsLog = smsLogMapper.selectById(id); - assertEquals(success ? SmsReceiveStatusEnum.SUCCESS.getStatus() - : SmsReceiveStatusEnum.FAILURE.getStatus(), dbSmsLog.getReceiveStatus()); - assertEquals(receiveTime, dbSmsLog.getReceiveTime()); - assertEquals(apiReceiveCode, dbSmsLog.getApiReceiveCode()); - assertEquals(apiReceiveMsg, dbSmsLog.getApiReceiveMsg()); - } - - // ========== 随机对象 ========== - - @SafeVarargs - private static SmsLogDO randomSmsLogDO(Consumer... consumers) { - Consumer consumer = (o) -> { - o.setTemplateParams(randomTemplateParams()); - o.setTemplateType(randomEle(SmsTemplateTypeEnum.values()).getType()); // 保证 templateType 的范围 - o.setUserType(randomEle(UserTypeEnum.values()).getValue()); // 保证 userType 的范围 - o.setSendStatus(randomEle(SmsSendStatusEnum.values()).getStatus()); // 保证 sendStatus 的范围 - o.setReceiveStatus(randomEle(SmsReceiveStatusEnum.values()).getStatus()); // 保证 receiveStatus 的范围 - }; - return randomPojo(SmsLogDO.class, ArrayUtils.append(consumer, consumers)); - } - - private static Map randomTemplateParams() { - return MapUtil.builder().put(randomString(), randomString()) - .put(randomString(), randomString()).build(); - } -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/sms/SmsSendServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/sms/SmsSendServiceImplTest.java deleted file mode 100644 index 040cbc35..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/sms/SmsSendServiceImplTest.java +++ /dev/null @@ -1,285 +0,0 @@ -package com.win.module.system.service.sms; - -import cn.hutool.core.map.MapUtil; -import com.win.framework.common.core.KeyValue; -import com.win.framework.common.enums.CommonStatusEnum; -import com.win.framework.common.enums.UserTypeEnum; -import com.win.framework.sms.core.client.SmsClient; -import com.win.framework.sms.core.client.SmsCommonResult; -import com.win.framework.sms.core.client.dto.SmsReceiveRespDTO; -import com.win.framework.sms.core.client.dto.SmsSendRespDTO; -import com.win.framework.test.core.ut.BaseMockitoUnitTest; -import com.win.module.system.dal.dataobject.sms.SmsChannelDO; -import com.win.module.system.dal.dataobject.sms.SmsTemplateDO; -import com.win.module.system.dal.dataobject.user.AdminUserDO; -import com.win.module.system.mq.message.sms.SmsSendMessage; -import com.win.module.system.mq.producer.sms.SmsProducer; -import com.win.module.system.service.member.MemberService; -import com.win.module.system.service.user.AdminUserService; -import org.assertj.core.util.Lists; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static cn.hutool.core.util.RandomUtil.randomEle; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.*; -import static com.win.module.system.enums.ErrorCodeConstants.*; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.*; - -public class SmsSendServiceImplTest extends BaseMockitoUnitTest { - - @InjectMocks - private SmsSendServiceImpl smsService; - - @Mock - private AdminUserService adminUserService; - @Mock - private MemberService memberService; - @Mock - private SmsChannelService smsChannelService; - @Mock - private SmsTemplateService smsTemplateService; - @Mock - private SmsLogService smsLogService; - @Mock - private SmsProducer smsProducer; - - @Test - public void testSendSingleSmsToAdmin() { - // 准备参数 - Long userId = randomLongId(); - String templateCode = randomString(); - Map templateParams = MapUtil.builder().put("code", "1234") - .put("op", "login").build(); - // mock adminUserService 的方法 - AdminUserDO user = randomPojo(AdminUserDO.class, o -> o.setMobile("15601691300")); - when(adminUserService.getUser(eq(userId))).thenReturn(user); - - // mock SmsTemplateService 的方法 - SmsTemplateDO template = randomPojo(SmsTemplateDO.class, o -> { - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setContent("验证码为{code}, 操作为{op}"); - o.setParams(Lists.newArrayList("code", "op")); - }); - when(smsTemplateService.getSmsTemplateByCodeFromCache(eq(templateCode))).thenReturn(template); - String content = randomString(); - when(smsTemplateService.formatSmsTemplateContent(eq(template.getContent()), eq(templateParams))) - .thenReturn(content); - // mock SmsChannelService 的方法 - SmsChannelDO smsChannel = randomPojo(SmsChannelDO.class, o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus())); - when(smsChannelService.getSmsChannel(eq(template.getChannelId()))).thenReturn(smsChannel); - // mock SmsLogService 的方法 - Long smsLogId = randomLongId(); - when(smsLogService.createSmsLog(eq(user.getMobile()), eq(userId), eq(UserTypeEnum.ADMIN.getValue()), eq(Boolean.TRUE), eq(template), - eq(content), eq(templateParams))).thenReturn(smsLogId); - - // 调用 - Long resultSmsLogId = smsService.sendSingleSmsToAdmin(null, userId, templateCode, templateParams); - // 断言 - assertEquals(smsLogId, resultSmsLogId); - // 断言调用 - verify(smsProducer).sendSmsSendMessage(eq(smsLogId), eq(user.getMobile()), - eq(template.getChannelId()), eq(template.getApiTemplateId()), - eq(Lists.newArrayList(new KeyValue<>("code", "1234"), new KeyValue<>("op", "login")))); - } - - @Test - public void testSendSingleSmsToUser() { - // 准备参数 - Long userId = randomLongId(); - String templateCode = randomString(); - Map templateParams = MapUtil.builder().put("code", "1234") - .put("op", "login").build(); - // mock memberService 的方法 - String mobile = "15601691300"; - when(memberService.getMemberUserMobile(eq(userId))).thenReturn(mobile); - - // mock SmsTemplateService 的方法 - SmsTemplateDO template = randomPojo(SmsTemplateDO.class, o -> { - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setContent("验证码为{code}, 操作为{op}"); - o.setParams(Lists.newArrayList("code", "op")); - }); - when(smsTemplateService.getSmsTemplateByCodeFromCache(eq(templateCode))).thenReturn(template); - String content = randomString(); - when(smsTemplateService.formatSmsTemplateContent(eq(template.getContent()), eq(templateParams))) - .thenReturn(content); - // mock SmsChannelService 的方法 - SmsChannelDO smsChannel = randomPojo(SmsChannelDO.class, o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus())); - when(smsChannelService.getSmsChannel(eq(template.getChannelId()))).thenReturn(smsChannel); - // mock SmsLogService 的方法 - Long smsLogId = randomLongId(); - when(smsLogService.createSmsLog(eq(mobile), eq(userId), eq(UserTypeEnum.MEMBER.getValue()), eq(Boolean.TRUE), eq(template), - eq(content), eq(templateParams))).thenReturn(smsLogId); - - // 调用 - Long resultSmsLogId = smsService.sendSingleSmsToMember(null, userId, templateCode, templateParams); - // 断言 - assertEquals(smsLogId, resultSmsLogId); - // 断言调用 - verify(smsProducer).sendSmsSendMessage(eq(smsLogId), eq(mobile), - eq(template.getChannelId()), eq(template.getApiTemplateId()), - eq(Lists.newArrayList(new KeyValue<>("code", "1234"), new KeyValue<>("op", "login")))); - } - - /** - * 发送成功,当短信模板开启时 - */ - @Test - public void testSendSingleSms_successWhenSmsTemplateEnable() { - // 准备参数 - String mobile = randomString(); - Long userId = randomLongId(); - Integer userType = randomEle(UserTypeEnum.values()).getValue(); - String templateCode = randomString(); - Map templateParams = MapUtil.builder().put("code", "1234") - .put("op", "login").build(); - // mock SmsTemplateService 的方法 - SmsTemplateDO template = randomPojo(SmsTemplateDO.class, o -> { - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setContent("验证码为{code}, 操作为{op}"); - o.setParams(Lists.newArrayList("code", "op")); - }); - when(smsTemplateService.getSmsTemplateByCodeFromCache(eq(templateCode))).thenReturn(template); - String content = randomString(); - when(smsTemplateService.formatSmsTemplateContent(eq(template.getContent()), eq(templateParams))) - .thenReturn(content); - // mock SmsChannelService 的方法 - SmsChannelDO smsChannel = randomPojo(SmsChannelDO.class, o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus())); - when(smsChannelService.getSmsChannel(eq(template.getChannelId()))).thenReturn(smsChannel); - // mock SmsLogService 的方法 - Long smsLogId = randomLongId(); - when(smsLogService.createSmsLog(eq(mobile), eq(userId), eq(userType), eq(Boolean.TRUE), eq(template), - eq(content), eq(templateParams))).thenReturn(smsLogId); - - // 调用 - Long resultSmsLogId = smsService.sendSingleSms(mobile, userId, userType, templateCode, templateParams); - // 断言 - assertEquals(smsLogId, resultSmsLogId); - // 断言调用 - verify(smsProducer).sendSmsSendMessage(eq(smsLogId), eq(mobile), - eq(template.getChannelId()), eq(template.getApiTemplateId()), - eq(Lists.newArrayList(new KeyValue<>("code", "1234"), new KeyValue<>("op", "login")))); - } - - /** - * 发送成功,当短信模板关闭时 - */ - @Test - public void testSendSingleSms_successWhenSmsTemplateDisable() { - // 准备参数 - String mobile = randomString(); - Long userId = randomLongId(); - Integer userType = randomEle(UserTypeEnum.values()).getValue(); - String templateCode = randomString(); - Map templateParams = MapUtil.builder().put("code", "1234") - .put("op", "login").build(); - // mock SmsTemplateService 的方法 - SmsTemplateDO template = randomPojo(SmsTemplateDO.class, o -> { - o.setStatus(CommonStatusEnum.DISABLE.getStatus()); - o.setContent("验证码为{code}, 操作为{op}"); - o.setParams(Lists.newArrayList("code", "op")); - }); - when(smsTemplateService.getSmsTemplateByCodeFromCache(eq(templateCode))).thenReturn(template); - String content = randomString(); - when(smsTemplateService.formatSmsTemplateContent(eq(template.getContent()), eq(templateParams))) - .thenReturn(content); - // mock SmsChannelService 的方法 - SmsChannelDO smsChannel = randomPojo(SmsChannelDO.class, o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus())); - when(smsChannelService.getSmsChannel(eq(template.getChannelId()))).thenReturn(smsChannel); - // mock SmsLogService 的方法 - Long smsLogId = randomLongId(); - when(smsLogService.createSmsLog(eq(mobile), eq(userId), eq(userType), eq(Boolean.FALSE), eq(template), - eq(content), eq(templateParams))).thenReturn(smsLogId); - - // 调用 - Long resultSmsLogId = smsService.sendSingleSms(mobile, userId, userType, templateCode, templateParams); - // 断言 - assertEquals(smsLogId, resultSmsLogId); - // 断言调用 - verify(smsProducer, times(0)).sendSmsSendMessage(anyLong(), anyString(), - anyLong(), any(), anyList()); - } - - @Test - public void testCheckSmsTemplateValid_notExists() { - // 准备参数 - String templateCode = randomString(); - // mock 方法 - - // 调用,并断言异常 - assertServiceException(() -> smsService.validateSmsTemplate(templateCode), - SMS_SEND_TEMPLATE_NOT_EXISTS); - } - - @Test - public void testBuildTemplateParams_paramMiss() { - // 准备参数 - SmsTemplateDO template = randomPojo(SmsTemplateDO.class, - o -> o.setParams(Lists.newArrayList("code"))); - Map templateParams = new HashMap<>(); - // mock 方法 - - // 调用,并断言异常 - assertServiceException(() -> smsService.buildTemplateParams(template, templateParams), - SMS_SEND_MOBILE_TEMPLATE_PARAM_MISS, "code"); - } - - @Test - public void testCheckMobile_notExists() { - // 准备参数 - // mock 方法 - - // 调用,并断言异常 - assertServiceException(() -> smsService.validateMobile(null), - SMS_SEND_MOBILE_NOT_EXISTS); - } - - @Test - @SuppressWarnings("unchecked") - public void testDoSendSms() { - // 准备参数 - SmsSendMessage message = randomPojo(SmsSendMessage.class); - // mock SmsClientFactory 的方法 - SmsClient smsClient = spy(SmsClient.class); - when(smsChannelService.getSmsClient(eq(message.getChannelId()))).thenReturn(smsClient); - // mock SmsClient 的方法 - SmsCommonResult sendResult = randomPojo(SmsCommonResult.class, SmsSendRespDTO.class); - sendResult.setData(randomPojo(SmsSendRespDTO.class)); - when(smsClient.sendSms(eq(message.getLogId()), eq(message.getMobile()), eq(message.getApiTemplateId()), - eq(message.getTemplateParams()))).thenReturn(sendResult); - - // 调用 - smsService.doSendSms(message); - // 断言 - verify(smsLogService).updateSmsSendResult(eq(message.getLogId()), - eq(sendResult.getCode()), eq(sendResult.getMsg()), eq(sendResult.getApiCode()), - eq(sendResult.getApiMsg()), eq(sendResult.getApiRequestId()), eq(sendResult.getData().getSerialNo())); - } - - @Test - public void testReceiveSmsStatus() throws Throwable { - // 准备参数 - String channelCode = randomString(); - String text = randomString(); - // mock SmsClientFactory 的方法 - SmsClient smsClient = spy(SmsClient.class); - when(smsChannelService.getSmsClient(eq(channelCode))).thenReturn(smsClient); - // mock SmsClient 的方法 - List receiveResults = randomPojoList(SmsReceiveRespDTO.class); - - // 调用 - smsService.receiveSmsStatus(channelCode, text); - // 断言 - receiveResults.forEach(result -> smsLogService.updateSmsReceiveResult(eq(result.getLogId()), eq(result.getSuccess()), - eq(result.getReceiveTime()), eq(result.getErrorCode()), eq(result.getErrorCode()))); - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/sms/SmsTemplateServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/sms/SmsTemplateServiceImplTest.java deleted file mode 100644 index fa96f57c..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/sms/SmsTemplateServiceImplTest.java +++ /dev/null @@ -1,339 +0,0 @@ -package com.win.module.system.service.sms; - -import com.win.framework.common.enums.CommonStatusEnum; -import com.win.framework.common.exception.enums.GlobalErrorCodeConstants; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.common.util.collection.ArrayUtils; -import com.win.framework.common.util.object.ObjectUtils; -import com.win.framework.sms.core.client.SmsClient; -import com.win.framework.sms.core.client.SmsClientFactory; -import com.win.framework.sms.core.client.SmsCommonResult; -import com.win.framework.sms.core.client.dto.SmsTemplateRespDTO; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.controller.admin.sms.vo.template.SmsTemplateCreateReqVO; -import com.win.module.system.controller.admin.sms.vo.template.SmsTemplateExportReqVO; -import com.win.module.system.controller.admin.sms.vo.template.SmsTemplatePageReqVO; -import com.win.module.system.controller.admin.sms.vo.template.SmsTemplateUpdateReqVO; -import com.win.module.system.dal.dataobject.sms.SmsChannelDO; -import com.win.module.system.dal.dataobject.sms.SmsTemplateDO; -import com.win.module.system.dal.mysql.sms.SmsTemplateMapper; -import com.win.module.system.enums.sms.SmsTemplateTypeEnum; -import com.google.common.collect.Lists; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.List; -import java.util.function.Consumer; - -import static cn.hutool.core.util.RandomUtil.randomEle; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.*; -import static com.win.module.system.enums.ErrorCodeConstants.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.*; - -@Import(SmsTemplateServiceImpl.class) -public class SmsTemplateServiceImplTest extends BaseDbUnitTest { - - @Resource - private SmsTemplateServiceImpl smsTemplateService; - - @Resource - private SmsTemplateMapper smsTemplateMapper; - - @MockBean - private SmsChannelService smsChannelService; - @MockBean - private SmsClientFactory smsClientFactory; - @MockBean - private SmsClient smsClient; - - @Test - public void testParseTemplateContentParams() { - // 准备参数 - String content = "正在进行登录操作{operation},您的验证码是{code}"; - // mock 方法 - - // 调用 - List params = smsTemplateService.parseTemplateContentParams(content); - // 断言 - assertEquals(Lists.newArrayList("operation", "code"), params); - } - - @Test - @SuppressWarnings("unchecked") - public void testCreateSmsTemplate_success() { - // 准备参数 - SmsTemplateCreateReqVO reqVO = randomPojo(SmsTemplateCreateReqVO.class, o -> { - o.setContent("正在进行登录操作{operation},您的验证码是{code}"); - o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围 - o.setType(randomEle(SmsTemplateTypeEnum.values()).getType()); // 保证 type 的 范围 - }); - // mock Channel 的方法 - SmsChannelDO channelDO = randomPojo(SmsChannelDO.class, o -> { - o.setId(reqVO.getChannelId()); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 保证 status 开启,创建必须处于这个状态 - }); - when(smsChannelService.getSmsChannel(eq(channelDO.getId()))).thenReturn(channelDO); - // mock 获得 API 短信模板成功 - when(smsClientFactory.getSmsClient(eq(reqVO.getChannelId()))).thenReturn(smsClient); - when(smsClient.getSmsTemplate(eq(reqVO.getApiTemplateId()))).thenReturn(randomPojo(SmsCommonResult.class, SmsTemplateRespDTO.class, - o -> o.setCode(GlobalErrorCodeConstants.SUCCESS.getCode()))); - - // 调用 - Long smsTemplateId = smsTemplateService.createSmsTemplate(reqVO); - // 断言 - assertNotNull(smsTemplateId); - // 校验记录的属性是否正确 - SmsTemplateDO smsTemplate = smsTemplateMapper.selectById(smsTemplateId); - assertPojoEquals(reqVO, smsTemplate); - assertEquals(Lists.newArrayList("operation", "code"), smsTemplate.getParams()); - assertEquals(channelDO.getCode(), smsTemplate.getChannelCode()); - } - - @Test - @SuppressWarnings("unchecked") - public void testUpdateSmsTemplate_success() { - // mock 数据 - SmsTemplateDO dbSmsTemplate = randomSmsTemplateDO(); - smsTemplateMapper.insert(dbSmsTemplate);// @Sql: 先插入出一条存在的数据 - // 准备参数 - SmsTemplateUpdateReqVO reqVO = randomPojo(SmsTemplateUpdateReqVO.class, o -> { - o.setId(dbSmsTemplate.getId()); // 设置更新的 ID - o.setContent("正在进行登录操作{operation},您的验证码是{code}"); - o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围 - o.setType(randomEle(SmsTemplateTypeEnum.values()).getType()); // 保证 type 的 范围 - }); - // mock 方法 - SmsChannelDO channelDO = randomPojo(SmsChannelDO.class, o -> { - o.setId(reqVO.getChannelId()); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 保证 status 开启,创建必须处于这个状态 - }); - when(smsChannelService.getSmsChannel(eq(channelDO.getId()))).thenReturn(channelDO); - // mock 获得 API 短信模板成功 - when(smsClientFactory.getSmsClient(eq(reqVO.getChannelId()))).thenReturn(smsClient); - when(smsClient.getSmsTemplate(eq(reqVO.getApiTemplateId()))).thenReturn(randomPojo(SmsCommonResult.class, SmsTemplateRespDTO.class, - o -> o.setCode(GlobalErrorCodeConstants.SUCCESS.getCode()))); - - // 调用 - smsTemplateService.updateSmsTemplate(reqVO); - // 校验是否更新正确 - SmsTemplateDO smsTemplate = smsTemplateMapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, smsTemplate); - assertEquals(Lists.newArrayList("operation", "code"), smsTemplate.getParams()); - assertEquals(channelDO.getCode(), smsTemplate.getChannelCode()); - } - - @Test - public void testUpdateSmsTemplate_notExists() { - // 准备参数 - SmsTemplateUpdateReqVO reqVO = randomPojo(SmsTemplateUpdateReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> smsTemplateService.updateSmsTemplate(reqVO), SMS_TEMPLATE_NOT_EXISTS); - } - - @Test - public void testDeleteSmsTemplate_success() { - // mock 数据 - SmsTemplateDO dbSmsTemplate = randomSmsTemplateDO(); - smsTemplateMapper.insert(dbSmsTemplate);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbSmsTemplate.getId(); - - // 调用 - smsTemplateService.deleteSmsTemplate(id); - // 校验数据不存在了 - assertNull(smsTemplateMapper.selectById(id)); - } - - @Test - public void testDeleteSmsTemplate_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> smsTemplateService.deleteSmsTemplate(id), SMS_TEMPLATE_NOT_EXISTS); - } - - @Test - public void testGetSmsTemplatePage() { - // mock 数据 - SmsTemplateDO dbSmsTemplate = randomPojo(SmsTemplateDO.class, o -> { // 等会查询到 - o.setType(SmsTemplateTypeEnum.PROMOTION.getType()); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setCode("tudou"); - o.setContent("芋道源码"); - o.setApiTemplateId("yunai"); - o.setChannelId(1L); - o.setCreateTime(buildTime(2021, 11, 11)); - }); - smsTemplateMapper.insert(dbSmsTemplate); - // 测试 type 不匹配 - smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setType(SmsTemplateTypeEnum.VERIFICATION_CODE.getType()))); - // 测试 status 不匹配 - smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 测试 code 不匹配 - smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setCode("yuanma"))); - // 测试 content 不匹配 - smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setContent("源码"))); - // 测试 apiTemplateId 不匹配 - smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setApiTemplateId("nai"))); - // 测试 channelId 不匹配 - smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setChannelId(2L))); - // 测试 createTime 不匹配 - smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setCreateTime(buildTime(2021, 12, 12)))); - // 准备参数 - SmsTemplatePageReqVO reqVO = new SmsTemplatePageReqVO(); - reqVO.setType(SmsTemplateTypeEnum.PROMOTION.getType()); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - reqVO.setCode("tu"); - reqVO.setContent("芋道"); - reqVO.setApiTemplateId("yu"); - reqVO.setChannelId(1L); - reqVO.setCreateTime(buildBetweenTime(2021, 11, 1, 2021, 12, 1)); - - // 调用 - PageResult pageResult = smsTemplateService.getSmsTemplatePage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbSmsTemplate, pageResult.getList().get(0)); - } - - @Test - public void testGetSmsTemplateList() { - // mock 数据 - SmsTemplateDO dbSmsTemplate = randomPojo(SmsTemplateDO.class, o -> { // 等会查询到 - o.setType(SmsTemplateTypeEnum.PROMOTION.getType()); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setCode("tudou"); - o.setContent("芋道源码"); - o.setApiTemplateId("yunai"); - o.setChannelId(1L); - o.setCreateTime(buildTime(2021, 11, 11)); - }); - smsTemplateMapper.insert(dbSmsTemplate); - // 测试 type 不匹配 - smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setType(SmsTemplateTypeEnum.VERIFICATION_CODE.getType()))); - // 测试 status 不匹配 - smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 测试 code 不匹配 - smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setCode("yuanma"))); - // 测试 content 不匹配 - smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setContent("源码"))); - // 测试 apiTemplateId 不匹配 - smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setApiTemplateId("nai"))); - // 测试 channelId 不匹配 - smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setChannelId(2L))); - // 测试 createTime 不匹配 - smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setCreateTime(buildTime(2021, 12, 12)))); - // 准备参数 - SmsTemplateExportReqVO reqVO = new SmsTemplateExportReqVO(); - reqVO.setType(SmsTemplateTypeEnum.PROMOTION.getType()); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - reqVO.setCode("tu"); - reqVO.setContent("芋道"); - reqVO.setApiTemplateId("yu"); - reqVO.setChannelId(1L); - reqVO.setCreateTime(buildBetweenTime(2021, 11, 1, 2021, 12, 1)); - - // 调用 - List list = smsTemplateService.getSmsTemplateList(reqVO); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(dbSmsTemplate, list.get(0)); - } - - @Test - public void testValidateSmsChannel_success() { - // 准备参数 - Long channelId = randomLongId(); - // mock 方法 - SmsChannelDO channelDO = randomPojo(SmsChannelDO.class, o -> { - o.setId(channelId); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 保证 status 开启,创建必须处于这个状态 - }); - when(smsChannelService.getSmsChannel(eq(channelId))).thenReturn(channelDO); - - // 调用 - SmsChannelDO returnChannelDO = smsTemplateService.validateSmsChannel(channelId); - // 断言 - assertPojoEquals(returnChannelDO, channelDO); - } - - @Test - public void testValidateSmsChannel_notExists() { - // 准备参数 - Long channelId = randomLongId(); - - // 调用,校验异常 - assertServiceException(() -> smsTemplateService.validateSmsChannel(channelId), - SMS_CHANNEL_NOT_EXISTS); - } - - @Test - public void testValidateSmsChannel_disable() { - // 准备参数 - Long channelId = randomLongId(); - // mock 方法 - SmsChannelDO channelDO = randomPojo(SmsChannelDO.class, o -> { - o.setId(channelId); - o.setStatus(CommonStatusEnum.DISABLE.getStatus()); // 保证 status 禁用,触发失败 - }); - when(smsChannelService.getSmsChannel(eq(channelId))).thenReturn(channelDO); - - // 调用,校验异常 - assertServiceException(() -> smsTemplateService.validateSmsChannel(channelId), - SMS_CHANNEL_DISABLE); - } - - @Test - public void testValidateDictDataValueUnique_success() { - // 调用,成功 - smsTemplateService.validateSmsTemplateCodeDuplicate(randomLongId(), randomString()); - } - - @Test - public void testValidateSmsTemplateCodeDuplicate_valueDuplicateForCreate() { - // 准备参数 - String code = randomString(); - // mock 数据 - smsTemplateMapper.insert(randomSmsTemplateDO(o -> o.setCode(code))); - - // 调用,校验异常 - assertServiceException(() -> smsTemplateService.validateSmsTemplateCodeDuplicate(null, code), - SMS_TEMPLATE_CODE_DUPLICATE, code); - } - - @Test - public void testValidateDictDataValueUnique_valueDuplicateForUpdate() { - // 准备参数 - Long id = randomLongId(); - String code = randomString(); - // mock 数据 - smsTemplateMapper.insert(randomSmsTemplateDO(o -> o.setCode(code))); - - // 调用,校验异常 - assertServiceException(() -> smsTemplateService.validateSmsTemplateCodeDuplicate(id, code), - SMS_TEMPLATE_CODE_DUPLICATE, code); - } - - // ========== 随机对象 ========== - - @SafeVarargs - private static SmsTemplateDO randomSmsTemplateDO(Consumer... consumers) { - Consumer consumer = (o) -> { - o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围 - o.setType(randomEle(SmsTemplateTypeEnum.values()).getType()); // 保证 type 的 范围 - }; - return randomPojo(SmsTemplateDO.class, ArrayUtils.append(consumer, consumers)); - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/social/SocialUserServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/social/SocialUserServiceImplTest.java deleted file mode 100644 index f4cc1df4..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/social/SocialUserServiceImplTest.java +++ /dev/null @@ -1,259 +0,0 @@ -package com.win.module.system.service.social; - -import com.win.framework.common.enums.UserTypeEnum; -import com.win.framework.social.core.WinAuthRequestFactory; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.api.social.dto.SocialUserBindReqDTO; -import com.win.module.system.api.social.dto.SocialUserRespDTO; -import com.win.module.system.dal.dataobject.social.SocialUserBindDO; -import com.win.module.system.dal.dataobject.social.SocialUserDO; -import com.win.module.system.dal.mysql.social.SocialUserBindMapper; -import com.win.module.system.dal.mysql.social.SocialUserMapper; -import com.win.module.system.enums.social.SocialTypeEnum; -import com.xingyuv.jushauth.enums.AuthResponseStatus; -import com.xingyuv.jushauth.model.AuthCallback; -import com.xingyuv.jushauth.model.AuthResponse; -import com.xingyuv.jushauth.model.AuthUser; -import com.xingyuv.jushauth.request.AuthRequest; -import com.xingyuv.jushauth.utils.AuthStateUtils; -import org.junit.jupiter.api.Test; -import org.mockito.MockedStatic; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.List; - -import static cn.hutool.core.util.RandomUtil.randomLong; -import static cn.hutool.core.util.RandomUtil.randomString; -import static com.win.framework.common.util.json.JsonUtils.toJsonString; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.randomPojo; -import static com.win.module.system.enums.ErrorCodeConstants.SOCIAL_USER_AUTH_FAILURE; -import static com.win.module.system.enums.ErrorCodeConstants.SOCIAL_USER_NOT_FOUND; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.Mockito.*; - -@Import(SocialUserServiceImpl.class) -public class SocialUserServiceImplTest extends BaseDbUnitTest { - - @Resource - private SocialUserServiceImpl socialUserService; - - @Resource - private SocialUserMapper socialUserMapper; - @Resource - private SocialUserBindMapper socialUserBindMapper; - - @MockBean - private WinAuthRequestFactory authRequestFactory; - - @Test - public void testGetAuthorizeUrl() { - try (MockedStatic authStateUtilsMock = mockStatic(AuthStateUtils.class)) { - // 准备参数 - Integer type = SocialTypeEnum.WECHAT_MP.getType(); - String redirectUri = "sss"; - // mock 获得对应的 AuthRequest 实现 - AuthRequest authRequest = mock(AuthRequest.class); - when(authRequestFactory.get(eq("WECHAT_MP"))).thenReturn(authRequest); - // mock 方法 - authStateUtilsMock.when(AuthStateUtils::createState).thenReturn("aoteman"); - when(authRequest.authorize(eq("aoteman"))).thenReturn("https://www.iocoder.cn?redirect_uri=yyy"); - - // 调用 - String url = socialUserService.getAuthorizeUrl(type, redirectUri); - // 断言 - assertEquals("https://www.iocoder.cn?redirect_uri=sss", url); - } - } - - @Test - public void testAuthSocialUser_exists() { - // 准备参数 - Integer type = SocialTypeEnum.GITEE.getType(); - String code = "tudou"; - String state = "yuanma"; - // mock 方法 - SocialUserDO socialUser = randomPojo(SocialUserDO.class).setType(type).setCode(code).setState(state); - socialUserMapper.insert(socialUser); - - // 调用 - SocialUserDO result = socialUserService.authSocialUser(type, code, state); - // 断言 - assertPojoEquals(socialUser, result); - } - - @Test - public void testAuthSocialUser_authFailure() { - // 准备参数 - Integer type = SocialTypeEnum.GITEE.getType(); - // mock 方法 - AuthRequest authRequest = mock(AuthRequest.class); - when(authRequestFactory.get(anyString())).thenReturn(authRequest); - AuthResponse authResponse = new AuthResponse<>(0, "模拟失败", null); - when(authRequest.login(any(AuthCallback.class))).thenReturn(authResponse); - - // 调用并断言 - assertServiceException( - () -> socialUserService.authSocialUser(type, randomString(10), randomString(10)), - SOCIAL_USER_AUTH_FAILURE, "模拟失败"); - } - - @Test - public void testAuthSocialUser_insert() { - // 准备参数 - Integer type = SocialTypeEnum.GITEE.getType(); - String code = "tudou"; - String state = "yuanma"; - // mock 方法 - AuthRequest authRequest = mock(AuthRequest.class); - when(authRequestFactory.get(eq(SocialTypeEnum.GITEE.getSource()))).thenReturn(authRequest); - AuthUser authUser = randomPojo(AuthUser.class); - AuthResponse authResponse = new AuthResponse<>(AuthResponseStatus.SUCCESS.getCode(), null, authUser); - when(authRequest.login(any(AuthCallback.class))).thenReturn(authResponse); - - // 调用 - SocialUserDO result = socialUserService.authSocialUser(type, code, state); - // 断言 - assertBindSocialUser(type, result, authResponse.getData()); - assertEquals(code, result.getCode()); - assertEquals(state, result.getState()); - } - - @Test - public void testAuthSocialUser_update() { - // 准备参数 - Integer type = SocialTypeEnum.GITEE.getType(); - String code = "tudou"; - String state = "yuanma"; - // mock 数据 - socialUserMapper.insert(randomPojo(SocialUserDO.class).setType(type).setOpenid("test_openid")); - // mock 方法 - AuthRequest authRequest = mock(AuthRequest.class); - when(authRequestFactory.get(eq(SocialTypeEnum.GITEE.getSource()))).thenReturn(authRequest); - AuthUser authUser = randomPojo(AuthUser.class); - authUser.getToken().setOpenId("test_openid"); - AuthResponse authResponse = new AuthResponse<>(AuthResponseStatus.SUCCESS.getCode(), null, authUser); - when(authRequest.login(any(AuthCallback.class))).thenReturn(authResponse); - - // 调用 - SocialUserDO result = socialUserService.authSocialUser(type, code, state); - // 断言 - assertBindSocialUser(type, result, authResponse.getData()); - assertEquals(code, result.getCode()); - assertEquals(state, result.getState()); - } - - private void assertBindSocialUser(Integer type, SocialUserDO socialUser, AuthUser authUser) { - assertEquals(authUser.getToken().getAccessToken(), socialUser.getToken()); - assertEquals(toJsonString(authUser.getToken()), socialUser.getRawTokenInfo()); - assertEquals(authUser.getNickname(), socialUser.getNickname()); - assertEquals(authUser.getAvatar(), socialUser.getAvatar()); - assertEquals(toJsonString(authUser.getRawUserInfo()), socialUser.getRawUserInfo()); - assertEquals(type, socialUser.getType()); - assertEquals(authUser.getUuid(), socialUser.getOpenid()); - } - - @Test - public void testGetSocialUserList() { - Long userId = 1L; - Integer userType = UserTypeEnum.ADMIN.getValue(); - // mock 获得社交用户 - SocialUserDO socialUser = randomPojo(SocialUserDO.class).setType(SocialTypeEnum.GITEE.getType()); - socialUserMapper.insert(socialUser); // 可被查到 - socialUserMapper.insert(randomPojo(SocialUserDO.class)); // 不可被查到 - // mock 获得绑定 - socialUserBindMapper.insert(randomPojo(SocialUserBindDO.class) // 可被查询到 - .setUserId(userId).setUserType(userType).setSocialType(SocialTypeEnum.GITEE.getType()) - .setSocialUserId(socialUser.getId())); - socialUserBindMapper.insert(randomPojo(SocialUserBindDO.class) // 不可被查询到 - .setUserId(2L).setUserType(userType).setSocialType(SocialTypeEnum.DINGTALK.getType())); - - // 调用 - List result = socialUserService.getSocialUserList(userId, userType); - // 断言 - assertEquals(1, result.size()); - assertPojoEquals(socialUser, result.get(0)); - } - - @Test - public void testBindSocialUser() { - // 准备参数 - SocialUserBindReqDTO reqDTO = new SocialUserBindReqDTO() - .setUserId(1L).setUserType(UserTypeEnum.ADMIN.getValue()) - .setType(SocialTypeEnum.GITEE.getType()).setCode("test_code").setState("test_state"); - // mock 数据:获得社交用户 - SocialUserDO socialUser = randomPojo(SocialUserDO.class).setType(reqDTO.getType()) - .setCode(reqDTO.getCode()).setState(reqDTO.getState()); - socialUserMapper.insert(socialUser); - // mock 数据:用户可能之前已经绑定过该社交类型 - socialUserBindMapper.insert(randomPojo(SocialUserBindDO.class).setUserId(1L).setUserType(UserTypeEnum.ADMIN.getValue()) - .setSocialType(SocialTypeEnum.GITEE.getType()).setSocialUserId(-1L)); - // mock 数据:社交用户可能之前绑定过别的用户 - socialUserBindMapper.insert(randomPojo(SocialUserBindDO.class).setUserType(UserTypeEnum.ADMIN.getValue()) - .setSocialType(SocialTypeEnum.GITEE.getType()).setSocialUserId(socialUser.getId())); - - // 调用 - String openid = socialUserService.bindSocialUser(reqDTO); - // 断言 - List socialUserBinds = socialUserBindMapper.selectList(); - assertEquals(1, socialUserBinds.size()); - assertEquals(socialUser.getOpenid(), openid); - } - - @Test - public void testUnbindSocialUser_success() { - // 准备参数 - Long userId = 1L; - Integer userType = UserTypeEnum.ADMIN.getValue(); - Integer type = SocialTypeEnum.GITEE.getType(); - String openid = "test_openid"; - // mock 数据:社交用户 - SocialUserDO socialUser = randomPojo(SocialUserDO.class).setType(type).setOpenid(openid); - socialUserMapper.insert(socialUser); - // mock 数据:社交绑定关系 - SocialUserBindDO socialUserBind = randomPojo(SocialUserBindDO.class).setUserType(userType) - .setUserId(userId).setSocialType(type); - socialUserBindMapper.insert(socialUserBind); - - // 调用 - socialUserService.unbindSocialUser(userId, userType, type, openid); - // 断言 - assertEquals(0, socialUserBindMapper.selectCount(null).intValue()); - } - - @Test - public void testUnbindSocialUser_notFound() { - // 调用,并断言 - assertServiceException( - () -> socialUserService.unbindSocialUser(randomLong(), UserTypeEnum.ADMIN.getValue(), - SocialTypeEnum.GITEE.getType(), "test_openid"), - SOCIAL_USER_NOT_FOUND); - } - - @Test - public void testGetSocialUser() { - // 准备参数 - Integer userType = UserTypeEnum.ADMIN.getValue(); - Integer type = SocialTypeEnum.GITEE.getType(); - String code = "tudou"; - String state = "yuanma"; - // mock 社交用户 - SocialUserDO socialUserDO = randomPojo(SocialUserDO.class).setType(type).setCode(code).setState(state); - socialUserMapper.insert(socialUserDO); - // mock 社交用户的绑定 - Long userId = randomLong(); - SocialUserBindDO socialUserBind = randomPojo(SocialUserBindDO.class).setUserType(userType).setUserId(userId) - .setSocialType(type).setSocialUserId(socialUserDO.getId()); - socialUserBindMapper.insert(socialUserBind); - - // 调用 - SocialUserRespDTO socialUser = socialUserService.getSocialUser(userType, type, code, state); - // 断言 - assertEquals(userId, socialUser.getUserId()); - assertEquals(socialUserDO.getOpenid(), socialUser.getOpenid()); - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/tenant/TenantPackageServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/tenant/TenantPackageServiceImplTest.java deleted file mode 100644 index 6613732a..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/tenant/TenantPackageServiceImplTest.java +++ /dev/null @@ -1,235 +0,0 @@ -package com.win.module.system.service.tenant; - -import com.win.framework.common.enums.CommonStatusEnum; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.controller.admin.tenant.vo.packages.TenantPackageCreateReqVO; -import com.win.module.system.controller.admin.tenant.vo.packages.TenantPackagePageReqVO; -import com.win.module.system.controller.admin.tenant.vo.packages.TenantPackageUpdateReqVO; -import com.win.module.system.dal.dataobject.tenant.TenantDO; -import com.win.module.system.dal.dataobject.tenant.TenantPackageDO; -import com.win.module.system.dal.mysql.tenant.TenantPackageMapper; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; - -import java.util.List; - -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.randomLongId; -import static com.win.framework.test.core.util.RandomUtils.randomPojo; -import static com.win.module.system.enums.ErrorCodeConstants.*; -import static java.util.Arrays.asList; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -/** -* {@link TenantPackageServiceImpl} 的单元测试类 -* -* @author 芋道源码 -*/ -@Import(TenantPackageServiceImpl.class) -public class TenantPackageServiceImplTest extends BaseDbUnitTest { - - @Resource - private TenantPackageServiceImpl tenantPackageService; - - @Resource - private TenantPackageMapper tenantPackageMapper; - - @MockBean - private TenantService tenantService; - - @Test - public void testCreateTenantPackage_success() { - // 准备参数 - TenantPackageCreateReqVO reqVO = randomPojo(TenantPackageCreateReqVO.class); - - // 调用 - Long tenantPackageId = tenantPackageService.createTenantPackage(reqVO); - // 断言 - assertNotNull(tenantPackageId); - // 校验记录的属性是否正确 - TenantPackageDO tenantPackage = tenantPackageMapper.selectById(tenantPackageId); - assertPojoEquals(reqVO, tenantPackage); - } - - @Test - public void testUpdateTenantPackage_success() { - // mock 数据 - TenantPackageDO dbTenantPackage = randomPojo(TenantPackageDO.class); - tenantPackageMapper.insert(dbTenantPackage);// @Sql: 先插入出一条存在的数据 - // 准备参数 - TenantPackageUpdateReqVO reqVO = randomPojo(TenantPackageUpdateReqVO.class, o -> { - o.setId(dbTenantPackage.getId()); // 设置更新的 ID - }); - // mock 方法 - Long tenantId01 = randomLongId(); - Long tenantId02 = randomLongId(); - when(tenantService.getTenantListByPackageId(eq(reqVO.getId()))).thenReturn( - asList(randomPojo(TenantDO.class, o -> o.setId(tenantId01)), - randomPojo(TenantDO.class, o -> o.setId(tenantId02)))); - - // 调用 - tenantPackageService.updateTenantPackage(reqVO); - // 校验是否更新正确 - TenantPackageDO tenantPackage = tenantPackageMapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, tenantPackage); - // 校验调用租户的菜单 - verify(tenantService).updateTenantRoleMenu(eq(tenantId01), eq(reqVO.getMenuIds())); - verify(tenantService).updateTenantRoleMenu(eq(tenantId02), eq(reqVO.getMenuIds())); - } - - @Test - public void testUpdateTenantPackage_notExists() { - // 准备参数 - TenantPackageUpdateReqVO reqVO = randomPojo(TenantPackageUpdateReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> tenantPackageService.updateTenantPackage(reqVO), TENANT_PACKAGE_NOT_EXISTS); - } - - @Test - public void testDeleteTenantPackage_success() { - // mock 数据 - TenantPackageDO dbTenantPackage = randomPojo(TenantPackageDO.class); - tenantPackageMapper.insert(dbTenantPackage);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbTenantPackage.getId(); - // mock 租户未使用该套餐 - when(tenantService.getTenantCountByPackageId(eq(id))).thenReturn(0L); - - // 调用 - tenantPackageService.deleteTenantPackage(id); - // 校验数据不存在了 - assertNull(tenantPackageMapper.selectById(id)); - } - - @Test - public void testDeleteTenantPackage_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> tenantPackageService.deleteTenantPackage(id), TENANT_PACKAGE_NOT_EXISTS); - } - - @Test - public void testDeleteTenantPackage_used() { - // mock 数据 - TenantPackageDO dbTenantPackage = randomPojo(TenantPackageDO.class); - tenantPackageMapper.insert(dbTenantPackage);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbTenantPackage.getId(); - // mock 租户在使用该套餐 - when(tenantService.getTenantCountByPackageId(eq(id))).thenReturn(1L); - - // 调用, 并断言异常 - assertServiceException(() -> tenantPackageService.deleteTenantPackage(id), TENANT_PACKAGE_USED); - } - - @Test - public void testGetTenantPackagePage() { - // mock 数据 - TenantPackageDO dbTenantPackage = randomPojo(TenantPackageDO.class, o -> { // 等会查询到 - o.setName("芋道源码"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setRemark("源码解析"); - o.setCreateTime(buildTime(2022, 10, 10)); - }); - tenantPackageMapper.insert(dbTenantPackage); - // 测试 name 不匹配 - tenantPackageMapper.insert(cloneIgnoreId(dbTenantPackage, o -> o.setName("源码"))); - // 测试 status 不匹配 - tenantPackageMapper.insert(cloneIgnoreId(dbTenantPackage, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 测试 remark 不匹配 - tenantPackageMapper.insert(cloneIgnoreId(dbTenantPackage, o -> o.setRemark("解析"))); - // 测试 createTime 不匹配 - tenantPackageMapper.insert(cloneIgnoreId(dbTenantPackage, o -> o.setCreateTime(buildTime(2022, 11, 11)))); - // 准备参数 - TenantPackagePageReqVO reqVO = new TenantPackagePageReqVO(); - reqVO.setName("芋道"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - reqVO.setRemark("源码"); - reqVO.setCreateTime(buildBetweenTime(2022, 10, 9, 2022, 10, 11)); - - // 调用 - PageResult pageResult = tenantPackageService.getTenantPackagePage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbTenantPackage, pageResult.getList().get(0)); - } - - @Test - public void testValidTenantPackage_success() { - // mock 数据 - TenantPackageDO dbTenantPackage = randomPojo(TenantPackageDO.class, - o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus())); - tenantPackageMapper.insert(dbTenantPackage);// @Sql: 先插入出一条存在的数据 - - // 调用 - TenantPackageDO result = tenantPackageService.validTenantPackage(dbTenantPackage.getId()); - // 断言 - assertPojoEquals(dbTenantPackage, result); - } - - @Test - public void testValidTenantPackage_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> tenantPackageService.validTenantPackage(id), TENANT_PACKAGE_NOT_EXISTS); - } - - @Test - public void testValidTenantPackage_disable() { - // mock 数据 - TenantPackageDO dbTenantPackage = randomPojo(TenantPackageDO.class, - o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())); - tenantPackageMapper.insert(dbTenantPackage);// @Sql: 先插入出一条存在的数据 - - // 调用, 并断言异常 - assertServiceException(() -> tenantPackageService.validTenantPackage(dbTenantPackage.getId()), - TENANT_PACKAGE_DISABLE, dbTenantPackage.getName()); - } - - @Test - public void testGetTenantPackage() { - // mock 数据 - TenantPackageDO dbTenantPackage = randomPojo(TenantPackageDO.class); - tenantPackageMapper.insert(dbTenantPackage);// @Sql: 先插入出一条存在的数据 - - // 调用 - TenantPackageDO result = tenantPackageService.getTenantPackage(dbTenantPackage.getId()); - // 断言 - assertPojoEquals(result, dbTenantPackage); - } - - @Test - public void testGetTenantPackageListByStatus() { - // mock 数据 - TenantPackageDO dbTenantPackage = randomPojo(TenantPackageDO.class, - o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus())); - tenantPackageMapper.insert(dbTenantPackage); - // 测试 status 不匹配 - tenantPackageMapper.insert(cloneIgnoreId(dbTenantPackage, - o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - - // 调用 - List list = tenantPackageService.getTenantPackageListByStatus( - CommonStatusEnum.ENABLE.getStatus()); - assertEquals(1, list.size()); - assertPojoEquals(dbTenantPackage, list.get(0)); - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/tenant/TenantServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/tenant/TenantServiceImplTest.java deleted file mode 100644 index aa15338d..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/tenant/TenantServiceImplTest.java +++ /dev/null @@ -1,484 +0,0 @@ -package com.win.module.system.service.tenant; - -import com.win.framework.common.enums.CommonStatusEnum; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.tenant.config.TenantProperties; -import com.win.framework.tenant.core.context.TenantContextHolder; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.system.controller.admin.tenant.vo.tenant.TenantCreateReqVO; -import com.win.module.system.controller.admin.tenant.vo.tenant.TenantExportReqVO; -import com.win.module.system.controller.admin.tenant.vo.tenant.TenantPageReqVO; -import com.win.module.system.controller.admin.tenant.vo.tenant.TenantUpdateReqVO; -import com.win.module.system.dal.dataobject.permission.MenuDO; -import com.win.module.system.dal.dataobject.permission.RoleDO; -import com.win.module.system.dal.dataobject.tenant.TenantDO; -import com.win.module.system.dal.dataobject.tenant.TenantPackageDO; -import com.win.module.system.dal.mysql.tenant.TenantMapper; -import com.win.module.system.enums.permission.RoleCodeEnum; -import com.win.module.system.enums.permission.RoleTypeEnum; -import com.win.module.system.service.permission.MenuService; -import com.win.module.system.service.permission.PermissionService; -import com.win.module.system.service.permission.RoleService; -import com.win.module.system.service.tenant.handler.TenantInfoHandler; -import com.win.module.system.service.tenant.handler.TenantMenuHandler; -import com.win.module.system.service.user.AdminUserService; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.time.LocalDateTime; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import static com.win.framework.common.util.collection.SetUtils.asSet; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.*; -import static com.win.module.system.dal.dataobject.tenant.TenantDO.PACKAGE_ID_SYSTEM; -import static com.win.module.system.enums.ErrorCodeConstants.*; -import static java.util.Arrays.asList; -import static java.util.Collections.singleton; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -/** - * {@link TenantServiceImpl} 的单元测试类 - * - * @author 芋道源码 - */ -@Import(TenantServiceImpl.class) -public class TenantServiceImplTest extends BaseDbUnitTest { - - @Resource - private TenantServiceImpl tenantService; - - @Resource - private TenantMapper tenantMapper; - - @MockBean - private TenantProperties tenantProperties; - @MockBean - private TenantPackageService tenantPackageService; - @MockBean - private AdminUserService userService; - @MockBean - private RoleService roleService; - @MockBean - private MenuService menuService; - @MockBean - private PermissionService permissionService; - - @BeforeEach - public void setUp() { - // 清理租户上下文 - TenantContextHolder.clear(); - } - - @Test - public void testGetTenantIdList() { - // mock 数据 - TenantDO tenant = randomPojo(TenantDO.class, o -> o.setId(1L)); - tenantMapper.insert(tenant); - - // 调用,并断言业务异常 - List result = tenantService.getTenantIdList(); - assertEquals(Collections.singletonList(1L), result); - } - - @Test - public void testValidTenant_notExists() { - assertServiceException(() -> tenantService.validTenant(randomLongId()), TENANT_NOT_EXISTS); - } - - @Test - public void testValidTenant_disable() { - // mock 数据 - TenantDO tenant = randomPojo(TenantDO.class, o -> o.setId(1L).setStatus(CommonStatusEnum.DISABLE.getStatus())); - tenantMapper.insert(tenant); - - // 调用,并断言业务异常 - assertServiceException(() -> tenantService.validTenant(1L), TENANT_DISABLE, tenant.getName()); - } - - @Test - public void testValidTenant_expired() { - // mock 数据 - TenantDO tenant = randomPojo(TenantDO.class, o -> o.setId(1L).setStatus(CommonStatusEnum.ENABLE.getStatus()) - .setExpireTime(buildTime(2020, 2, 2))); - tenantMapper.insert(tenant); - - // 调用,并断言业务异常 - assertServiceException(() -> tenantService.validTenant(1L), TENANT_EXPIRE, tenant.getName()); - } - - @Test - public void testValidTenant_success() { - // mock 数据 - TenantDO tenant = randomPojo(TenantDO.class, o -> o.setId(1L).setStatus(CommonStatusEnum.ENABLE.getStatus()) - .setExpireTime(LocalDateTime.now().plusDays(1))); - tenantMapper.insert(tenant); - - // 调用,并断言业务异常 - tenantService.validTenant(1L); - } - - @Test - public void testCreateTenant() { - // mock 套餐 100L - TenantPackageDO tenantPackage = randomPojo(TenantPackageDO.class, o -> o.setId(100L)); - when(tenantPackageService.validTenantPackage(eq(100L))).thenReturn(tenantPackage); - // mock 角色 200L - when(roleService.createRole(argThat(role -> { - assertEquals(RoleCodeEnum.TENANT_ADMIN.getName(), role.getName()); - assertEquals(RoleCodeEnum.TENANT_ADMIN.getCode(), role.getCode()); - assertEquals(0, role.getSort()); - assertEquals("系统自动生成", role.getRemark()); - return true; - }), eq(RoleTypeEnum.SYSTEM.getType()))).thenReturn(200L); - // mock 用户 300L - when(userService.createUser(argThat(user -> { - assertEquals("yunai", user.getUsername()); - assertEquals("yuanma", user.getPassword()); - assertEquals("芋道", user.getNickname()); - assertEquals("15601691300", user.getMobile()); - return true; - }))).thenReturn(300L); - - // 准备参数 - TenantCreateReqVO reqVO = randomPojo(TenantCreateReqVO.class, o -> { - o.setContactName("芋道"); - o.setContactMobile("15601691300"); - o.setPackageId(100L); - o.setStatus(randomCommonStatus()); - o.setDomain("https://www.iocoder.cn"); - o.setUsername("yunai"); - o.setPassword("yuanma"); - }); - - // 调用 - Long tenantId = tenantService.createTenant(reqVO); - // 断言 - assertNotNull(tenantId); - // 校验记录的属性是否正确 - TenantDO tenant = tenantMapper.selectById(tenantId); - assertPojoEquals(reqVO, tenant); - assertEquals(300L, tenant.getContactUserId()); - // verify 分配权限 - verify(permissionService).assignRoleMenu(eq(200L), same(tenantPackage.getMenuIds())); - // verify 分配角色 - verify(permissionService).assignUserRole(eq(300L), eq(singleton(200L))); - } - - @Test - public void testUpdateTenant_success() { - // mock 数据 - TenantDO dbTenant = randomPojo(TenantDO.class, o -> o.setStatus(randomCommonStatus())); - tenantMapper.insert(dbTenant);// @Sql: 先插入出一条存在的数据 - // 准备参数 - TenantUpdateReqVO reqVO = randomPojo(TenantUpdateReqVO.class, o -> { - o.setId(dbTenant.getId()); // 设置更新的 ID - o.setStatus(randomCommonStatus()); - o.setDomain(randomString()); - }); - - // mock 套餐 - TenantPackageDO tenantPackage = randomPojo(TenantPackageDO.class, - o -> o.setMenuIds(asSet(200L, 201L))); - when(tenantPackageService.validTenantPackage(eq(reqVO.getPackageId()))).thenReturn(tenantPackage); - // mock 所有角色 - RoleDO role100 = randomPojo(RoleDO.class, o -> o.setId(100L).setCode(RoleCodeEnum.TENANT_ADMIN.getCode())); - role100.setTenantId(dbTenant.getId()); - RoleDO role101 = randomPojo(RoleDO.class, o -> o.setId(101L)); - role101.setTenantId(dbTenant.getId()); - when(roleService.getRoleList()).thenReturn(asList(role100, role101)); - // mock 每个角色的权限 - when(permissionService.getRoleMenuListByRoleId(eq(101L))).thenReturn(asSet(201L, 202L)); - - // 调用 - tenantService.updateTenant(reqVO); - // 校验是否更新正确 - TenantDO tenant = tenantMapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, tenant); - // verify 设置角色权限 - verify(permissionService).assignRoleMenu(eq(100L), eq(asSet(200L, 201L))); - verify(permissionService).assignRoleMenu(eq(101L), eq(asSet(201L))); - } - - @Test - public void testUpdateTenant_notExists() { - // 准备参数 - TenantUpdateReqVO reqVO = randomPojo(TenantUpdateReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> tenantService.updateTenant(reqVO), TENANT_NOT_EXISTS); - } - - @Test - public void testUpdateTenant_system() { - // mock 数据 - TenantDO dbTenant = randomPojo(TenantDO.class, o -> o.setPackageId(PACKAGE_ID_SYSTEM)); - tenantMapper.insert(dbTenant);// @Sql: 先插入出一条存在的数据 - // 准备参数 - TenantUpdateReqVO reqVO = randomPojo(TenantUpdateReqVO.class, o -> { - o.setId(dbTenant.getId()); // 设置更新的 ID - }); - - // 调用,校验业务异常 - assertServiceException(() -> tenantService.updateTenant(reqVO), TENANT_CAN_NOT_UPDATE_SYSTEM); - } - - @Test - public void testDeleteTenant_success() { - // mock 数据 - TenantDO dbTenant = randomPojo(TenantDO.class, - o -> o.setStatus(randomCommonStatus())); - tenantMapper.insert(dbTenant);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbTenant.getId(); - - // 调用 - tenantService.deleteTenant(id); - // 校验数据不存在了 - assertNull(tenantMapper.selectById(id)); - } - - @Test - public void testDeleteTenant_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> tenantService.deleteTenant(id), TENANT_NOT_EXISTS); - } - - @Test - public void testDeleteTenant_system() { - // mock 数据 - TenantDO dbTenant = randomPojo(TenantDO.class, o -> o.setPackageId(PACKAGE_ID_SYSTEM)); - tenantMapper.insert(dbTenant);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbTenant.getId(); - - // 调用, 并断言异常 - assertServiceException(() -> tenantService.deleteTenant(id), TENANT_CAN_NOT_UPDATE_SYSTEM); - } - - @Test - public void testGetTenant() { - // mock 数据 - TenantDO dbTenant = randomPojo(TenantDO.class); - tenantMapper.insert(dbTenant);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbTenant.getId(); - - // 调用 - TenantDO result = tenantService.getTenant(id); - // 校验存在 - assertPojoEquals(result, dbTenant); - } - - @Test - public void testGetTenantPage() { - // mock 数据 - TenantDO dbTenant = randomPojo(TenantDO.class, o -> { // 等会查询到 - o.setName("芋道源码"); - o.setContactName("芋艿"); - o.setContactMobile("15601691300"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setCreateTime(buildTime(2020, 12, 12)); - }); - tenantMapper.insert(dbTenant); - // 测试 name 不匹配 - tenantMapper.insert(cloneIgnoreId(dbTenant, o -> o.setName(randomString()))); - // 测试 contactName 不匹配 - tenantMapper.insert(cloneIgnoreId(dbTenant, o -> o.setContactName(randomString()))); - // 测试 contactMobile 不匹配 - tenantMapper.insert(cloneIgnoreId(dbTenant, o -> o.setContactMobile(randomString()))); - // 测试 status 不匹配 - tenantMapper.insert(cloneIgnoreId(dbTenant, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 测试 createTime 不匹配 - tenantMapper.insert(cloneIgnoreId(dbTenant, o -> o.setCreateTime(buildTime(2021, 12, 12)))); - // 准备参数 - TenantPageReqVO reqVO = new TenantPageReqVO(); - reqVO.setName("芋道"); - reqVO.setContactName("艿"); - reqVO.setContactMobile("1560"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - reqVO.setCreateTime(buildBetweenTime(2020, 12, 1, 2020, 12, 24)); - - // 调用 - PageResult pageResult = tenantService.getTenantPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbTenant, pageResult.getList().get(0)); - } - - @Test - public void testGetTenantList() { - // mock 数据 - TenantDO dbTenant = randomPojo(TenantDO.class, o -> { // 等会查询到 - o.setName("芋道源码"); - o.setContactName("芋艿"); - o.setContactMobile("15601691300"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setCreateTime(buildTime(2020, 12, 12)); - }); - tenantMapper.insert(dbTenant); - // 测试 name 不匹配 - tenantMapper.insert(cloneIgnoreId(dbTenant, o -> o.setName(randomString()))); - // 测试 contactName 不匹配 - tenantMapper.insert(cloneIgnoreId(dbTenant, o -> o.setContactName(randomString()))); - // 测试 contactMobile 不匹配 - tenantMapper.insert(cloneIgnoreId(dbTenant, o -> o.setContactMobile(randomString()))); - // 测试 status 不匹配 - tenantMapper.insert(cloneIgnoreId(dbTenant, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 测试 createTime 不匹配 - tenantMapper.insert(cloneIgnoreId(dbTenant, o -> o.setCreateTime(buildTime(2021, 12, 12)))); - // 准备参数 - TenantExportReqVO reqVO = new TenantExportReqVO(); - reqVO.setName("芋道"); - reqVO.setContactName("艿"); - reqVO.setContactMobile("1560"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - reqVO.setCreateTime(buildBetweenTime(2020, 12, 1, 2020, 12, 24)); - - // 调用 - List list = tenantService.getTenantList(reqVO); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(dbTenant, list.get(0)); - } - - @Test - public void testGetTenantByName() { - // mock 数据 - TenantDO dbTenant = randomPojo(TenantDO.class, o -> o.setName("芋道")); - tenantMapper.insert(dbTenant);// @Sql: 先插入出一条存在的数据 - - // 调用 - TenantDO result = tenantService.getTenantByName("芋道"); - // 校验存在 - assertPojoEquals(result, dbTenant); - } - - @Test - public void testGetTenantListByPackageId() { - // mock 数据 - TenantDO dbTenant1 = randomPojo(TenantDO.class, o -> o.setPackageId(1L)); - tenantMapper.insert(dbTenant1);// @Sql: 先插入出一条存在的数据 - TenantDO dbTenant2 = randomPojo(TenantDO.class, o -> o.setPackageId(2L)); - tenantMapper.insert(dbTenant2);// @Sql: 先插入出一条存在的数据 - - // 调用 - List result = tenantService.getTenantListByPackageId(1L); - assertEquals(1, result.size()); - assertPojoEquals(dbTenant1, result.get(0)); - } - - @Test - public void testGetTenantCountByPackageId() { - // mock 数据 - TenantDO dbTenant1 = randomPojo(TenantDO.class, o -> o.setPackageId(1L)); - tenantMapper.insert(dbTenant1);// @Sql: 先插入出一条存在的数据 - TenantDO dbTenant2 = randomPojo(TenantDO.class, o -> o.setPackageId(2L)); - tenantMapper.insert(dbTenant2);// @Sql: 先插入出一条存在的数据 - - // 调用 - Long count = tenantService.getTenantCountByPackageId(1L); - assertEquals(1, count); - } - - @Test - public void testHandleTenantInfo_disable() { - // 准备参数 - TenantInfoHandler handler = mock(TenantInfoHandler.class); - // mock 禁用 - when(tenantProperties.getEnable()).thenReturn(false); - - // 调用 - tenantService.handleTenantInfo(handler); - // 断言 - verify(handler, never()).handle(any()); - } - - @Test - public void testHandleTenantInfo_success() { - // 准备参数 - TenantInfoHandler handler = mock(TenantInfoHandler.class); - // mock 未禁用 - when(tenantProperties.getEnable()).thenReturn(true); - // mock 租户 - TenantDO dbTenant = randomPojo(TenantDO.class); - tenantMapper.insert(dbTenant);// @Sql: 先插入出一条存在的数据 - TenantContextHolder.setTenantId(dbTenant.getId()); - - // 调用 - tenantService.handleTenantInfo(handler); - // 断言 - verify(handler).handle(argThat(argument -> { - assertPojoEquals(dbTenant, argument); - return true; - })); - } - - @Test - public void testHandleTenantMenu_disable() { - // 准备参数 - TenantMenuHandler handler = mock(TenantMenuHandler.class); - // mock 禁用 - when(tenantProperties.getEnable()).thenReturn(false); - - // 调用 - tenantService.handleTenantMenu(handler); - // 断言 - verify(handler, never()).handle(any()); - } - - @Test // 系统租户的情况 - public void testHandleTenantMenu_system() { - // 准备参数 - TenantMenuHandler handler = mock(TenantMenuHandler.class); - // mock 未禁用 - when(tenantProperties.getEnable()).thenReturn(true); - // mock 租户 - TenantDO dbTenant = randomPojo(TenantDO.class, o -> o.setPackageId(PACKAGE_ID_SYSTEM)); - tenantMapper.insert(dbTenant);// @Sql: 先插入出一条存在的数据 - TenantContextHolder.setTenantId(dbTenant.getId()); - // mock 菜单 - when(menuService.getMenuList()).thenReturn(Arrays.asList(randomPojo(MenuDO.class, o -> o.setId(100L)), - randomPojo(MenuDO.class, o -> o.setId(101L)))); - - // 调用 - tenantService.handleTenantMenu(handler); - // 断言 - verify(handler).handle(asSet(100L, 101L)); - } - - @Test // 普通租户的情况 - public void testHandleTenantMenu_normal() { - // 准备参数 - TenantMenuHandler handler = mock(TenantMenuHandler.class); - // mock 未禁用 - when(tenantProperties.getEnable()).thenReturn(true); - // mock 租户 - TenantDO dbTenant = randomPojo(TenantDO.class, o -> o.setPackageId(200L)); - tenantMapper.insert(dbTenant);// @Sql: 先插入出一条存在的数据 - TenantContextHolder.setTenantId(dbTenant.getId()); - // mock 菜单 - when(tenantPackageService.getTenantPackage(eq(200L))).thenReturn(randomPojo(TenantPackageDO.class, - o -> o.setMenuIds(asSet(100L, 101L)))); - - // 调用 - tenantService.handleTenantMenu(handler); - // 断言 - verify(handler).handle(asSet(100L, 101L)); - } -} diff --git a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/user/AdminUserServiceImplTest.java b/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/user/AdminUserServiceImplTest.java deleted file mode 100644 index 5ce85a06..00000000 --- a/win-module-system/win-module-system-biz/src/test/java/com/win/module/system/service/user/AdminUserServiceImplTest.java +++ /dev/null @@ -1,784 +0,0 @@ -package com.win.module.system.service.user; - -import cn.hutool.core.util.RandomUtil; -import com.win.framework.common.enums.CommonStatusEnum; -import com.win.framework.common.exception.ServiceException; -import com.win.framework.common.pojo.PageResult; -import com.win.framework.common.util.collection.ArrayUtils; -import com.win.framework.common.util.collection.CollectionUtils; -import com.win.framework.test.core.ut.BaseDbUnitTest; -import com.win.module.infra.api.file.FileApi; -import com.win.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO; -import com.win.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO; -import com.win.module.system.controller.admin.user.vo.user.*; -import com.win.module.system.dal.dataobject.dept.DeptDO; -import com.win.module.system.dal.dataobject.dept.PostDO; -import com.win.module.system.dal.dataobject.dept.UserPostDO; -import com.win.module.system.dal.dataobject.tenant.TenantDO; -import com.win.module.system.dal.dataobject.user.AdminUserDO; -import com.win.module.system.dal.mysql.dept.UserPostMapper; -import com.win.module.system.dal.mysql.user.AdminUserMapper; -import com.win.module.system.enums.common.SexEnum; -import com.win.module.system.service.dept.DeptService; -import com.win.module.system.service.dept.PostService; -import com.win.module.system.service.permission.PermissionService; -import com.win.module.system.service.tenant.TenantService; -import org.junit.jupiter.api.Test; -import org.mockito.stubbing.Answer; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; -import org.springframework.security.crypto.password.PasswordEncoder; - -import javax.annotation.Resource; -import java.io.ByteArrayInputStream; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.function.Consumer; - -import static cn.hutool.core.util.RandomUtil.randomBytes; -import static cn.hutool.core.util.RandomUtil.randomEle; -import static com.win.framework.common.util.collection.SetUtils.asSet; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; -import static com.win.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static com.win.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static com.win.framework.test.core.util.AssertUtils.assertPojoEquals; -import static com.win.framework.test.core.util.AssertUtils.assertServiceException; -import static com.win.framework.test.core.util.RandomUtils.*; -import static com.win.module.system.enums.ErrorCodeConstants.*; -import static java.util.Collections.singleton; -import static java.util.Collections.singletonList; -import static org.assertj.core.util.Lists.newArrayList; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -@Import(AdminUserServiceImpl.class) -public class AdminUserServiceImplTest extends BaseDbUnitTest { - - @Resource - private AdminUserServiceImpl userService; - - @Resource - private AdminUserMapper userMapper; - @Resource - private UserPostMapper userPostMapper; - - @MockBean - private DeptService deptService; - @MockBean - private PostService postService; - @MockBean - private PermissionService permissionService; - @MockBean - private PasswordEncoder passwordEncoder; - @MockBean - private TenantService tenantService; - @MockBean - private FileApi fileApi; - - @Test - public void testCreatUser_success() { - // 准备参数 - UserCreateReqVO reqVO = randomPojo(UserCreateReqVO.class, o -> { - o.setSex(RandomUtil.randomEle(SexEnum.values()).getSex()); - o.setMobile(randomString()); - o.setPostIds(asSet(1L, 2L)); - }); - // mock 账户额度充足 - TenantDO tenant = randomPojo(TenantDO.class, o -> o.setAccountCount(1)); - doNothing().when(tenantService).handleTenantInfo(argThat(handler -> { - handler.handle(tenant); - return true; - })); - // mock deptService 的方法 - DeptDO dept = randomPojo(DeptDO.class, o -> { - o.setId(reqVO.getDeptId()); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - }); - when(deptService.getDept(eq(dept.getId()))).thenReturn(dept); - // mock postService 的方法 - List posts = CollectionUtils.convertList(reqVO.getPostIds(), postId -> - randomPojo(PostDO.class, o -> { - o.setId(postId); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - })); - when(postService.getPostList(eq(reqVO.getPostIds()), isNull())).thenReturn(posts); - // mock passwordEncoder 的方法 - when(passwordEncoder.encode(eq(reqVO.getPassword()))).thenReturn("winyuanma"); - - // 调用 - Long userId = userService.createUser(reqVO); - // 断言 - AdminUserDO user = userMapper.selectById(userId); - assertPojoEquals(reqVO, user, "password"); - assertEquals("winyuanma", user.getPassword()); - assertEquals(CommonStatusEnum.ENABLE.getStatus(), user.getStatus()); - // 断言关联岗位 - List userPosts = userPostMapper.selectListByUserId(user.getId()); - assertEquals(1L, userPosts.get(0).getPostId()); - assertEquals(2L, userPosts.get(1).getPostId()); - } - - @Test - public void testCreatUser_max() { - // 准备参数 - UserCreateReqVO reqVO = randomPojo(UserCreateReqVO.class); - // mock 账户额度不足 - TenantDO tenant = randomPojo(TenantDO.class, o -> o.setAccountCount(-1)); - doNothing().when(tenantService).handleTenantInfo(argThat(handler -> { - handler.handle(tenant); - return true; - })); - - // 调用,并断言异常 - assertServiceException(() -> userService.createUser(reqVO), USER_COUNT_MAX, -1); - } - - @Test - public void testUpdateUser_success() { - // mock 数据 - AdminUserDO dbUser = randomAdminUserDO(o -> o.setPostIds(asSet(1L, 2L))); - userMapper.insert(dbUser); - userPostMapper.insert(new UserPostDO().setUserId(dbUser.getId()).setPostId(1L)); - userPostMapper.insert(new UserPostDO().setUserId(dbUser.getId()).setPostId(2L)); - // 准备参数 - UserUpdateReqVO reqVO = randomPojo(UserUpdateReqVO.class, o -> { - o.setId(dbUser.getId()); - o.setSex(RandomUtil.randomEle(SexEnum.values()).getSex()); - o.setMobile(randomString()); - o.setPostIds(asSet(2L, 3L)); - }); - // mock deptService 的方法 - DeptDO dept = randomPojo(DeptDO.class, o -> { - o.setId(reqVO.getDeptId()); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - }); - when(deptService.getDept(eq(dept.getId()))).thenReturn(dept); - // mock postService 的方法 - List posts = CollectionUtils.convertList(reqVO.getPostIds(), postId -> - randomPojo(PostDO.class, o -> { - o.setId(postId); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - })); - when(postService.getPostList(eq(reqVO.getPostIds()), isNull())).thenReturn(posts); - - // 调用 - userService.updateUser(reqVO); - // 断言 - AdminUserDO user = userMapper.selectById(reqVO.getId()); - assertPojoEquals(reqVO, user); - // 断言关联岗位 - List userPosts = userPostMapper.selectListByUserId(user.getId()); - assertEquals(2L, userPosts.get(0).getPostId()); - assertEquals(3L, userPosts.get(1).getPostId()); - } - - @Test - public void testUpdateUserLogin() { - // mock 数据 - AdminUserDO user = randomAdminUserDO(o -> o.setLoginDate(null)); - userMapper.insert(user); - // 准备参数 - Long id = user.getId(); - String loginIp = randomString(); - - // 调用 - userService.updateUserLogin(id, loginIp); - // 断言 - AdminUserDO dbUser = userMapper.selectById(id); - assertEquals(loginIp, dbUser.getLoginIp()); - assertNotNull(dbUser.getLoginDate()); - } - - @Test - public void testUpdateUserProfile_success() { - // mock 数据 - AdminUserDO dbUser = randomAdminUserDO(); - userMapper.insert(dbUser); - // 准备参数 - Long userId = dbUser.getId(); - UserProfileUpdateReqVO reqVO = randomPojo(UserProfileUpdateReqVO.class, o -> { - o.setMobile(randomString()); - o.setSex(RandomUtil.randomEle(SexEnum.values()).getSex()); - }); - - // 调用 - userService.updateUserProfile(userId, reqVO); - // 断言 - AdminUserDO user = userMapper.selectById(userId); - assertPojoEquals(reqVO, user); - } - - @Test - public void testUpdateUserPassword_success() { - // mock 数据 - AdminUserDO dbUser = randomAdminUserDO(o -> o.setPassword("encode:tudou")); - userMapper.insert(dbUser); - // 准备参数 - Long userId = dbUser.getId(); - UserProfileUpdatePasswordReqVO reqVO = randomPojo(UserProfileUpdatePasswordReqVO.class, o -> { - o.setOldPassword("tudou"); - o.setNewPassword("yuanma"); - }); - // mock 方法 - when(passwordEncoder.encode(anyString())).then( - (Answer) invocationOnMock -> "encode:" + invocationOnMock.getArgument(0)); - when(passwordEncoder.matches(eq(reqVO.getOldPassword()), eq(dbUser.getPassword()))).thenReturn(true); - - // 调用 - userService.updateUserPassword(userId, reqVO); - // 断言 - AdminUserDO user = userMapper.selectById(userId); - assertEquals("encode:yuanma", user.getPassword()); - } - - @Test - public void testUpdateUserAvatar_success() throws Exception { - // mock 数据 - AdminUserDO dbUser = randomAdminUserDO(); - userMapper.insert(dbUser); - // 准备参数 - Long userId = dbUser.getId(); - byte[] avatarFileBytes = randomBytes(10); - ByteArrayInputStream avatarFile = new ByteArrayInputStream(avatarFileBytes); - // mock 方法 - String avatar = randomString(); - when(fileApi.createFile(eq( avatarFileBytes))).thenReturn(avatar); - - // 调用 - userService.updateUserAvatar(userId, avatarFile); - // 断言 - AdminUserDO user = userMapper.selectById(userId); - assertEquals(avatar, user.getAvatar()); - } - - @Test - public void testUpdateUserPassword02_success() { - // mock 数据 - AdminUserDO dbUser = randomAdminUserDO(); - userMapper.insert(dbUser); - // 准备参数 - Long userId = dbUser.getId(); - String password = "win"; - // mock 方法 - when(passwordEncoder.encode(anyString())).then( - (Answer) invocationOnMock -> "encode:" + invocationOnMock.getArgument(0)); - - // 调用 - userService.updateUserPassword(userId, password); - // 断言 - AdminUserDO user = userMapper.selectById(userId); - assertEquals("encode:" + password, user.getPassword()); - } - - @Test - public void testUpdateUserStatus() { - // mock 数据 - AdminUserDO dbUser = randomAdminUserDO(); - userMapper.insert(dbUser); - // 准备参数 - Long userId = dbUser.getId(); - Integer status = randomCommonStatus(); - - // 调用 - userService.updateUserStatus(userId, status); - // 断言 - AdminUserDO user = userMapper.selectById(userId); - assertEquals(status, user.getStatus()); - } - - @Test - public void testDeleteUser_success(){ - // mock 数据 - AdminUserDO dbUser = randomAdminUserDO(); - userMapper.insert(dbUser); - // 准备参数 - Long userId = dbUser.getId(); - - // 调用数据 - userService.deleteUser(userId); - // 校验结果 - assertNull(userMapper.selectById(userId)); - // 校验调用次数 - verify(permissionService, times(1)).processUserDeleted(eq(userId)); - } - - @Test - public void testGetUserByUsername() { - // mock 数据 - AdminUserDO dbUser = randomAdminUserDO(); - userMapper.insert(dbUser); - // 准备参数 - String username = dbUser.getUsername(); - - // 调用 - AdminUserDO user = userService.getUserByUsername(username); - // 断言 - assertPojoEquals(dbUser, user); - } - - @Test - public void testGetUserByMobile() { - // mock 数据 - AdminUserDO dbUser = randomAdminUserDO(); - userMapper.insert(dbUser); - // 准备参数 - String mobile = dbUser.getMobile(); - - // 调用 - AdminUserDO user = userService.getUserByMobile(mobile); - // 断言 - assertPojoEquals(dbUser, user); - } - - @Test - public void testGetUserPage() { - // mock 数据 - AdminUserDO dbUser = initGetUserPageData(); - // 准备参数 - UserPageReqVO reqVO = new UserPageReqVO(); - reqVO.setUsername("tu"); - reqVO.setMobile("1560"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - reqVO.setCreateTime(buildBetweenTime(2020, 12, 1, 2020, 12, 24)); - reqVO.setDeptId(1L); // 其中,1L 是 2L 的父部门 - // mock 方法 - List deptList = newArrayList(randomPojo(DeptDO.class, o -> o.setId(2L))); - when(deptService.getChildDeptList(eq(reqVO.getDeptId()))).thenReturn(deptList); - - // 调用 - PageResult pageResult = userService.getUserPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbUser, pageResult.getList().get(0)); - } - - @Test - public void testGetUserList_export() { - // mock 数据 - AdminUserDO dbUser = initGetUserPageData(); - // 准备参数 - UserExportReqVO reqVO = new UserExportReqVO(); - reqVO.setUsername("tu"); - reqVO.setMobile("1560"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - reqVO.setCreateTime(buildBetweenTime(2020, 12, 1, 2020, 12, 24)); - reqVO.setDeptId(1L); // 其中,1L 是 2L 的父部门 - // mock 方法 - List deptList = newArrayList(randomPojo(DeptDO.class, o -> o.setId(2L))); - when(deptService.getChildDeptList(eq(reqVO.getDeptId()))).thenReturn(deptList); - - // 调用 - List list = userService.getUserList(reqVO); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(dbUser, list.get(0)); - } - - /** - * 初始化 getUserPage 方法的测试数据 - */ - private AdminUserDO initGetUserPageData() { - // mock 数据 - AdminUserDO dbUser = randomAdminUserDO(o -> { // 等会查询到 - o.setUsername("tudou"); - o.setMobile("15601691300"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setCreateTime(buildTime(2020, 12, 12)); - o.setDeptId(2L); - }); - userMapper.insert(dbUser); - // 测试 username 不匹配 - userMapper.insert(cloneIgnoreId(dbUser, o -> o.setUsername("dou"))); - // 测试 mobile 不匹配 - userMapper.insert(cloneIgnoreId(dbUser, o -> o.setMobile("18818260888"))); - // 测试 status 不匹配 - userMapper.insert(cloneIgnoreId(dbUser, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 测试 createTime 不匹配 - userMapper.insert(cloneIgnoreId(dbUser, o -> o.setCreateTime(buildTime(2020, 11, 11)))); - // 测试 dept 不匹配 - userMapper.insert(cloneIgnoreId(dbUser, o -> o.setDeptId(0L))); - return dbUser; - } - - @Test - public void testGetUser() { - // mock 数据 - AdminUserDO dbUser = randomAdminUserDO(); - userMapper.insert(dbUser); - // 准备参数 - Long userId = dbUser.getId(); - - // 调用 - AdminUserDO user = userService.getUser(userId); - // 断言 - assertPojoEquals(dbUser, user); - } - - @Test - public void testGetUserListByDeptIds() { - // mock 数据 - AdminUserDO dbUser = randomAdminUserDO(o -> o.setDeptId(1L)); - userMapper.insert(dbUser); - // 测试 deptId 不匹配 - userMapper.insert(cloneIgnoreId(dbUser, o -> o.setDeptId(2L))); - // 准备参数 - Collection deptIds = singleton(1L); - - // 调用 - List list = userService.getUserListByDeptIds(deptIds); - // 断言 - assertEquals(1, list.size()); - assertEquals(dbUser, list.get(0)); - } - - /** - * 情况一,校验不通过,导致插入失败 - */ - @Test - public void testImportUserList_01() { - // 准备参数 - UserImportExcelVO importUser = randomPojo(UserImportExcelVO.class, o -> { - }); - // mock 方法,模拟失败 - doThrow(new ServiceException(DEPT_NOT_FOUND)).when(deptService).validateDeptList(any()); - - // 调用 - UserImportRespVO respVO = userService.importUserList(newArrayList(importUser), true); - // 断言 - assertEquals(0, respVO.getCreateUsernames().size()); - assertEquals(0, respVO.getUpdateUsernames().size()); - assertEquals(1, respVO.getFailureUsernames().size()); - assertEquals(DEPT_NOT_FOUND.getMsg(), respVO.getFailureUsernames().get(importUser.getUsername())); - } - - /** - * 情况二,不存在,进行插入 - */ - @Test - public void testImportUserList_02() { - // 准备参数 - UserImportExcelVO importUser = randomPojo(UserImportExcelVO.class, o -> { - o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围 - o.setSex(randomEle(SexEnum.values()).getSex()); // 保证 sex 的范围 - }); - // mock deptService 的方法 - DeptDO dept = randomPojo(DeptDO.class, o -> { - o.setId(importUser.getDeptId()); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - }); - when(deptService.getDept(eq(dept.getId()))).thenReturn(dept); - // mock passwordEncoder 的方法 - when(passwordEncoder.encode(eq("winyuanma"))).thenReturn("java"); - - // 调用 - UserImportRespVO respVO = userService.importUserList(newArrayList(importUser), true); - // 断言 - assertEquals(1, respVO.getCreateUsernames().size()); - AdminUserDO user = userMapper.selectByUsername(respVO.getCreateUsernames().get(0)); - assertPojoEquals(importUser, user); - assertEquals("java", user.getPassword()); - assertEquals(0, respVO.getUpdateUsernames().size()); - assertEquals(0, respVO.getFailureUsernames().size()); - } - - /** - * 情况三,存在,但是不强制更新 - */ - @Test - public void testImportUserList_03() { - // mock 数据 - AdminUserDO dbUser = randomAdminUserDO(); - userMapper.insert(dbUser); - // 准备参数 - UserImportExcelVO importUser = randomPojo(UserImportExcelVO.class, o -> { - o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围 - o.setSex(randomEle(SexEnum.values()).getSex()); // 保证 sex 的范围 - o.setUsername(dbUser.getUsername()); - }); - // mock deptService 的方法 - DeptDO dept = randomPojo(DeptDO.class, o -> { - o.setId(importUser.getDeptId()); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - }); - when(deptService.getDept(eq(dept.getId()))).thenReturn(dept); - - // 调用 - UserImportRespVO respVO = userService.importUserList(newArrayList(importUser), false); - // 断言 - assertEquals(0, respVO.getCreateUsernames().size()); - assertEquals(0, respVO.getUpdateUsernames().size()); - assertEquals(1, respVO.getFailureUsernames().size()); - assertEquals(USER_USERNAME_EXISTS.getMsg(), respVO.getFailureUsernames().get(importUser.getUsername())); - } - - /** - * 情况四,存在,强制更新 - */ - @Test - public void testImportUserList_04() { - // mock 数据 - AdminUserDO dbUser = randomAdminUserDO(); - userMapper.insert(dbUser); - // 准备参数 - UserImportExcelVO importUser = randomPojo(UserImportExcelVO.class, o -> { - o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围 - o.setSex(randomEle(SexEnum.values()).getSex()); // 保证 sex 的范围 - o.setUsername(dbUser.getUsername()); - }); - // mock deptService 的方法 - DeptDO dept = randomPojo(DeptDO.class, o -> { - o.setId(importUser.getDeptId()); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - }); - when(deptService.getDept(eq(dept.getId()))).thenReturn(dept); - - // 调用 - UserImportRespVO respVO = userService.importUserList(newArrayList(importUser), true); - // 断言 - assertEquals(0, respVO.getCreateUsernames().size()); - assertEquals(1, respVO.getUpdateUsernames().size()); - AdminUserDO user = userMapper.selectByUsername(respVO.getUpdateUsernames().get(0)); - assertPojoEquals(importUser, user); - assertEquals(0, respVO.getFailureUsernames().size()); - } - - @Test - public void testValidateUserExists_notExists() { - assertServiceException(() -> userService.validateUserExists(randomLongId()), USER_NOT_EXISTS); - } - - @Test - public void testValidateUsernameUnique_usernameExistsForCreate() { - // 准备参数 - String username = randomString(); - // mock 数据 - userMapper.insert(randomAdminUserDO(o -> o.setUsername(username))); - - // 调用,校验异常 - assertServiceException(() -> userService.validateUsernameUnique(null, username), - USER_USERNAME_EXISTS); - } - - @Test - public void testValidateUsernameUnique_usernameExistsForUpdate() { - // 准备参数 - Long id = randomLongId(); - String username = randomString(); - // mock 数据 - userMapper.insert(randomAdminUserDO(o -> o.setUsername(username))); - - // 调用,校验异常 - assertServiceException(() -> userService.validateUsernameUnique(id, username), - USER_USERNAME_EXISTS); - } - - @Test - public void testValidateEmailUnique_emailExistsForCreate() { - // 准备参数 - String email = randomString(); - // mock 数据 - userMapper.insert(randomAdminUserDO(o -> o.setEmail(email))); - - // 调用,校验异常 - assertServiceException(() -> userService.validateEmailUnique(null, email), - USER_EMAIL_EXISTS); - } - - @Test - public void testValidateEmailUnique_emailExistsForUpdate() { - // 准备参数 - Long id = randomLongId(); - String email = randomString(); - // mock 数据 - userMapper.insert(randomAdminUserDO(o -> o.setEmail(email))); - - // 调用,校验异常 - assertServiceException(() -> userService.validateEmailUnique(id, email), - USER_EMAIL_EXISTS); - } - - @Test - public void testValidateMobileUnique_mobileExistsForCreate() { - // 准备参数 - String mobile = randomString(); - // mock 数据 - userMapper.insert(randomAdminUserDO(o -> o.setMobile(mobile))); - - // 调用,校验异常 - assertServiceException(() -> userService.validateMobileUnique(null, mobile), - USER_MOBILE_EXISTS); - } - - @Test - public void testValidateMobileUnique_mobileExistsForUpdate() { - // 准备参数 - Long id = randomLongId(); - String mobile = randomString(); - // mock 数据 - userMapper.insert(randomAdminUserDO(o -> o.setMobile(mobile))); - - // 调用,校验异常 - assertServiceException(() -> userService.validateMobileUnique(id, mobile), - USER_MOBILE_EXISTS); - } - - @Test - public void testValidateOldPassword_notExists() { - assertServiceException(() -> userService.validateOldPassword(randomLongId(), randomString()), - USER_NOT_EXISTS); - } - - @Test - public void testValidateOldPassword_passwordFailed() { - // mock 数据 - AdminUserDO user = randomAdminUserDO(); - userMapper.insert(user); - // 准备参数 - Long id = user.getId(); - String oldPassword = user.getPassword(); - - // 调用,校验异常 - assertServiceException(() -> userService.validateOldPassword(id, oldPassword), - USER_PASSWORD_FAILED); - // 校验调用 - verify(passwordEncoder, times(1)).matches(eq(oldPassword), eq(user.getPassword())); - } - - @Test - public void testUserListByPostIds() { - // 准备参数 - Collection postIds = asSet(10L, 20L); - // mock user1 数据 - AdminUserDO user1 = randomAdminUserDO(o -> o.setPostIds(asSet(10L, 30L))); - userMapper.insert(user1); - userPostMapper.insert(new UserPostDO().setUserId(user1.getId()).setPostId(10L)); - userPostMapper.insert(new UserPostDO().setUserId(user1.getId()).setPostId(30L)); - // mock user2 数据 - AdminUserDO user2 = randomAdminUserDO(o -> o.setPostIds(singleton(100L))); - userMapper.insert(user2); - userPostMapper.insert(new UserPostDO().setUserId(user2.getId()).setPostId(100L)); - - // 调用 - List result = userService.getUserListByPostIds(postIds); - // 断言 - assertEquals(1, result.size()); - assertEquals(user1, result.get(0)); - } - - @Test - public void testGetUserList() { - // mock 数据 - AdminUserDO user = randomAdminUserDO(); - userMapper.insert(user); - // 测试 id 不匹配 - userMapper.insert(randomAdminUserDO()); - // 准备参数 - Collection ids = singleton(user.getId()); - - // 调用 - List result = userService.getUserList(ids); - // 断言 - assertEquals(1, result.size()); - assertEquals(user, result.get(0)); - } - - @Test - public void testGetUserMap() { - // mock 数据 - AdminUserDO user = randomAdminUserDO(); - userMapper.insert(user); - // 测试 id 不匹配 - userMapper.insert(randomAdminUserDO()); - // 准备参数 - Collection ids = singleton(user.getId()); - - // 调用 - Map result = userService.getUserMap(ids); - // 断言 - assertEquals(1, result.size()); - assertEquals(user, result.get(user.getId())); - } - - @Test - public void testGetUserListByNickname() { - // mock 数据 - AdminUserDO user = randomAdminUserDO(o -> o.setNickname("芋头")); - userMapper.insert(user); - // 测试 nickname 不匹配 - userMapper.insert(randomAdminUserDO(o -> o.setNickname("源码"))); - // 准备参数 - String nickname = "芋"; - - // 调用 - List result = userService.getUserListByNickname(nickname); - // 断言 - assertEquals(1, result.size()); - assertEquals(user, result.get(0)); - } - - @Test - public void testGetUserListByStatus() { - // mock 数据 - AdminUserDO user = randomAdminUserDO(o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())); - userMapper.insert(user); - // 测试 status 不匹配 - userMapper.insert(randomAdminUserDO(o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus()))); - // 准备参数 - Integer status = CommonStatusEnum.DISABLE.getStatus(); - - // 调用 - List result = userService.getUserListByStatus(status); - // 断言 - assertEquals(1, result.size()); - assertEquals(user, result.get(0)); - } - - @Test - public void testValidateUserList_success() { - // mock 数据 - AdminUserDO userDO = randomAdminUserDO().setStatus(CommonStatusEnum.ENABLE.getStatus()); - userMapper.insert(userDO); - // 准备参数 - List ids = singletonList(userDO.getId()); - - // 调用,无需断言 - userService.validateUserList(ids); - } - - @Test - public void testValidateUserList_notFound() { - // 准备参数 - List ids = singletonList(randomLongId()); - - // 调用, 并断言异常 - assertServiceException(() -> userService.validateUserList(ids), USER_NOT_EXISTS); - } - - @Test - public void testValidateUserList_notEnable() { - // mock 数据 - AdminUserDO userDO = randomAdminUserDO().setStatus(CommonStatusEnum.DISABLE.getStatus()); - userMapper.insert(userDO); - // 准备参数 - List ids = singletonList(userDO.getId()); - - // 调用, 并断言异常 - assertServiceException(() -> userService.validateUserList(ids), USER_IS_DISABLE, - userDO.getNickname()); - } - - // ========== 随机对象 ========== - - @SafeVarargs - private static AdminUserDO randomAdminUserDO(Consumer... consumers) { - Consumer consumer = (o) -> { - o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围 - o.setSex(randomEle(SexEnum.values()).getSex()); // 保证 sex 的范围 - }; - return randomPojo(AdminUserDO.class, ArrayUtils.append(consumer, consumers)); - } - -} diff --git a/win-module-system/win-module-system-biz/src/test/resources/application-unit-test.yaml b/win-module-system/win-module-system-biz/src/test/resources/application-unit-test.yaml index 56a449e4..f61ada0a 100644 --- a/win-module-system/win-module-system-biz/src/test/resources/application-unit-test.yaml +++ b/win-module-system/win-module-system-biz/src/test/resources/application-unit-test.yaml @@ -42,9 +42,9 @@ mybatis: --- #################### 监控相关配置 #################### ---- #################### 芋道相关配置 #################### +--- #################### 闻荫相关配置 #################### -# 芋道配置项,设置当前项目所有自定义的配置 +# 闻荫配置项,设置当前项目所有自定义的配置 win: info: base-package: com.win.module diff --git a/win-server/src/main/java/com/win/server/WinServerApplication.java b/win-server/src/main/java/com/win/server/WinServerApplication.java index 0ce393a4..111aa031 100644 --- a/win-server/src/main/java/com/win/server/WinServerApplication.java +++ b/win-server/src/main/java/com/win/server/WinServerApplication.java @@ -10,7 +10,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; * 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章 * 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章 * - * @author 芋道源码 + * @author 闻荫源码 */ @SuppressWarnings("SpringComponentScan") // 忽略 IDEA 无法识别 ${win.info.base-package} @SpringBootApplication(scanBasePackages = {"${win.info.base-package}.server", "${win.info.base-package}.module"}) diff --git a/win-server/src/main/java/com/win/server/controller/DefaultController.java b/win-server/src/main/java/com/win/server/controller/DefaultController.java index ad46a6fc..de63a9e8 100644 --- a/win-server/src/main/java/com/win/server/controller/DefaultController.java +++ b/win-server/src/main/java/com/win/server/controller/DefaultController.java @@ -10,7 +10,7 @@ import static com.win.framework.common.exception.enums.GlobalErrorCodeConstants. * 默认 Controller,解决部分 module 未开启时的 404 提示。 * 例如说,/bpm/** 路径,工作流 * - * @author 芋道源码 + * @author 闻荫源码 */ @RestController public class DefaultController { diff --git a/win-server/src/main/resources/application-dev.yaml b/win-server/src/main/resources/application-dev.yaml index 187f0b7b..d378b0dd 100644 --- a/win-server/src/main/resources/application-dev.yaml +++ b/win-server/src/main/resources/application-dev.yaml @@ -156,9 +156,9 @@ wx: # 参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-sta key-prefix: wa # Redis Key 的前缀 http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台 ---- #################### 芋道相关配置 #################### +--- #################### 闻荫相关配置 #################### -# 芋道配置项,设置当前项目所有自定义的配置 +# 闻荫配置项,设置当前项目所有自定义的配置 win: xss: enable: false diff --git a/win-server/src/main/resources/application-prod.yaml b/win-server/src/main/resources/application-prod.yaml index 187f0b7b..d378b0dd 100644 --- a/win-server/src/main/resources/application-prod.yaml +++ b/win-server/src/main/resources/application-prod.yaml @@ -156,9 +156,9 @@ wx: # 参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-sta key-prefix: wa # Redis Key 的前缀 http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台 ---- #################### 芋道相关配置 #################### +--- #################### 闻荫相关配置 #################### -# 芋道配置项,设置当前项目所有自定义的配置 +# 闻荫配置项,设置当前项目所有自定义的配置 win: xss: enable: false diff --git a/win-server/src/main/resources/application-test.yaml b/win-server/src/main/resources/application-test.yaml index 187f0b7b..d378b0dd 100644 --- a/win-server/src/main/resources/application-test.yaml +++ b/win-server/src/main/resources/application-test.yaml @@ -156,9 +156,9 @@ wx: # 参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-sta key-prefix: wa # Redis Key 的前缀 http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台 ---- #################### 芋道相关配置 #################### +--- #################### 闻荫相关配置 #################### -# 芋道配置项,设置当前项目所有自定义的配置 +# 闻荫配置项,设置当前项目所有自定义的配置 win: xss: enable: false diff --git a/win-server/src/main/resources/application.yaml b/win-server/src/main/resources/application.yaml index f6f68a7f..5ee057ba 100644 --- a/win-server/src/main/resources/application.yaml +++ b/win-server/src/main/resources/application.yaml @@ -97,7 +97,7 @@ aj: cache-number: 1000 # local 缓存的阈值,达到这个值,清除缓存 timing-clear: 180 # local定时清除过期缓存(单位秒),设置为0代表不执行 type: blockPuzzle # 验证码类型 default两种都实例化。 blockPuzzle 滑块拼图 clickWord 文字点选 - water-mark: 芋道源码 # 右下角水印文字(我的水印),可使用 https://tool.chinaz.com/tools/unicode.aspx 中文转 Unicode,Linux 可能需要转 unicode + water-mark: 闻荫源码 # 右下角水印文字(我的水印),可使用 https://tool.chinaz.com/tools/unicode.aspx 中文转 Unicode,Linux 可能需要转 unicode interference-options: 0 # 滑动干扰项(0/1/2) req-frequency-limit-enable: false # 接口请求次数一分钟限制是否开启 true|false req-get-lock-limit: 5 # 验证失败 5 次,get接口锁定 @@ -106,7 +106,7 @@ aj: req-check-minute-limit: 60 # check 接口一分钟内请求数限制 req-verify-minute-limit: 60 # verify 接口一分钟内请求数限制 ---- #################### 芋道相关配置 #################### +--- #################### 闻荫相关配置 #################### win: info: @@ -124,7 +124,7 @@ win: maxOnlineCount: 0 # 最大连接人数 sessionMap: true # 保存sessionMap swagger: - title: 芋道快速开发平台 + title: 闻荫快速开发平台 description: 提供管理后台、用户 App 的所有功能 version: ${win.info.version} url: ${win.web.admin-ui.url} diff --git a/win-server/src/test/java/com/win/ProjectReactor.java b/win-server/src/test/java/com/win/ProjectReactor.java index 96cb77e2..19c9c8d6 100644 --- a/win-server/src/test/java/com/win/ProjectReactor.java +++ b/win-server/src/test/java/com/win/ProjectReactor.java @@ -20,7 +20,7 @@ import static java.io.File.separator; *

* 通过修改 groupIdNew、artifactIdNew、projectBaseDirNew 三个变量 * - * @author 芋道源码 + * @author 闻荫源码 */ @Slf4j public class ProjectReactor {