├── .editorconfig
├── .gitignore
├── LICENSE
├── README.md
├── albedo-common
├── albedo-common-core
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ │ ├── albedo
│ │ │ │ └── java
│ │ │ │ │ └── common
│ │ │ │ │ └── core
│ │ │ │ │ ├── annotation
│ │ │ │ │ ├── AnonymousAccess.java
│ │ │ │ │ ├── BaseInit.java
│ │ │ │ │ ├── BeanField.java
│ │ │ │ │ ├── DictType.java
│ │ │ │ │ ├── ExcelField.java
│ │ │ │ │ ├── ExcelFields.java
│ │ │ │ │ ├── Limit.java
│ │ │ │ │ └── Query.java
│ │ │ │ │ ├── aspect
│ │ │ │ │ ├── LimitAspect.java
│ │ │ │ │ └── LimitType.java
│ │ │ │ │ ├── cache
│ │ │ │ │ └── model
│ │ │ │ │ │ ├── CacheHashKey.java
│ │ │ │ │ │ ├── CacheKey.java
│ │ │ │ │ │ └── CacheKeyBuilder.java
│ │ │ │ │ ├── config
│ │ │ │ │ ├── ApplicationConfig.java
│ │ │ │ │ ├── ApplicationProperties.java
│ │ │ │ │ ├── AsyncConfiguration.java
│ │ │ │ │ ├── FilterIgnoreProperties.java
│ │ │ │ │ ├── JacksonBaseConfiguration.java
│ │ │ │ │ ├── RestTemplateConfiguration.java
│ │ │ │ │ └── async
│ │ │ │ │ │ └── ExceptionHandlingAsyncTaskExecutor.java
│ │ │ │ │ ├── constant
│ │ │ │ │ ├── CacheKeyBuilderConstants.java
│ │ │ │ │ ├── CacheNameConstants.java
│ │ │ │ │ ├── CommonConstants.java
│ │ │ │ │ ├── DictNameConstants.java
│ │ │ │ │ ├── ParameterKey.java
│ │ │ │ │ ├── ScheduleConstants.java
│ │ │ │ │ ├── SecurityConstants.java
│ │ │ │ │ └── enums
│ │ │ │ │ │ └── LoginTypeEnum.java
│ │ │ │ │ ├── context
│ │ │ │ │ ├── ContextConstants.java
│ │ │ │ │ ├── ContextUtil.java
│ │ │ │ │ └── ThreadLocalParam.java
│ │ │ │ │ ├── converter
│ │ │ │ │ ├── BaseDateConverter.java
│ │ │ │ │ └── EnumSerializer.java
│ │ │ │ │ ├── domain
│ │ │ │ │ ├── BaseDataDo.java
│ │ │ │ │ ├── BaseDo.java
│ │ │ │ │ ├── GeneralDo.java
│ │ │ │ │ ├── IdDo.java
│ │ │ │ │ ├── TreeDo.java
│ │ │ │ │ └── vo
│ │ │ │ │ │ ├── AppendixDto.java
│ │ │ │ │ │ ├── AppendixVo.java
│ │ │ │ │ │ ├── ComboData.java
│ │ │ │ │ │ ├── DataDto.java
│ │ │ │ │ │ ├── DataVo.java
│ │ │ │ │ │ ├── DictQuery.java
│ │ │ │ │ │ ├── DictQuerySearch.java
│ │ │ │ │ │ ├── DictResult.java
│ │ │ │ │ │ ├── DictTreeResult.java
│ │ │ │ │ │ ├── EchoVo.java
│ │ │ │ │ │ ├── GeneralDto.java
│ │ │ │ │ │ ├── Order.java
│ │ │ │ │ │ ├── PageModel.java
│ │ │ │ │ │ ├── ScheduleVo.java
│ │ │ │ │ │ ├── SelectVo.java
│ │ │ │ │ │ ├── TreeDto.java
│ │ │ │ │ │ ├── TreeNode.java
│ │ │ │ │ │ └── TreeVo.java
│ │ │ │ │ ├── enumeration
│ │ │ │ │ ├── BaseEnum.java
│ │ │ │ │ └── FileType.java
│ │ │ │ │ ├── exception
│ │ │ │ │ ├── AccessDeniedException.java
│ │ │ │ │ ├── ArgumentException.java
│ │ │ │ │ ├── BadRequestException.java
│ │ │ │ │ ├── BaseCheckedException.java
│ │ │ │ │ ├── BaseException.java
│ │ │ │ │ ├── BaseUncheckedException.java
│ │ │ │ │ ├── BizException.java
│ │ │ │ │ ├── CheckedException.java
│ │ │ │ │ ├── CommonException.java
│ │ │ │ │ ├── EntityExistException.java
│ │ │ │ │ ├── EntityNotFoundException.java
│ │ │ │ │ ├── FeignBizException.java
│ │ │ │ │ ├── ForbiddenException.java
│ │ │ │ │ ├── RuntimeMsgException.java
│ │ │ │ │ ├── TaskException.java
│ │ │ │ │ ├── UnauthorizedException.java
│ │ │ │ │ ├── ValidateCodeException.java
│ │ │ │ │ ├── code
│ │ │ │ │ │ ├── BaseExceptionCode.java
│ │ │ │ │ │ └── ResponseCode.java
│ │ │ │ │ └── handler
│ │ │ │ │ │ └── GlobalExceptionHandler.java
│ │ │ │ │ ├── jackson
│ │ │ │ │ ├── CustomModule.java
│ │ │ │ │ ├── JacksonUtil.java
│ │ │ │ │ └── databind
│ │ │ │ │ │ ├── LocalDateTimeDeserializer.java
│ │ │ │ │ │ └── LocalDateTimeSerializer.java
│ │ │ │ │ ├── lock
│ │ │ │ │ └── DistributedLock.java
│ │ │ │ │ ├── resource
│ │ │ │ │ └── GeneralResource.java
│ │ │ │ │ └── util
│ │ │ │ │ ├── ArgumentAssert.java
│ │ │ │ │ ├── BeanUtil.java
│ │ │ │ │ ├── BeanValidators.java
│ │ │ │ │ ├── ClassUtil.java
│ │ │ │ │ ├── CollUtil.java
│ │ │ │ │ ├── DateUtil.java
│ │ │ │ │ ├── DefaultProfileUtil.java
│ │ │ │ │ ├── EncryptUtil.java
│ │ │ │ │ ├── FileUploadUtil.java
│ │ │ │ │ ├── FileUtil.java
│ │ │ │ │ ├── FreeMarkers.java
│ │ │ │ │ ├── IntHashMap.java
│ │ │ │ │ ├── JaxbMapper.java
│ │ │ │ │ ├── MapHelper.java
│ │ │ │ │ ├── Md5Util.java
│ │ │ │ │ ├── MimeTypeUtil.java
│ │ │ │ │ ├── ObjectUtil.java
│ │ │ │ │ ├── RequestHolder.java
│ │ │ │ │ ├── ResponseEntityBuilder.java
│ │ │ │ │ ├── Result.java
│ │ │ │ │ ├── SecuritySqlUtil.java
│ │ │ │ │ ├── SpringContextHolder.java
│ │ │ │ │ ├── StrPool.java
│ │ │ │ │ ├── StringUtil.java
│ │ │ │ │ ├── WebUtil.java
│ │ │ │ │ └── tree
│ │ │ │ │ ├── TreeNodeAware.java
│ │ │ │ │ └── TreeUtil.java
│ │ │ │ └── fasterxml
│ │ │ │ └── jackson
│ │ │ │ └── databind
│ │ │ │ └── deser
│ │ │ │ └── std
│ │ │ │ └── EnumDeserializer.java
│ │ └── resources
│ │ │ ├── META-INF
│ │ │ └── spring.factories
│ │ │ └── logback-spring.xml
│ │ └── test
│ │ ├── java
│ │ └── com
│ │ │ └── albedo
│ │ │ └── java
│ │ │ └── Base64Test.java
│ │ └── resources
│ │ └── application.yml
├── albedo-common-log
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── albedo
│ │ │ └── java
│ │ │ └── common
│ │ │ └── log
│ │ │ ├── annotation
│ │ │ └── LogOperate.java
│ │ │ ├── aspect
│ │ │ ├── RequestLogAspect.java
│ │ │ └── SysLogAspect.java
│ │ │ ├── config
│ │ │ └── LogAutoConfiguration.java
│ │ │ ├── enums
│ │ │ ├── BusinessStatus.java
│ │ │ ├── BusinessType.java
│ │ │ ├── LogType.java
│ │ │ └── OperatorType.java
│ │ │ ├── event
│ │ │ ├── ParameterUpdateEvent.java
│ │ │ ├── ParameterUpdateListener.java
│ │ │ ├── SysLogLoginEvent.java
│ │ │ ├── SysLogLoginListener.java
│ │ │ ├── SysLogOperateEvent.java
│ │ │ ├── SysLogOperateListener.java
│ │ │ └── model
│ │ │ │ └── ParameterUpdate.java
│ │ │ ├── init
│ │ │ └── ApplicationLoggerInitializer.java
│ │ │ └── util
│ │ │ └── SysLogUtils.java
│ │ └── resources
│ │ └── META-INF
│ │ └── spring.factories
├── albedo-common-module
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── albedo
│ │ │ └── java
│ │ │ └── common
│ │ │ ├── config
│ │ │ ├── CustomFieldModule.java
│ │ │ ├── ExtraFieldSerializer.java
│ │ │ ├── GlobalMvcConfigurer.java
│ │ │ ├── JacksonMapperConfiguration.java
│ │ │ └── datasource
│ │ │ │ ├── AuthorityDatabaseAutoConfiguration.java
│ │ │ │ └── AuthorityMybatisAutoConfiguration.java
│ │ │ ├── runner
│ │ │ └── ContextInitRunner.java
│ │ │ ├── util
│ │ │ ├── ExcelUtil.java
│ │ │ └── RedisUtil.java
│ │ │ └── web
│ │ │ ├── filter
│ │ │ ├── CachingHttpHeadersFilter.java
│ │ │ └── ThreadLocalContextFilter.java
│ │ │ └── resource
│ │ │ └── BaseResource.java
│ │ └── resources
│ │ └── META-INF
│ │ └── spring.factories
├── albedo-common-security
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── albedo
│ │ │ └── java
│ │ │ └── common
│ │ │ └── security
│ │ │ ├── component
│ │ │ ├── Http401UnauthorizedEntryPoint.java
│ │ │ ├── PermissionService.java
│ │ │ ├── PersistentTokenCache.java
│ │ │ ├── PersistentTokenRememberMeService.java
│ │ │ ├── SpringSecurityAuditorAware.java
│ │ │ └── session
│ │ │ │ ├── CustomSessionInformation.java
│ │ │ │ └── RedisSessionRegistry.java
│ │ │ ├── config
│ │ │ ├── SecurityAutoConfiguration.java
│ │ │ └── SecurityJwtConfiguration.java
│ │ │ ├── enums
│ │ │ └── RequestMethodEnum.java
│ │ │ ├── event
│ │ │ ├── SysUserOnlineEvent.java
│ │ │ ├── SysUserOnlineListener.java
│ │ │ └── SysUserOnlineRefreshLastRequestEvent.java
│ │ │ ├── filter
│ │ │ ├── BodyFilter.java
│ │ │ ├── PasswordDecoderFilter.java
│ │ │ ├── ValidateCodeFilter.java
│ │ │ └── warpper
│ │ │ │ ├── BodyRequestWrapper.java
│ │ │ │ └── ParameterRequestWrapper.java
│ │ │ ├── handler
│ │ │ ├── AjaxAuthenticationFailureHandler.java
│ │ │ ├── AjaxAuthenticationSuccessHandler.java
│ │ │ └── AjaxLogoutSuccessHandler.java
│ │ │ ├── jwt
│ │ │ ├── JwtConfigurer.java
│ │ │ ├── JwtFilter.java
│ │ │ └── TokenProvider.java
│ │ │ ├── service
│ │ │ ├── CustomSimpleGrantedAuthority.java
│ │ │ ├── UserDetail.java
│ │ │ └── UserDetailsServiceImpl.java
│ │ │ └── util
│ │ │ ├── AuthUtil.java
│ │ │ ├── LoginUtil.java
│ │ │ ├── RandomUtil.java
│ │ │ └── SecurityUtil.java
│ │ └── resources
│ │ ├── META-INF
│ │ └── spring.factories
│ │ └── org
│ │ └── springframework
│ │ └── security
│ │ └── messages_zh_CN.properties
└── pom.xml
├── albedo-dependencies
└── pom.xml
├── albedo-modules
├── albedo-appendix
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── java
│ │ └── com
│ │ └── albedo
│ │ └── java
│ │ └── modules
│ │ └── file
│ │ ├── domain
│ │ ├── Appendix.java
│ │ └── dto
│ │ │ └── AppendixQueryCriteria.java
│ │ ├── repository
│ │ └── AppendixRepository.java
│ │ └── service
│ │ ├── AppendixService.java
│ │ └── impl
│ │ └── AppendixServiceImpl.java
├── albedo-file
│ ├── albedo-file-biz
│ │ ├── pom.xml
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── com
│ │ │ └── albedo
│ │ │ └── java
│ │ │ └── modules
│ │ │ └── file
│ │ │ ├── properties
│ │ │ └── FileServerProperties.java
│ │ │ ├── repository
│ │ │ └── FileRepository.java
│ │ │ ├── service
│ │ │ ├── FileService.java
│ │ │ └── impl
│ │ │ │ └── FileServiceImpl.java
│ │ │ ├── storage
│ │ │ └── FileAutoConfigure.java
│ │ │ ├── strategy
│ │ │ ├── FileChunkStrategy.java
│ │ │ ├── FileContext.java
│ │ │ ├── FileLock.java
│ │ │ ├── FileStrategy.java
│ │ │ └── impl
│ │ │ │ ├── AbstractFileChunkStrategy.java
│ │ │ │ ├── AbstractFileStrategy.java
│ │ │ │ ├── ali
│ │ │ │ ├── AliFileChunkStrategyImpl.java
│ │ │ │ └── AliFileStrategyImpl.java
│ │ │ │ ├── fastdfs
│ │ │ │ ├── FastDfsFileChunkStrategyImpl.java
│ │ │ │ └── FastDfsFileStrategyImpl.java
│ │ │ │ ├── huawei
│ │ │ │ └── HuaweiFileStrategyImpl.java
│ │ │ │ ├── local
│ │ │ │ ├── LocalFileChunkStrategyImpl.java
│ │ │ │ └── LocalFileStrategyImpl.java
│ │ │ │ ├── minio
│ │ │ │ ├── MinIoFileChunkStrategyImpl.java
│ │ │ │ └── MinIoFileStrategyImpl.java
│ │ │ │ └── qiniu
│ │ │ │ └── QiNiuFileStrategyImpl.java
│ │ │ └── web
│ │ │ └── FileResource.java
│ ├── albedo-file-domain
│ │ ├── pom.xml
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── com
│ │ │ └── albedo
│ │ │ └── java
│ │ │ └── modules
│ │ │ └── file
│ │ │ ├── domain
│ │ │ ├── FileDeleteBo.java
│ │ │ ├── FileDo.java
│ │ │ ├── FileGetUrlBo.java
│ │ │ ├── dto
│ │ │ │ ├── FileChunkCheckDto.java
│ │ │ │ ├── FileChunksMergeDto.java
│ │ │ │ ├── FileQueryCriteria.java
│ │ │ │ └── FileUploadDto.java
│ │ │ ├── enums
│ │ │ │ └── FileStorageType.java
│ │ │ └── vo
│ │ │ │ ├── param
│ │ │ │ ├── FileParamVo.java
│ │ │ │ └── FileUploadVo.java
│ │ │ │ └── result
│ │ │ │ └── FileResultVo.java
│ │ │ └── utils
│ │ │ ├── FileTypeUtil.java
│ │ │ └── ZipUtils.java
│ └── pom.xml
├── albedo-gen
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── albedo
│ │ │ └── java
│ │ │ └── modules
│ │ │ └── gen
│ │ │ ├── cache
│ │ │ ├── DatasourceConfCacheKeyBuilder.java
│ │ │ ├── SchemeCacheKeyBuilder.java
│ │ │ ├── TableCacheKeyBuilder.java
│ │ │ └── TableColumnCacheKeyBuilder.java
│ │ │ ├── domain
│ │ │ ├── DatasourceConfDo.java
│ │ │ ├── SchemeDo.java
│ │ │ ├── TableColumnDo.java
│ │ │ ├── TableDo.java
│ │ │ ├── TableFkDo.java
│ │ │ ├── TemplateDo.java
│ │ │ ├── dto
│ │ │ │ ├── DatasourceConfDto.java
│ │ │ │ ├── DatasourceConfQueryDto.java
│ │ │ │ ├── GenCodeDto.java
│ │ │ │ ├── SchemeDto.java
│ │ │ │ ├── SchemeGenDto.java
│ │ │ │ ├── SchemeQueryDto.java
│ │ │ │ ├── TableColumnDto.java
│ │ │ │ ├── TableDto.java
│ │ │ │ ├── TableFromDto.java
│ │ │ │ └── TableQueryDto.java
│ │ │ ├── vo
│ │ │ │ ├── SchemeFormDataVo.java
│ │ │ │ ├── SchemeVo.java
│ │ │ │ ├── TableFormDataVo.java
│ │ │ │ ├── TableFormVo.java
│ │ │ │ ├── TableQuery.java
│ │ │ │ └── TemplateVo.java
│ │ │ └── xml
│ │ │ │ ├── DictTemp.java
│ │ │ │ ├── GenCategory.java
│ │ │ │ └── GenConfig.java
│ │ │ ├── repository
│ │ │ ├── DatasourceConfRepository.java
│ │ │ ├── SchemeRepository.java
│ │ │ ├── TableColumnRepository.java
│ │ │ ├── TableRepository.java
│ │ │ └── TemplateRepository.java
│ │ │ ├── service
│ │ │ ├── DatasourceConfService.java
│ │ │ ├── SchemeService.java
│ │ │ ├── TableColumnService.java
│ │ │ ├── TableService.java
│ │ │ ├── TemplateService.java
│ │ │ └── impl
│ │ │ │ ├── DatasourceConfServiceImpl.java
│ │ │ │ ├── SchemeServiceImpl.java
│ │ │ │ ├── TableColumnServiceImpl.java
│ │ │ │ ├── TableServiceImpl.java
│ │ │ │ └── TemplateServiceImpl.java
│ │ │ ├── util
│ │ │ ├── GenTableColumnVoUtil.java
│ │ │ └── GenUtil.java
│ │ │ └── web
│ │ │ ├── DatasourceConfResource.java
│ │ │ ├── SchemeResource.java
│ │ │ └── TableResource.java
│ │ └── resources
│ │ └── mapper
│ │ └── gen
│ │ ├── SchemeMapper.xml
│ │ ├── TableColumnMapper.xml
│ │ └── TableMapper.xml
├── albedo-monitor
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── java
│ │ └── com
│ │ └── albedo
│ │ └── java
│ │ └── modules
│ │ └── monitor
│ │ ├── domain
│ │ ├── RedisInfo.java
│ │ └── ReportSearchType.java
│ │ ├── service
│ │ ├── MonitorService.java
│ │ ├── RedisService.java
│ │ └── impl
│ │ │ ├── MonitorServiceImpl.java
│ │ │ └── RedisServiceImpl.java
│ │ └── web
│ │ └── ActuatorResource.java
├── albedo-quartz
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── albedo
│ │ │ └── java
│ │ │ └── modules
│ │ │ └── quartz
│ │ │ ├── domain
│ │ │ ├── JobDo.java
│ │ │ ├── JobLogDo.java
│ │ │ ├── dto
│ │ │ │ ├── JobDto.java
│ │ │ │ ├── JobLogQueryDto.java
│ │ │ │ └── JobQueryDto.java
│ │ │ ├── enums
│ │ │ │ ├── JobConcurrent.java
│ │ │ │ ├── JobLogStatus.java
│ │ │ │ ├── JobMisfirePolicy.java
│ │ │ │ └── JobStatus.java
│ │ │ └── vo
│ │ │ │ └── JobLogExcelVo.java
│ │ │ ├── repository
│ │ │ ├── JobLogRepository.java
│ │ │ └── JobRepository.java
│ │ │ ├── service
│ │ │ ├── JobLogService.java
│ │ │ ├── JobService.java
│ │ │ └── impl
│ │ │ │ ├── JobLogServiceImpl.java
│ │ │ │ └── JobServiceImpl.java
│ │ │ ├── task
│ │ │ └── SimpleTask.java
│ │ │ ├── util
│ │ │ ├── AbstractQuartzJob.java
│ │ │ ├── CronUtils.java
│ │ │ ├── JobInvokeUtil.java
│ │ │ ├── QuartzDisallowConcurrentExecution.java
│ │ │ ├── QuartzJobExecution.java
│ │ │ └── ScheduleUtils.java
│ │ │ └── web
│ │ │ ├── JobLogResource.java
│ │ │ └── JobResource.java
│ │ └── resources
│ │ └── mapper
│ │ └── sys
│ │ └── JobLogMapper.xml
├── albedo-sys
│ ├── Dockerfile
│ ├── albedo-sys-api
│ │ ├── pom.xml
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── com
│ │ │ └── albedo
│ │ │ └── java
│ │ │ └── modules
│ │ │ ├── sys
│ │ │ ├── feign
│ │ │ │ ├── RemoteDeptService.java
│ │ │ │ ├── RemoteDictService.java
│ │ │ │ ├── RemoteLogLoginService.java
│ │ │ │ ├── RemoteLogOperateService.java
│ │ │ │ ├── RemoteMenuService.java
│ │ │ │ ├── RemotePersistentTokenService.java
│ │ │ │ ├── RemoteRoleService.java
│ │ │ │ ├── RemoteUserOnlineService.java
│ │ │ │ └── RemoteUserService.java
│ │ │ └── util
│ │ │ │ └── DictUtil.java
│ │ │ └── tool
│ │ │ └── feign
│ │ │ └── RemoteEmailService.java
│ ├── albedo-sys-biz
│ │ ├── pom.xml
│ │ └── src
│ │ │ └── main
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ └── albedo
│ │ │ │ └── java
│ │ │ │ └── modules
│ │ │ │ ├── sys
│ │ │ │ ├── component
│ │ │ │ │ └── InitCacheDataComponent.java
│ │ │ │ ├── repository
│ │ │ │ │ ├── ApplicationRepository.java
│ │ │ │ │ ├── DeptRelationRepository.java
│ │ │ │ │ ├── DeptRepository.java
│ │ │ │ │ ├── DictRepository.java
│ │ │ │ │ ├── LogLoginRepository.java
│ │ │ │ │ ├── LogOperateRepository.java
│ │ │ │ │ ├── MenuRepository.java
│ │ │ │ │ ├── ParameterRepository.java
│ │ │ │ │ ├── PersistentTokenRepository.java
│ │ │ │ │ ├── RoleDeptRepository.java
│ │ │ │ │ ├── RoleMenuRepository.java
│ │ │ │ │ ├── RoleRepository.java
│ │ │ │ │ ├── UserOnlineRepository.java
│ │ │ │ │ ├── UserRepository.java
│ │ │ │ │ └── UserRoleRepository.java
│ │ │ │ ├── service
│ │ │ │ │ ├── ApplicationService.java
│ │ │ │ │ ├── DeptRelationService.java
│ │ │ │ │ ├── DeptService.java
│ │ │ │ │ ├── DictService.java
│ │ │ │ │ ├── LogLoginService.java
│ │ │ │ │ ├── LogOperateService.java
│ │ │ │ │ ├── MenuService.java
│ │ │ │ │ ├── ParameterService.java
│ │ │ │ │ ├── PersistentTokenService.java
│ │ │ │ │ ├── RoleDeptService.java
│ │ │ │ │ ├── RoleMenuService.java
│ │ │ │ │ ├── RoleService.java
│ │ │ │ │ ├── UserOnlineService.java
│ │ │ │ │ ├── UserRoleService.java
│ │ │ │ │ ├── UserService.java
│ │ │ │ │ └── impl
│ │ │ │ │ │ ├── ApplicationServiceImpl.java
│ │ │ │ │ │ ├── DeptRelationServiceImpl.java
│ │ │ │ │ │ ├── DeptServiceImpl.java
│ │ │ │ │ │ ├── DictServiceImpl.java
│ │ │ │ │ │ ├── LogLoginServiceImpl.java
│ │ │ │ │ │ ├── LogOperateServiceImpl.java
│ │ │ │ │ │ ├── MenuServiceImpl.java
│ │ │ │ │ │ ├── ParameterServiceImpl.java
│ │ │ │ │ │ ├── PersistentTokenServiceImpl.java
│ │ │ │ │ │ ├── RoleDeptServiceImpl.java
│ │ │ │ │ │ ├── RoleMenuServiceImpl.java
│ │ │ │ │ │ ├── RoleServiceImpl.java
│ │ │ │ │ │ ├── UserOnlineServiceImpl.java
│ │ │ │ │ │ ├── UserRoleServiceImpl.java
│ │ │ │ │ │ └── UserServiceImpl.java
│ │ │ │ └── util
│ │ │ │ │ └── SysCacheUtil.java
│ │ │ │ └── tool
│ │ │ │ ├── repository
│ │ │ │ ├── AliPayConfigRepository.java
│ │ │ │ └── EmailConfigRepository.java
│ │ │ │ ├── service
│ │ │ │ ├── AliPayService.java
│ │ │ │ ├── EmailService.java
│ │ │ │ └── impl
│ │ │ │ │ ├── AliPayServiceImpl.java
│ │ │ │ │ └── EmailServiceImpl.java
│ │ │ │ └── util
│ │ │ │ ├── AliPayStatusEnum.java
│ │ │ │ └── AliPayUtils.java
│ │ │ └── resources
│ │ │ └── mapper
│ │ │ └── sys
│ │ │ ├── DeptMapper.xml
│ │ │ ├── DeptRelationMapper.xml
│ │ │ ├── DictMapper.xml
│ │ │ ├── LogLoginMapper.xml
│ │ │ ├── LogOperateMapper.xml
│ │ │ ├── MenuMapper.xml
│ │ │ ├── RoleMapper.xml
│ │ │ ├── UserMapper.xml
│ │ │ └── UserRoleMapper.xml
│ ├── albedo-sys-domain
│ │ ├── pom.xml
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── com
│ │ │ └── albedo
│ │ │ └── java
│ │ │ └── modules
│ │ │ ├── sys
│ │ │ ├── cache
│ │ │ │ ├── ApplicationCacheKeyBuilder.java
│ │ │ │ ├── ApplicationClientCacheKeyBuilder.java
│ │ │ │ ├── DeptCacheKeyBuilder.java
│ │ │ │ ├── DictCacheKeyBuilder.java
│ │ │ │ ├── LogLoginBrowserCacheKeyBuilder.java
│ │ │ │ ├── LogLoginSystemCacheKeyBuilder.java
│ │ │ │ ├── LogLoginTenDayCacheKeyBuilder.java
│ │ │ │ ├── MenuCacheKeyBuilder.java
│ │ │ │ ├── ParameterKeyCacheKeyBuilder.java
│ │ │ │ ├── RoleCacheKeyBuilder.java
│ │ │ │ ├── TodayLoginIvCacheKeyBuilder.java
│ │ │ │ ├── TodayLoginPvCacheKeyBuilder.java
│ │ │ │ ├── TodayPvCacheKeyBuilder.java
│ │ │ │ ├── TokenUserIdCacheKeyBuilder.java
│ │ │ │ ├── TotalLoginIvCacheKeyBuilder.java
│ │ │ │ ├── TotalLoginPvCacheKeyBuilder.java
│ │ │ │ ├── TotalPvCacheKeyBuilder.java
│ │ │ │ └── UserCacheKeyBuilder.java
│ │ │ └── domain
│ │ │ │ ├── ApplicationDo.java
│ │ │ │ ├── DeptDo.java
│ │ │ │ ├── DeptRelationDo.java
│ │ │ │ ├── DictDo.java
│ │ │ │ ├── LogLoginDo.java
│ │ │ │ ├── LogOperateDo.java
│ │ │ │ ├── MenuDo.java
│ │ │ │ ├── ParameterDo.java
│ │ │ │ ├── PersistentTokenDo.java
│ │ │ │ ├── RoleDeptDo.java
│ │ │ │ ├── RoleDo.java
│ │ │ │ ├── RoleMenuDo.java
│ │ │ │ ├── UserDo.java
│ │ │ │ ├── UserOnlineDo.java
│ │ │ │ ├── UserRoleDo.java
│ │ │ │ ├── dto
│ │ │ │ ├── ApplicationDto.java
│ │ │ │ ├── DeptDto.java
│ │ │ │ ├── DeptQueryDto.java
│ │ │ │ ├── DictDto.java
│ │ │ │ ├── DictQueryDto.java
│ │ │ │ ├── GenSchemeDto.java
│ │ │ │ ├── LogLoginDto.java
│ │ │ │ ├── LogLoginQueryDto.java
│ │ │ │ ├── LogOperateQueryDto.java
│ │ │ │ ├── MenuDto.java
│ │ │ │ ├── MenuQueryDto.java
│ │ │ │ ├── MenuSortDto.java
│ │ │ │ ├── MenuSortItemDto.java
│ │ │ │ ├── ParameterDto.java
│ │ │ │ ├── PersistentTokenQueryDto.java
│ │ │ │ ├── RoleDto.java
│ │ │ │ ├── RoleMenuDto.java
│ │ │ │ ├── RoleQueryDto.java
│ │ │ │ ├── UserDto.java
│ │ │ │ ├── UserEmailDto.java
│ │ │ │ ├── UserInfoDto.java
│ │ │ │ ├── UserOnlineQueryDto.java
│ │ │ │ └── UserQueryDto.java
│ │ │ │ ├── enums
│ │ │ │ ├── ApplicationAppTypeEnum.java
│ │ │ │ ├── AuthorizeType.java
│ │ │ │ ├── DataScopeType.java
│ │ │ │ ├── OnlineStatus.java
│ │ │ │ ├── Sex.java
│ │ │ │ └── UserTypeEnum.java
│ │ │ │ └── vo
│ │ │ │ ├── DeptVo.java
│ │ │ │ ├── DictVo.java
│ │ │ │ ├── ImageCode.java
│ │ │ │ ├── LogVo.java
│ │ │ │ ├── LoggerVo.java
│ │ │ │ ├── MenuMetaVo.java
│ │ │ │ ├── MenuTree.java
│ │ │ │ ├── MenuVo.java
│ │ │ │ ├── RoleComboVo.java
│ │ │ │ ├── UserExcelVo.java
│ │ │ │ ├── UserInfo.java
│ │ │ │ ├── UserPageVo.java
│ │ │ │ ├── UserSearchVo.java
│ │ │ │ ├── UserVo.java
│ │ │ │ └── account
│ │ │ │ ├── AvatarInfo.java
│ │ │ │ ├── LoginVo.java
│ │ │ │ ├── PasswordChangeVo.java
│ │ │ │ └── PasswordRestVo.java
│ │ │ └── tool
│ │ │ └── domain
│ │ │ ├── AlipayConfigDo.java
│ │ │ ├── EmailConfigDo.java
│ │ │ └── vo
│ │ │ ├── EmailVo.java
│ │ │ └── TradeVo.java
│ ├── albedo-sys-web
│ │ ├── pom.xml
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── com
│ │ │ └── albedo
│ │ │ └── java
│ │ │ └── modules
│ │ │ ├── sys
│ │ │ └── web
│ │ │ │ ├── AccoutResource.java
│ │ │ │ ├── AppendixResource.java
│ │ │ │ ├── DashboardResource.java
│ │ │ │ ├── DeptResource.java
│ │ │ │ ├── DictResource.java
│ │ │ │ ├── LogLoginResource.java
│ │ │ │ ├── LogOperateResource.java
│ │ │ │ ├── LogsResource.java
│ │ │ │ ├── MenuResource.java
│ │ │ │ ├── PersistentTokenResource.java
│ │ │ │ ├── RoleResource.java
│ │ │ │ ├── UserOnlineResource.java
│ │ │ │ └── UserResource.java
│ │ │ └── tool
│ │ │ └── web
│ │ │ ├── AliPayResource.java
│ │ │ └── EmailResource.java
│ └── pom.xml
├── albedo-tenant
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── albedo
│ │ │ └── java
│ │ │ └── modules
│ │ │ └── tenant
│ │ │ ├── cache
│ │ │ ├── TenantCacheKeyBuilder.java
│ │ │ └── TenantCodeCacheKeyBuilder.java
│ │ │ ├── domain
│ │ │ ├── Tenant.java
│ │ │ ├── TenantDatasourceConfig.java
│ │ │ └── dto
│ │ │ │ ├── TenantConnectDto.java
│ │ │ │ └── TenantDto.java
│ │ │ ├── enumeration
│ │ │ ├── TenantConnectTypeEnum.java
│ │ │ ├── TenantStatusEnum.java
│ │ │ └── TenantTypeEnum.java
│ │ │ ├── repository
│ │ │ ├── InitDbRepository.java
│ │ │ └── TenantRepository.java
│ │ │ ├── service
│ │ │ ├── TenantService.java
│ │ │ └── impl
│ │ │ │ └── TenantServiceImpl.java
│ │ │ ├── strategy
│ │ │ ├── InitSystemContext.java
│ │ │ ├── InitSystemStrategy.java
│ │ │ └── impl
│ │ │ │ ├── ColumnInitSystemStrategy.java
│ │ │ │ └── SchemaInitSystemStrategy.java
│ │ │ └── utils
│ │ │ └── DriverEnum.java
│ │ └── resources
│ │ └── mapper
│ │ └── tenant
│ │ ├── InitDbMapper.xml
│ │ └── TenantMapper.xml
└── pom.xml
├── albedo-plugin
├── albedo-plugin-biz-ip
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── albedo
│ │ │ │ └── java
│ │ │ │ └── plugins
│ │ │ │ └── ip
│ │ │ │ ├── Area.java
│ │ │ │ ├── enums
│ │ │ │ └── AreaTypeEnum.java
│ │ │ │ └── util
│ │ │ │ ├── AreaUtil.java
│ │ │ │ └── IpUtil.java
│ │ └── resources
│ │ │ ├── area.csv
│ │ │ └── ip2region.xdb
│ │ └── test
│ │ └── java
│ │ ├── AreaUtilTest.java
│ │ └── IpUtilTest.java
├── albedo-plugin-cache-starter
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── albedo
│ │ │ └── java
│ │ │ └── plugins
│ │ │ └── cache
│ │ │ ├── CacheAutoConfigure.java
│ │ │ ├── CaffeineAutoConfigure.java
│ │ │ ├── RedisAutoConfigure.java
│ │ │ ├── lock
│ │ │ ├── CaffeineDistributedLock.java
│ │ │ └── RedisDistributedLock.java
│ │ │ ├── properties
│ │ │ ├── CacheType.java
│ │ │ ├── CustomCacheProperties.java
│ │ │ └── SerializerType.java
│ │ │ ├── redis
│ │ │ ├── NullVal.java
│ │ │ └── RedisOps.java
│ │ │ ├── repository
│ │ │ ├── CacheOps.java
│ │ │ ├── CachePlusOps.java
│ │ │ └── impl
│ │ │ │ ├── CaffeineOpsImpl.java
│ │ │ │ └── RedisOpsImpl.java
│ │ │ └── utils
│ │ │ ├── RedisJacksonSerializer.java
│ │ │ └── RedisProtostuffSerializer.java
│ │ └── resources
│ │ ├── META-INF
│ │ └── spring.factories
│ │ └── limit.lua
├── albedo-plugin-database
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── albedo
│ │ │ └── java
│ │ │ └── plugins
│ │ │ └── database
│ │ │ ├── config
│ │ │ ├── BaseDatabaseConfiguration.java
│ │ │ ├── BaseMybatisConfiguration.java
│ │ │ ├── EntityMetaObjectHandler.java
│ │ │ └── defaults
│ │ │ │ └── BaseMasterDatabaseConfiguration.java
│ │ │ ├── handler
│ │ │ ├── AlbedoTenantLineHandler.java
│ │ │ └── MultiTenantLineHandler.java
│ │ │ ├── injector
│ │ │ ├── LampSqlInjector.java
│ │ │ └── method
│ │ │ │ └── UpdateAllById.java
│ │ │ ├── interceptor
│ │ │ ├── AlbedoTenantLineInnerInterceptor.java
│ │ │ ├── MultiTenantLineInnerInterceptor.java
│ │ │ └── SchemaInterceptor.java
│ │ │ ├── mybatis
│ │ │ ├── WriteInterceptor.java
│ │ │ ├── conditions
│ │ │ │ └── Wraps.java
│ │ │ ├── datascope
│ │ │ │ ├── DataScope.java
│ │ │ │ └── DataScopeInterceptor.java
│ │ │ ├── enums
│ │ │ │ └── SqlConstants.java
│ │ │ ├── query
│ │ │ │ ├── LambdaQueryWrapperX.java
│ │ │ │ └── QueryWrapperX.java
│ │ │ ├── repository
│ │ │ │ ├── BaseRepository.java
│ │ │ │ └── TreeRepository.java
│ │ │ ├── service
│ │ │ │ ├── BaseService.java
│ │ │ │ ├── CacheService.java
│ │ │ │ ├── DataCacheService.java
│ │ │ │ ├── DataService.java
│ │ │ │ ├── TreeService.java
│ │ │ │ └── impl
│ │ │ │ │ ├── AbstractCacheServiceImpl.java
│ │ │ │ │ ├── AbstractDataCacheServiceImpl.java
│ │ │ │ │ ├── AbstractTreeCacheServiceImpl.java
│ │ │ │ │ ├── AbstractTreeServiceImpl.java
│ │ │ │ │ ├── BaseServiceImpl.java
│ │ │ │ │ └── DataServiceImpl.java
│ │ │ ├── typehandler
│ │ │ │ ├── BaseLikeTypeHandler.java
│ │ │ │ ├── CustomEnumTypeHandler.java
│ │ │ │ ├── FullLikeTypeHandler.java
│ │ │ │ ├── LeftLikeTypeHandler.java
│ │ │ │ └── RightLikeTypeHandler.java
│ │ │ └── util
│ │ │ │ └── QueryWrapperUtil.java
│ │ │ ├── p6spy
│ │ │ └── TenantP6SpyLogger.java
│ │ │ ├── parsers
│ │ │ └── ReplaceSql.java
│ │ │ └── properties
│ │ │ ├── DatabaseProperties.java
│ │ │ ├── IdType.java
│ │ │ └── MultiTenantType.java
│ │ └── resources
│ │ └── templates
│ │ └── codet
│ │ ├── config-back.xml
│ │ ├── curd
│ │ ├── resource.xml
│ │ └── resourceIntTest.xml
│ │ ├── entity
│ │ ├── dto
│ │ │ ├── entityDto.xml
│ │ │ └── entityQueryCriteria.xml
│ │ ├── entityDo.xml
│ │ └── entityId.xml
│ │ ├── service
│ │ ├── repository.xml
│ │ ├── service.xml
│ │ └── serviceImpl.xml
│ │ └── treetable
│ │ ├── dto
│ │ ├── entityDto.xml
│ │ └── entityQueryCriteria.xml
│ │ ├── entityDo.xml
│ │ ├── repository.xml
│ │ ├── resource.xml
│ │ ├── resourceIntTest.xml
│ │ ├── service.xml
│ │ ├── serviceImpl.xml
│ │ └── vo
│ │ └── entityVo.xml
├── albedo-plugin-dynamic-datasource
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── java
│ │ └── com
│ │ └── albedo
│ │ └── java
│ │ └── plugins
│ │ └── dynamic
│ │ └── datasource
│ │ ├── DynamicDataSourceAutoConfiguration.java
│ │ ├── annotation
│ │ └── EnableDynamicDataSource.java
│ │ ├── config
│ │ ├── DataSourceProperties.java
│ │ ├── JdbcDynamicDataSourceProvider.java
│ │ └── LastParamDsProcessor.java
│ │ └── support
│ │ └── DataSourceConstants.java
├── albedo-plugin-swagger
│ ├── .gitignore
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── albedo
│ │ │ └── java
│ │ │ └── plugins
│ │ │ └── swagger
│ │ │ ├── annotation
│ │ │ └── EnableSwaggerDoc.java
│ │ │ └── config
│ │ │ ├── ApplicationSwaggerProperties.java
│ │ │ ├── SwaggerAutoConfiguration.java
│ │ │ └── apidoc
│ │ │ ├── PageableParameterBuilderPlugin.java
│ │ │ ├── SwaggerAutoConfiguration.java
│ │ │ ├── SwaggerPluginsAutoConfiguration.java
│ │ │ └── customizer
│ │ │ ├── AlbedoSwaggerCustomizer.java
│ │ │ ├── SwaggerCustomizer.java
│ │ │ └── SwaggerLoginApi.java
│ │ └── resources
│ │ └── META-INF
│ │ └── spring.factories
├── albedo-plugin-uid
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── java
│ │ └── com
│ │ ├── albedo
│ │ └── java
│ │ │ └── plugins
│ │ │ └── uid
│ │ │ └── WorkerNodeDao.java
│ │ └── baidu
│ │ └── fsg
│ │ └── uid
│ │ ├── BitsAllocator.java
│ │ ├── UidGenerator.java
│ │ ├── buffer
│ │ ├── BufferPaddingExecutor.java
│ │ ├── BufferedUidProvider.java
│ │ ├── RejectedPutBufferHandler.java
│ │ ├── RejectedTakeBufferHandler.java
│ │ └── RingBuffer.java
│ │ ├── exception
│ │ └── UidGenerateException.java
│ │ ├── impl
│ │ ├── CachedUidGenerator.java
│ │ ├── DefaultUidGenerator.java
│ │ └── HuToolUidGenerator.java
│ │ ├── utils
│ │ ├── DockerUtils.java
│ │ ├── NamingThreadFactory.java
│ │ ├── NetUtils.java
│ │ ├── PaddedAtomicLong.java
│ │ └── ValuedEnum.java
│ │ └── worker
│ │ ├── DisposableWorkerIdAssigner.java
│ │ ├── WorkerIdAssigner.java
│ │ ├── WorkerNodeType.java
│ │ └── entity
│ │ └── WorkerNodeEntity.java
└── pom.xml
├── albedo-servers
├── albedo-admin-server
│ ├── Dockerfile
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── albedo
│ │ │ │ └── java
│ │ │ │ └── modules
│ │ │ │ ├── AlbedoAdminApplication.java
│ │ │ │ └── ApplicationWebXml.java
│ │ └── resources
│ │ │ ├── config
│ │ │ ├── application-dev.yml
│ │ │ ├── application-prod.yml
│ │ │ └── application.yml
│ │ │ ├── logback-spring.xml
│ │ │ ├── spy.properties
│ │ │ └── templates
│ │ │ ├── codet
│ │ │ ├── config.xml
│ │ │ ├── curd
│ │ │ │ ├── viewIndex.xml
│ │ │ │ └── viewService.xml
│ │ │ └── treetable
│ │ │ │ ├── viewIndex.xml
│ │ │ │ └── viewService.xml
│ │ │ └── email
│ │ │ ├── email.ftl
│ │ │ └── taskAlarm.ftl
│ │ └── test
│ │ ├── java
│ │ └── com
│ │ │ └── albedo
│ │ │ └── java
│ │ │ ├── common
│ │ │ ├── JacksonTest.java
│ │ │ └── QuickSortArray.java
│ │ │ └── modules
│ │ │ ├── TestUtil.java
│ │ │ ├── base
│ │ │ ├── BaseDbAndRedisIntegrationTest.java
│ │ │ ├── BaseRedisIntegrationTest.java
│ │ │ └── SimulationRuntimeIntegrationTest.java
│ │ │ ├── quartz
│ │ │ └── web
│ │ │ │ └── JobDoResourceIntTest.java
│ │ │ └── sys
│ │ │ └── web
│ │ │ ├── DeptResourceIntTest.java
│ │ │ ├── DictResourceIntTest.java
│ │ │ ├── LogOperateResourceIntTest.java
│ │ │ ├── MenuResourceIntTest.java
│ │ │ ├── RoleResourceIntTest.java
│ │ │ └── UserResourceIntTest.java
│ │ └── resources
│ │ ├── config
│ │ ├── application-integration-test.yml
│ │ └── application.yml
│ │ └── logback-spring.xml
├── albedo-app-server
│ ├── Dockerfile
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── albedo
│ │ │ └── java
│ │ │ └── modules
│ │ │ ├── AlbedoApiApplication.java
│ │ │ ├── ApplicationWebXml.java
│ │ │ └── gen
│ │ │ └── web
│ │ │ ├── AccoutJwtResource.java
│ │ │ └── HelloResource.java
│ │ └── resources
│ │ ├── config
│ │ ├── application-dev.yml
│ │ ├── application-prod.yml
│ │ ├── application-swagger.yml
│ │ └── application.yml
│ │ └── logback-spring.xml
├── albedo-quartz-server
│ ├── Dockerfile
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── albedo
│ │ │ └── java
│ │ │ └── modules
│ │ │ ├── AlbedoQuartzApplication.java
│ │ │ ├── ApplicationWebXml.java
│ │ │ └── quartz
│ │ │ └── config
│ │ │ ├── ScheduleConfig.java
│ │ │ └── ScheduleReceiver.java
│ │ └── resources
│ │ ├── config
│ │ ├── application-dev.yml
│ │ ├── application-prod.yml
│ │ └── application.yml
│ │ └── logback-spring.xml
└── pom.xml
├── albedo-ui
├── .editorconfig
├── .env.development
├── .env.production
├── .eslintignore
├── .eslintrc.js
├── .gitignore
├── .travis.yml
├── Dockerfile
├── LICENSE
├── babel.config.js
├── jest.config.js
├── nginx.conf
├── package.json
├── plopfile.js
├── postcss.config.js
├── public
│ ├── favicon.ico
│ └── index.html
├── src
│ ├── App.vue
│ ├── api
│ │ ├── account.js
│ │ ├── common.js
│ │ ├── dashboard.js
│ │ └── data.js
│ ├── assets
│ │ ├── 401_images
│ │ │ └── 401.gif
│ │ ├── 404_images
│ │ │ ├── 404.png
│ │ │ └── 404_cloud.png
│ │ ├── avatar
│ │ │ ├── 17e420c250804efe904a09a33796d5a10.jpg
│ │ │ ├── 17e420c250804efe904a09a33796d5a16.jpg
│ │ │ ├── 19034103295190235.jpg
│ │ │ ├── 1d22f3e41d284f50b2c8fc32e0788698.jpeg
│ │ │ ├── 20180414165754.jpg
│ │ │ ├── 20180414165815.jpg
│ │ │ ├── 20180414165821.jpg
│ │ │ ├── 20180414165827.jpg
│ │ │ ├── 20180414165834.jpg
│ │ │ ├── 20180414165840.jpg
│ │ │ ├── 20180414165846.jpg
│ │ │ ├── 20180414165855.jpg
│ │ │ ├── 20180414165909.jpg
│ │ │ ├── 20180414165914.jpg
│ │ │ ├── 20180414165920.jpg
│ │ │ ├── 20180414165927.jpg
│ │ │ ├── 20180414165936.jpg
│ │ │ ├── 20180414165942.jpg
│ │ │ ├── 20180414165947.jpg
│ │ │ ├── 20180414165955.jpg
│ │ │ ├── 20180414170003.jpg
│ │ │ ├── 2dd7a2d09fa94bf8b5c52e5318868b4d9.jpg
│ │ │ ├── 2dd7a2d09fa94bf8b5c52e5318868b4df.jpg
│ │ │ ├── 496b3ace787342f7954b7045b8b06804.jpeg
│ │ │ ├── 595ba7b05f2e485eb50565a50cb6cc3c.jpeg
│ │ │ ├── 5997fedcc7bd4cffbd350b40d1b5b9824.jpg
│ │ │ ├── 5997fedcc7bd4cffbd350b40d1b5b987.jpg
│ │ │ ├── 87d8194bc9834e9f8f0228e9e530beb1.jpeg
│ │ │ ├── 8f5b60ef00714a399ee544d331231820.jpeg
│ │ │ ├── 964e40b005724165b8cf772355796c8c.jpeg
│ │ │ ├── BiazfanxmamNRoxxVxka.png
│ │ │ ├── WhxKECPNujWoWEFNdnJE.png
│ │ │ ├── a3b10296862e40edb811418d64455d00.jpeg
│ │ │ ├── a43456282d684e0b9319cf332f8ac468.jpeg
│ │ │ ├── bba284ac05b041a8b8b0d1927868d5c9x.jpg
│ │ │ ├── c7c4ee7be3eb4e73a19887dc713505145.jpg
│ │ │ ├── cnrhVkzwxjPwAaCfPbdc.png
│ │ │ ├── default.jpg
│ │ │ ├── ff698bb2d25c4d218b3256b46c706ece.jpeg
│ │ │ ├── gaOngJwsRYRaVAuXXcmB.png
│ │ │ ├── jZUIxmJycoymBprLOUbT.png
│ │ │ └── ubnKSIfAJTxIgXOKlciN.png
│ │ ├── icons
│ │ │ ├── index.js
│ │ │ ├── svg
│ │ │ │ ├── 404.svg
│ │ │ │ ├── Steve-Jobs.svg
│ │ │ │ ├── alipay.svg
│ │ │ │ ├── anq.svg
│ │ │ │ ├── app.svg
│ │ │ │ ├── backup.svg
│ │ │ │ ├── bug.svg
│ │ │ │ ├── chain.svg
│ │ │ │ ├── chart.svg
│ │ │ │ ├── clipboard.svg
│ │ │ │ ├── codeConsole.svg
│ │ │ │ ├── component.svg
│ │ │ │ ├── dashboard.svg
│ │ │ │ ├── database.svg
│ │ │ │ ├── date.svg
│ │ │ │ ├── deploy.svg
│ │ │ │ ├── dept.svg
│ │ │ │ ├── dev.svg
│ │ │ │ ├── develop.svg
│ │ │ │ ├── dictionary.svg
│ │ │ │ ├── doc.svg
│ │ │ │ ├── documentation.svg
│ │ │ │ ├── download.svg
│ │ │ │ ├── drag.svg
│ │ │ │ ├── edit.svg
│ │ │ │ ├── education.svg
│ │ │ │ ├── email.svg
│ │ │ │ ├── error.svg
│ │ │ │ ├── example.svg
│ │ │ │ ├── excel.svg
│ │ │ │ ├── exit-fullscreen.svg
│ │ │ │ ├── eye-open.svg
│ │ │ │ ├── eye.svg
│ │ │ │ ├── form.svg
│ │ │ │ ├── fullscreen.svg
│ │ │ │ ├── fwb.svg
│ │ │ │ ├── github.svg
│ │ │ │ ├── global-s.svg
│ │ │ │ ├── global.svg
│ │ │ │ ├── gonggao.svg
│ │ │ │ ├── guide.svg
│ │ │ │ ├── icon.svg
│ │ │ │ ├── image.svg
│ │ │ │ ├── index.svg
│ │ │ │ ├── international.svg
│ │ │ │ ├── ipvisits.svg
│ │ │ │ ├── java.svg
│ │ │ │ ├── language.svg
│ │ │ │ ├── link.svg
│ │ │ │ ├── list.svg
│ │ │ │ ├── lock.svg
│ │ │ │ ├── log.svg
│ │ │ │ ├── login.svg
│ │ │ │ ├── magnifying-glass.svg
│ │ │ │ ├── markdown.svg
│ │ │ │ ├── menu.svg
│ │ │ │ ├── message.svg
│ │ │ │ ├── mnt.svg
│ │ │ │ ├── money.svg
│ │ │ │ ├── monitor.svg
│ │ │ │ ├── nested.svg
│ │ │ │ ├── password.svg
│ │ │ │ ├── pdf.svg
│ │ │ │ ├── people.svg
│ │ │ │ ├── peoples.svg
│ │ │ │ ├── permission.svg
│ │ │ │ ├── phone.svg
│ │ │ │ ├── qiniu.svg
│ │ │ │ ├── qq.svg
│ │ │ │ ├── redis.svg
│ │ │ │ ├── role.svg
│ │ │ │ ├── search.svg
│ │ │ │ ├── server.svg
│ │ │ │ ├── shopping.svg
│ │ │ │ ├── size.svg
│ │ │ │ ├── skill.svg
│ │ │ │ ├── source.svg
│ │ │ │ ├── sqlMonitor.svg
│ │ │ │ ├── star.svg
│ │ │ │ ├── swagger.svg
│ │ │ │ ├── sys-tools.svg
│ │ │ │ ├── system.svg
│ │ │ │ ├── system1.svg
│ │ │ │ ├── tab.svg
│ │ │ │ ├── table.svg
│ │ │ │ ├── theme.svg
│ │ │ │ ├── timing.svg
│ │ │ │ ├── tools.svg
│ │ │ │ ├── tree-table.svg
│ │ │ │ ├── tree.svg
│ │ │ │ ├── unlock.svg
│ │ │ │ ├── user.svg
│ │ │ │ ├── user1.svg
│ │ │ │ ├── validCode.svg
│ │ │ │ ├── visits.svg
│ │ │ │ ├── web.svg
│ │ │ │ ├── wechat.svg
│ │ │ │ ├── weixin.svg
│ │ │ │ ├── zip.svg
│ │ │ │ └── zujian.svg
│ │ │ └── svgo.yml
│ │ ├── images
│ │ │ ├── avatar.png
│ │ │ └── logo.png
│ │ ├── logo
│ │ │ ├── dingtalk.png
│ │ │ ├── gitee.png
│ │ │ ├── github.png
│ │ │ ├── microsoft.png
│ │ │ ├── qq.png
│ │ │ └── tencent_cloud.png
│ │ ├── styles
│ │ │ ├── albedo.scss
│ │ │ ├── btn.scss
│ │ │ ├── element-ui.scss
│ │ │ ├── element-variables.scss
│ │ │ ├── index.scss
│ │ │ ├── mixin.scss
│ │ │ ├── sidebar.scss
│ │ │ ├── transition.scss
│ │ │ └── variables.scss
│ │ ├── 捐赠1.jpg
│ │ └── 捐赠2.jpg
│ ├── const
│ │ └── common.js
│ ├── directive
│ │ ├── clipboard
│ │ │ ├── clipboard.js
│ │ │ └── index.js
│ │ ├── el-drag-dialog
│ │ │ ├── drag.js
│ │ │ └── index.js
│ │ ├── el-table
│ │ │ ├── adaptive.js
│ │ │ └── index.js
│ │ ├── sticky.js
│ │ └── waves
│ │ │ ├── index.js
│ │ │ ├── waves.css
│ │ │ └── waves.js
│ ├── lang
│ │ ├── en.js
│ │ ├── index.js
│ │ └── zh.js
│ ├── layout
│ │ ├── components
│ │ │ ├── AppMain.vue
│ │ │ ├── Navbar.vue
│ │ │ ├── Settings
│ │ │ │ └── index.vue
│ │ │ ├── Sidebar
│ │ │ │ ├── FixiOSBug.js
│ │ │ │ ├── Item.vue
│ │ │ │ ├── Link.vue
│ │ │ │ ├── Logo.vue
│ │ │ │ ├── SidebarItem.vue
│ │ │ │ └── index.vue
│ │ │ ├── TagsView
│ │ │ │ ├── ScrollPane.vue
│ │ │ │ └── index.vue
│ │ │ └── index.js
│ │ ├── index.vue
│ │ └── mixin
│ │ │ └── ResizeHandler.js
│ ├── main.js
│ ├── mixins
│ │ └── crud.js
│ ├── router
│ │ ├── index.js
│ │ └── routers.js
│ ├── settings.js
│ ├── store
│ │ ├── getters.js
│ │ ├── index.js
│ │ └── modules
│ │ │ ├── api.js
│ │ │ ├── app.js
│ │ │ ├── dict.js
│ │ │ ├── permission.js
│ │ │ ├── settings.js
│ │ │ ├── tagsView.js
│ │ │ └── user.js
│ ├── utils
│ │ ├── auth.js
│ │ ├── charts-option.js
│ │ ├── clipboard.js
│ │ ├── common.js
│ │ ├── get-page-title.js
│ │ ├── open-window.js
│ │ ├── permission.js
│ │ ├── request.js
│ │ ├── rsa-encrypt.js
│ │ ├── scroll-to.js
│ │ ├── store.js
│ │ ├── upload.js
│ │ └── validate.js
│ └── views
│ │ ├── components
│ │ ├── Ace
│ │ │ └── index.vue
│ │ ├── Breadcrumb
│ │ │ └── index.vue
│ │ ├── Crud
│ │ │ ├── CRUD.operation.vue
│ │ │ ├── Pagination.vue
│ │ │ ├── RR.operation.vue
│ │ │ ├── UD.operation.vue
│ │ │ └── crud.js
│ │ ├── Doc
│ │ │ └── index.vue
│ │ ├── Echarts.vue
│ │ ├── Echarts
│ │ │ ├── BarChart.vue
│ │ │ ├── Category.vue
│ │ │ ├── Funnel.vue
│ │ │ ├── Gauge.vue
│ │ │ ├── Graph.vue
│ │ │ ├── HeatMap.vue
│ │ │ ├── Keyboard.vue
│ │ │ ├── Line3D.vue
│ │ │ ├── LineMarker.vue
│ │ │ ├── MixChart.vue
│ │ │ ├── PieChart.vue
│ │ │ ├── Point.vue
│ │ │ ├── RadarChart.vue
│ │ │ ├── Rich.vue
│ │ │ ├── Sankey.vue
│ │ │ ├── Scatter.vue
│ │ │ ├── Sunburst.vue
│ │ │ ├── ThemeRiver.vue
│ │ │ ├── WordCloud.vue
│ │ │ └── mixins
│ │ │ │ └── resize.js
│ │ ├── Editor.vue
│ │ ├── GithubCorner
│ │ │ └── index.vue
│ │ ├── Hamburger
│ │ │ └── index.vue
│ │ ├── HeaderSearch
│ │ │ └── index.vue
│ │ ├── IconSelect
│ │ │ ├── index.vue
│ │ │ └── requireIcons.js
│ │ ├── Icons
│ │ │ ├── element-icons.js
│ │ │ ├── index.vue
│ │ │ └── svg-icons.js
│ │ ├── Iframe
│ │ │ └── index.vue
│ │ ├── JavaEdit
│ │ │ └── index.vue
│ │ ├── LangSelect
│ │ │ └── index.vue
│ │ ├── MarkDown.vue
│ │ ├── Pagination
│ │ │ └── index.vue
│ │ ├── PanThumb
│ │ │ └── index.vue
│ │ ├── Permission
│ │ │ ├── index.js
│ │ │ └── permission.js
│ │ ├── RightPanel
│ │ │ └── index.vue
│ │ ├── Screenfull
│ │ │ └── index.vue
│ │ ├── SizeSelect
│ │ │ └── index.vue
│ │ ├── SvgIcon
│ │ │ └── index.vue
│ │ ├── ThemePicker
│ │ │ └── index.vue
│ │ ├── Upload
│ │ │ ├── CommonTree.vue
│ │ │ ├── Import.vue
│ │ │ ├── fileUpload.vue
│ │ │ ├── globalUploader.vue
│ │ │ ├── images
│ │ │ │ ├── image-icon.png
│ │ │ │ ├── text-icon.png
│ │ │ │ └── video-icon.png
│ │ │ ├── imgUpload.vue
│ │ │ └── js
│ │ │ │ ├── bus.js
│ │ │ │ └── config.js
│ │ ├── YamlEdit.vue
│ │ └── YamlEdit
│ │ │ └── index.vue
│ │ ├── dashboard
│ │ ├── LineChart.vue
│ │ ├── PanelGroup.vue
│ │ └── mixins
│ │ │ └── resize.js
│ │ ├── features
│ │ ├── 401.vue
│ │ ├── 404.vue
│ │ └── redirect.vue
│ │ ├── gen
│ │ ├── datasource-conf
│ │ │ ├── datasource-conf-service.js
│ │ │ └── index.vue
│ │ ├── index.vue
│ │ ├── scheme
│ │ │ ├── index.vue
│ │ │ └── scheme-service.js
│ │ └── table
│ │ │ ├── edit.vue
│ │ │ ├── index.vue
│ │ │ └── table-service.js
│ │ ├── home.vue
│ │ ├── login.vue
│ │ ├── monitor
│ │ ├── log-login
│ │ │ ├── index.vue
│ │ │ └── log-login-service.js
│ │ ├── log-operate
│ │ │ ├── index.vue
│ │ │ └── log-operate-service.js
│ │ ├── persistent-token
│ │ │ ├── index.vue
│ │ │ └── persistent-token-service.js
│ │ ├── server
│ │ │ ├── index.vue
│ │ │ └── redis-detail.vue
│ │ ├── sql
│ │ │ └── index.vue
│ │ └── user-online
│ │ │ ├── index.vue
│ │ │ └── user-online-service.js
│ │ ├── nested
│ │ ├── menu1
│ │ │ ├── index.vue
│ │ │ ├── menu1-1
│ │ │ │ └── index.vue
│ │ │ └── menu1-2
│ │ │ │ └── index.vue
│ │ └── menu2
│ │ │ └── index.vue
│ │ ├── profile
│ │ ├── components
│ │ │ ├── Account.vue
│ │ │ ├── Avatar.vue
│ │ │ ├── Password.vue
│ │ │ ├── Timeline.vue
│ │ │ └── UserCard.vue
│ │ └── index.vue
│ │ ├── quartz
│ │ └── job
│ │ │ ├── index.vue
│ │ │ ├── job-service.js
│ │ │ └── log.vue
│ │ ├── sys
│ │ ├── dept
│ │ │ ├── dept-service.js
│ │ │ └── index.vue
│ │ ├── dict
│ │ │ ├── dict-service.js
│ │ │ └── index.vue
│ │ ├── file
│ │ │ ├── edit.vue
│ │ │ ├── file-service.js
│ │ │ └── index.vue
│ │ ├── menu
│ │ │ ├── index.vue
│ │ │ └── menu-service.js
│ │ ├── role
│ │ │ ├── index.vue
│ │ │ └── role-service.js
│ │ └── user
│ │ │ ├── index.vue
│ │ │ └── user-service.js
│ │ └── tool
│ │ ├── alipay
│ │ ├── alipay-service.js
│ │ ├── config.vue
│ │ ├── index.vue
│ │ └── toPay.vue
│ │ ├── email
│ │ ├── config.vue
│ │ ├── email-service.js
│ │ ├── index.vue
│ │ └── send.vue
│ │ └── swagger
│ │ └── index.vue
└── vue.config.js
├── db
├── Dockerfile
└── albedo.sql
├── docker-compose.yml
└── pom.xml
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | # 对所有文件生效
4 | [*]
5 | charset = utf-8
6 | indent_style = space
7 | indent_size = 2
8 | end_of_line = lf
9 | insert_final_newline = true
10 | trim_trailing_whitespace = true
11 |
12 | [*.{java, xml}]
13 | indent_style = tab
14 | indent_size = 4
15 |
16 | [*.{yml, json}]
17 | indent_style = space
18 | indent_size = 2
19 |
20 | # 对后缀名为 md 的文件生效
21 | [*.md]
22 | trim_trailing_whitespace = false
23 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ### gradle ###
2 | .gradle
3 | /build/
4 | !gradle/wrapper/gradle-wrapper.jar
5 |
6 | ### STS ###
7 | .settings/
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | bin/’‘‘
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 | rebel.xml
22 |
23 | ### NetBeans ###
24 | nbproject/private/
25 | build/
26 | nbbuild/
27 | dist/
28 | nbdist/
29 | .nb-gradle/
30 |
31 | ### maven ###
32 | target/
33 | *.war
34 | *.ear
35 | *.zip
36 | *.tar
37 | *.tar.gz
38 |
39 | ### logs ####
40 | /logs/
41 | *.log
42 |
43 | ### temp ignore ###
44 | *.cache
45 | *.diff
46 | *.patch
47 | *.tmp
48 | *.java~
49 | *.properties~
50 | *.xml~
51 |
52 | ### system ignore ###
53 | .DS_Store
54 | Thumbs.db
55 | Servers
56 | .metadata
57 | gen_code
58 |
59 |
60 | /node_modules/*
61 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-core/src/main/java/com/albedo/java/common/core/aspect/LimitType.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019-2023 Albedo , somewhere (somewhere0813@gmail.com).
3 | *
4 | * you may not use this file except in compliance with the License.
5 | * You may obtain a copy of the License at
6 | *
7 | * https://www.gnu.org/licenses/lgpl.html
8 | *
9 | * Unless required by applicable law or agreed to in writing, software
10 | * distributed under the License is distributed on an "AS IS" BASIS,
11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | * See the License for the specific language governing permissions and
13 | * limitations under the License.
14 | */
15 |
16 | package com.albedo.java.common.core.aspect;
17 |
18 | /**
19 | * 限流枚举
20 | *
21 | * @author /
22 | */
23 | public enum LimitType {
24 |
25 | // 默认
26 | CUSTOMER,
27 | // by ip addr
28 | IP
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-core/src/main/java/com/albedo/java/common/core/cache/model/CacheKey.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.common.core.cache.model;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 | import org.springframework.lang.NonNull;
7 |
8 | import java.time.Duration;
9 |
10 | /**
11 | * 缓存 key 封装
12 | *
13 | * @author somewhere
14 | */
15 | @Data
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | public class CacheKey {
19 | /**
20 | * redis key
21 | */
22 | @NonNull
23 | private String key;
24 | /**
25 | * 超时时间 秒
26 | */
27 | private Duration expire;
28 |
29 | public CacheKey(final @NonNull String key) {
30 | this.key = key;
31 | }
32 |
33 |
34 | }
35 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-core/src/main/java/com/albedo/java/common/core/constant/ParameterKey.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.common.core.constant;
2 |
3 | /**
4 | * 全局参数表(c_parameter)的key
5 | *
6 | * @author somewhere
7 | * @date 2020年04月02日22:37:05
8 | */
9 | public interface ParameterKey {
10 |
11 | String LOGIN_POLICY = LoginPolicy.class.getSimpleName();
12 |
13 | enum LoginPolicy {
14 | /**
15 | * 一个用户在一个应用只能登录一次(如一个用户只能在一个APP上登录,也只能在一个PC端登录,但能同时登录PC和APP)
16 | * 后面的用户T掉前面的用户
17 | */
18 | ONLY_ONE_CLIENT,
19 |
20 | /**
21 | * 用户可以任意登录: token -> userid
22 | *
23 | * 不用T人,所有人登录都行
24 | */
25 | MANY,
26 | /**
27 | * 一个用户只能登录一次, 后面的用户T掉前面的用户LOGIN_POLICY
28 | */
29 | ONLY_ONE,
30 | ;
31 |
32 | public boolean eq(String val) {
33 | return this.name().equalsIgnoreCase(val);
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-core/src/main/java/com/albedo/java/common/core/context/ThreadLocalParam.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.common.core.context;
2 |
3 | import lombok.Builder;
4 | import lombok.Data;
5 |
6 | import java.io.Serializable;
7 |
8 | /**
9 | * 线程变量封装的参数
10 | *
11 | * @author somewhere
12 | * @date 2020/11/1 2:10 下午
13 | */
14 | @Data
15 | @Builder
16 | public class ThreadLocalParam implements Serializable {
17 | private Boolean boot;
18 | private String tenant;
19 | private Long userId;
20 | private String username;
21 | }
22 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-core/src/main/java/com/albedo/java/common/core/converter/BaseDateConverter.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.common.core.converter;
2 |
3 | import java.util.Map;
4 | import java.util.Set;
5 | import java.util.function.Function;
6 |
7 | /**
8 | * 解决入参为 Date类型
9 | *
10 | * @author somewhere
11 | * @date 2019-04-30
12 | */
13 | public abstract class BaseDateConverter {
14 |
15 | /**
16 | * 值转换
17 | *
18 | * @param source 源数据
19 | * @param function 回调
20 | * @return 转换后的数据
21 | */
22 | public T convert(String source, Function function) {
23 | if (source == null || source.isEmpty()) {
24 | return null;
25 | }
26 | String sourceTrim = source.trim();
27 | Set> entries = getFormat().entrySet();
28 | for (Map.Entry entry : entries) {
29 | if (sourceTrim.matches(entry.getValue())) {
30 | return function.apply(entry.getKey());
31 | }
32 | }
33 | throw new IllegalArgumentException("无效的日期参数格式:'" + sourceTrim + "'");
34 | }
35 |
36 | /**
37 | * 获取子类 具体的格式化表达式
38 | *
39 | * @return 格式化
40 | */
41 | protected abstract Map getFormat();
42 | }
43 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-core/src/main/java/com/albedo/java/common/core/domain/vo/DictQuery.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019-2023 Albedo , somewhere (somewhere0813@gmail.com).
3 | *
4 | * you may not use this file except in compliance with the License.
5 | * You may obtain a copy of the License at
6 | *
7 | * https://www.gnu.org/licenses/lgpl.html
8 | *
9 | * Unless required by applicable law or agreed to in writing, software
10 | * distributed under the License is distributed on an "AS IS" BASIS,
11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | * See the License for the specific language governing permissions and
13 | * limitations under the License.
14 | */
15 |
16 | package com.albedo.java.common.core.domain.vo;
17 |
18 | import io.swagger.v3.oas.annotations.media.Schema;
19 | import lombok.Data;
20 | import lombok.ToString;
21 |
22 | /**
23 | * Created by somewhere on 2017/3/2.
24 | *
25 | * @author somewhere
26 | */
27 | @Data
28 | @Schema
29 | @ToString
30 | public class DictQuery {
31 |
32 | private String code;
33 |
34 | private String filter;
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-core/src/main/java/com/albedo/java/common/core/domain/vo/EchoVo.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.common.core.domain.vo;
2 |
3 | import java.util.Map;
4 |
5 | /**
6 | * 注入VO 父类
7 | *
8 | * @author somewhere
9 | * @date 2021/3/22 2:22 下午
10 | */
11 | public interface EchoVo {
12 |
13 | /**
14 | * 回显值 集合
15 | *
16 | * @return 回显值 集合
17 | */
18 | Map getEchoMap();
19 | }
20 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-core/src/main/java/com/albedo/java/common/core/enumeration/BaseEnum.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.common.core.enumeration;
2 |
3 | import com.baomidou.mybatisplus.annotation.IEnum;
4 |
5 | /**
6 | * 枚举类型基类
7 | *
8 | * @author somewhere
9 | * @date 2019/07/26
10 | */
11 | public interface BaseEnum extends IEnum {
12 |
13 | /**
14 | * 编码
15 | *
16 | * @return 编码
17 | */
18 | default String getCode() {
19 | return toString();
20 | }
21 |
22 | /**
23 | * 描述
24 | *
25 | * @return 描述
26 | */
27 | String getText();
28 |
29 | /**
30 | * 扩展参数
31 | *
32 | * @return 扩展参数
33 | */
34 | default String getExtra() {
35 | return "";
36 | }
37 |
38 | /**
39 | * 判断val是否跟当前枚举相等
40 | *
41 | * @param val 值
42 | * @return 是否等于
43 | */
44 | default boolean eq(String val) {
45 | return this.getCode().equalsIgnoreCase(val);
46 | }
47 |
48 | /**
49 | * 枚举值
50 | *
51 | * @return 数据库中的值
52 | */
53 | @Override
54 | default String getValue() {
55 | return getCode();
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-core/src/main/java/com/albedo/java/common/core/exception/ArgumentException.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.common.core.exception;
2 |
3 |
4 | import com.albedo.java.common.core.exception.code.ResponseCode;
5 |
6 | /**
7 | * 业务参数异常
8 | * 用于在业务中,检测到非法参数时,进行抛出的异常。
9 | *
10 | * @author somewhere
11 | * @version 3.5.0
12 | */
13 | public class ArgumentException extends BaseUncheckedException {
14 |
15 | private static final long serialVersionUID = -3843907364558373817L;
16 |
17 | public ArgumentException(Throwable cause) {
18 | super(cause);
19 | }
20 |
21 | public ArgumentException(String message) {
22 | super(ResponseCode.BASE_VALID_PARAM.getCode(), message);
23 | }
24 |
25 | public ArgumentException(String message, Throwable cause) {
26 | super(ResponseCode.BASE_VALID_PARAM.getCode(), message, cause);
27 | }
28 |
29 | public ArgumentException(final String format, Object... args) {
30 | super(ResponseCode.BASE_VALID_PARAM.getCode(), format, args);
31 | }
32 |
33 | @Override
34 | public String toString() {
35 | return "ArgumentException [message=" + getMessage() + ", errorCode=" + getErrorCode() + "]";
36 | }
37 |
38 | }
39 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-core/src/main/java/com/albedo/java/common/core/exception/BaseException.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.common.core.exception;
2 |
3 | /**
4 | * 异常接口类
5 | *
6 | * @author somewhere
7 | * @version 1.0
8 | */
9 | public interface BaseException {
10 |
11 | /**
12 | * 统一参数验证异常码
13 | */
14 | int BASE_VALID_PARAM = -9;
15 |
16 | /**
17 | * 返回异常信息
18 | *
19 | * @return 异常信息
20 | */
21 | String getMessage();
22 |
23 | /**
24 | * 返回异常编码
25 | *
26 | * @return 异常编码
27 | */
28 | int getErrorCode();
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-core/src/main/java/com/albedo/java/common/core/exception/CommonException.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.common.core.exception;
2 |
3 | /**
4 | * 非业务异常
5 | * 用于在处理非业务逻辑时,进行抛出的异常。
6 | *
7 | * @author somewhere
8 | * @version 1.0
9 | * @see Exception
10 | */
11 | public class CommonException extends BaseCheckedException {
12 |
13 |
14 | public CommonException(int code, String message) {
15 | super(code, message);
16 | }
17 |
18 | public CommonException(int code, String format, Object... args) {
19 | super(code, format, args);
20 | }
21 |
22 | public CommonException wrap(int code, String format, Object... args) {
23 | return new CommonException(code, format, args);
24 | }
25 |
26 | @Override
27 | public String toString() {
28 | return "CommonException [message=" + getMessage() + ", errorCode=" + getErrorCode() + "]";
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-core/src/main/java/com/albedo/java/common/core/exception/FeignBizException.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.common.core.exception;
2 |
3 | /**
4 | * @author somewhere
5 | * @date 2018-11-23
6 | */
7 | public class FeignBizException extends RuntimeException {
8 | private static final long serialVersionUID = 1L;
9 |
10 | public FeignBizException(String message) {
11 | super(message);
12 | }
13 |
14 | public FeignBizException(Throwable cause) {
15 | super(cause);
16 | }
17 |
18 | public FeignBizException(String message, Throwable cause) {
19 | super(message, cause);
20 | }
21 |
22 | public FeignBizException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
23 | super(message, cause, enableSuppression, writableStackTrace);
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-core/src/main/java/com/albedo/java/common/core/exception/ForbiddenException.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.common.core.exception;
2 |
3 | import com.albedo.java.common.core.exception.code.BaseExceptionCode;
4 | import com.albedo.java.common.core.exception.code.ResponseCode;
5 |
6 | /**
7 | * 403 禁止访问
8 | *
9 | * @author somewhere
10 | * @version 1.0
11 | */
12 | public class ForbiddenException extends BaseUncheckedException {
13 |
14 | private static final long serialVersionUID = 1L;
15 |
16 | public ForbiddenException(int code, String message) {
17 | super(code, message);
18 | }
19 |
20 | public static ForbiddenException wrap(BaseExceptionCode ex) {
21 | return new ForbiddenException(ex.getCode(), ex.getMessage());
22 | }
23 |
24 | public static ForbiddenException wrap(String msg) {
25 | return new ForbiddenException(ResponseCode.FORBIDDEN.getCode(), msg);
26 | }
27 |
28 | @Override
29 | public String toString() {
30 | return "ForbiddenException [message=" + getMessage() + ", errorCode=" + getErrorCode() + "]";
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-core/src/main/java/com/albedo/java/common/core/exception/RuntimeMsgException.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.common.core.exception;
2 |
3 | import lombok.NoArgsConstructor;
4 |
5 | /**
6 | * @author somewhere
7 | * @date 😴2019年06月02日16:21:57
8 | */
9 | @NoArgsConstructor
10 | public class RuntimeMsgException extends RuntimeException {
11 | private static final long serialVersionUID = 1L;
12 |
13 | public RuntimeMsgException(String message) {
14 | super(message);
15 | }
16 |
17 | public RuntimeMsgException(Throwable cause) {
18 | super(cause);
19 | }
20 |
21 | public RuntimeMsgException(String message, Throwable cause) {
22 | super(message, cause);
23 | }
24 |
25 | public RuntimeMsgException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
26 | super(message, cause, enableSuppression, writableStackTrace);
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-core/src/main/java/com/albedo/java/common/core/exception/UnauthorizedException.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.common.core.exception;
2 |
3 |
4 | import com.albedo.java.common.core.exception.code.ResponseCode;
5 |
6 | /**
7 | * 401 未认证 未登录
8 | *
9 | * @author somewhere
10 | * @version 1.0
11 | */
12 | public class UnauthorizedException extends BaseUncheckedException {
13 |
14 | private static final long serialVersionUID = 1L;
15 |
16 | public UnauthorizedException(int code, String message) {
17 | super(code, message);
18 | }
19 |
20 | public UnauthorizedException(int code, String message, Throwable cause) {
21 | super(code, message, cause);
22 | }
23 |
24 | public static UnauthorizedException wrap(String msg) {
25 | return new UnauthorizedException(ResponseCode.UNAUTHORIZED.getCode(), msg);
26 | }
27 |
28 | @Override
29 | public String toString() {
30 | return "UnauthorizedException [message=" + getMessage() + ", errorCode=" + getErrorCode() + "]";
31 | }
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-core/src/main/java/com/albedo/java/common/core/exception/code/BaseExceptionCode.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.common.core.exception.code;
2 |
3 | /**
4 | * 异常编码
5 | *
6 | * @author somewhere
7 | * @date 2017-12-25 13:46
8 | */
9 | public interface BaseExceptionCode {
10 | /**
11 | * 异常编码
12 | *
13 | * @return 异常编码
14 | */
15 | int getCode();
16 |
17 | /**
18 | * 异常消息
19 | *
20 | * @return 异常消息
21 | */
22 | String getMessage();
23 | }
24 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-core/src/main/java/com/albedo/java/common/core/jackson/databind/LocalDateTimeDeserializer.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.common.core.jackson.databind;
2 |
3 | import com.fasterxml.jackson.core.JsonParser;
4 | import com.fasterxml.jackson.core.JsonProcessingException;
5 | import com.fasterxml.jackson.databind.DeserializationContext;
6 | import com.fasterxml.jackson.databind.JsonDeserializer;
7 |
8 | import java.io.IOException;
9 | import java.time.Instant;
10 | import java.time.LocalDateTime;
11 | import java.time.ZoneId;
12 |
13 | /**
14 | * LocalDateTime反序列化规则
15 | *
16 | * 会将毫秒级时间戳反序列化为LocalDateTime
17 | */
18 | public class LocalDateTimeDeserializer extends JsonDeserializer {
19 |
20 | public static final LocalDateTimeDeserializer INSTANCE = new LocalDateTimeDeserializer();
21 |
22 | @Override
23 | public LocalDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
24 | return LocalDateTime.ofInstant(Instant.ofEpochMilli(p.getValueAsLong()), ZoneId.systemDefault());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-core/src/main/java/com/albedo/java/common/core/jackson/databind/LocalDateTimeSerializer.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.common.core.jackson.databind;
2 |
3 | import com.fasterxml.jackson.core.JsonGenerator;
4 | import com.fasterxml.jackson.databind.JsonSerializer;
5 | import com.fasterxml.jackson.databind.SerializerProvider;
6 |
7 | import java.io.IOException;
8 | import java.time.LocalDateTime;
9 | import java.time.ZoneId;
10 |
11 | /**
12 | * LocalDateTime序列化规则
13 | *
14 | * 会将LocalDateTime序列化为毫秒级时间戳
15 | */
16 | public class LocalDateTimeSerializer extends JsonSerializer {
17 |
18 | public static final LocalDateTimeSerializer INSTANCE = new LocalDateTimeSerializer();
19 |
20 | @Override
21 | public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
22 | gen.writeNumber(value.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-core/src/main/resources/META-INF/spring.factories:
--------------------------------------------------------------------------------
1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
2 | com.albedo.java.common.core.config.RestTemplateConfiguration,\
3 | com.albedo.java.common.core.config.JacksonBaseConfiguration,\
4 | com.albedo.java.common.core.config.ApplicationProperties,\
5 | com.albedo.java.common.core.exception.handler.GlobalExceptionHandler,\
6 | com.albedo.java.common.core.util.SpringContextHolder
7 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-core/src/test/resources/application.yml:
--------------------------------------------------------------------------------
1 | # 加解密根密码
2 | jasypt:
3 | encryptor:
4 | password: albedo #根密码
5 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-log/src/main/java/com/albedo/java/common/log/enums/BusinessStatus.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.common.log.enums;
2 |
3 | /**
4 | * 操作状态
5 | *
6 | * @author somewhere
7 | */
8 | public enum BusinessStatus {
9 | /**
10 | * 成功
11 | */
12 | SUCCESS,
13 |
14 | /**
15 | * 失败
16 | */
17 | FAIL,
18 | }
19 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-log/src/main/java/com/albedo/java/common/log/enums/BusinessType.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.common.log.enums;
2 |
3 | /**
4 | * 业务操作类型
5 | *
6 | * @author somewhere
7 | */
8 | public enum BusinessType {
9 | /**
10 | * 其它
11 | */
12 | OTHER,
13 |
14 | /**
15 | * 编辑
16 | */
17 | EDIT,
18 | /**
19 | * 锁定
20 | */
21 | LOCK,
22 |
23 | /**
24 | * 删除
25 | */
26 | DELETE,
27 |
28 | /**
29 | * 导出
30 | */
31 | EXPORT,
32 |
33 | /**
34 | * 导入
35 | */
36 | IMPORT,
37 |
38 | /**
39 | * 强退
40 | */
41 | FORCE,
42 |
43 | /**
44 | * 生成代码
45 | */
46 | GENCODE,
47 | /**
48 | * 清空
49 | */
50 | CLEAN,
51 |
52 |
53 | }
54 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-log/src/main/java/com/albedo/java/common/log/enums/LogType.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.common.log.enums;
2 |
3 | /**
4 | * 日志类型
5 | *
6 | * @author somewhere
7 | */
8 | public enum LogType {
9 | /**
10 | * INFO
11 | */
12 | INFO,
13 | /**
14 | * WARN
15 | */
16 | WARN,
17 | /**
18 | * ERROR
19 | */
20 | ERROR
21 | }
22 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-log/src/main/java/com/albedo/java/common/log/enums/OperatorType.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.common.log.enums;
2 |
3 | /**
4 | * 操作人类别
5 | *
6 | * @author somewhere
7 | */
8 | public enum OperatorType {
9 | /**
10 | * 其它
11 | */
12 | OTHER,
13 |
14 | /**
15 | * 后台用户
16 | */
17 | MANAGE,
18 |
19 | /**
20 | * 手机端用户
21 | */
22 | MOBILE
23 | }
24 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-log/src/main/java/com/albedo/java/common/log/event/ParameterUpdateEvent.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.common.log.event;
2 |
3 | import com.albedo.java.common.log.event.model.ParameterUpdate;
4 | import org.springframework.context.ApplicationEvent;
5 |
6 | /**
7 | * 参数更新事件
8 | *
9 | * @author somewhere
10 | * @date 2020年03月18日17:22:55
11 | */
12 | public class ParameterUpdateEvent extends ApplicationEvent {
13 | public ParameterUpdateEvent(ParameterUpdate source) {
14 | super(source);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-log/src/main/java/com/albedo/java/common/log/event/ParameterUpdateListener.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.common.log.event;
2 |
3 | import com.albedo.java.common.core.context.ContextUtil;
4 | import com.albedo.java.common.log.event.model.ParameterUpdate;
5 | import lombok.RequiredArgsConstructor;
6 | import lombok.extern.slf4j.Slf4j;
7 | import org.springframework.context.event.EventListener;
8 | import org.springframework.scheduling.annotation.Async;
9 | import org.springframework.stereotype.Component;
10 |
11 | /**
12 | * 参数修改事件监听,用于调整具体的业务
13 | *
14 | * @author somewhere
15 | * @date 2020年03月18日17:39:59
16 | */
17 | @Component
18 | @Slf4j
19 | @RequiredArgsConstructor
20 | public class ParameterUpdateListener {
21 |
22 | @Async
23 | @EventListener({ParameterUpdateEvent.class})
24 | public void saveSysLog(ParameterUpdateEvent event) {
25 | ParameterUpdate source = (ParameterUpdate) event.getSource();
26 |
27 | ContextUtil.setTenant(source.getTenant());
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-log/src/main/java/com/albedo/java/common/log/event/model/ParameterUpdate.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.common.log.event.model;
2 |
3 | import lombok.*;
4 | import lombok.experimental.Accessors;
5 |
6 | import java.io.Serializable;
7 |
8 | /**
9 | * 登录状态DTO
10 | *
11 | * @author somewhere
12 | * @date 2020年03月18日17:25:44
13 | */
14 | @Data
15 | @NoArgsConstructor
16 | @AllArgsConstructor
17 | @Accessors(chain = true)
18 | @ToString(callSuper = true)
19 | @EqualsAndHashCode(callSuper = false)
20 | @Builder
21 | public class ParameterUpdate implements Serializable {
22 | private static final long serialVersionUID = -3124612657759050173L;
23 |
24 | private String key;
25 | private String value;
26 | private String oldValue;
27 |
28 | private String tenant;
29 | }
30 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-log/src/main/resources/META-INF/spring.factories:
--------------------------------------------------------------------------------
1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
2 | com.albedo.java.common.log.config.LogAutoConfiguration,\
3 | com.albedo.java.common.log.init.ApplicationLoggerInitializer
4 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-module/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | albedo-common
7 | com.albedo.java
8 | 3.3.18-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | albedo-common-module
13 |
14 |
15 |
16 |
17 | com.albedo.java
18 | albedo-common-core
19 |
20 |
21 |
22 | com.albedo.java
23 | albedo-common-log
24 |
25 |
26 |
27 | com.baomidou
28 | mybatis-plus-boot-starter
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-module/src/main/java/com/albedo/java/common/web/resource/BaseResource.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.common.web.resource;
2 |
3 | import com.albedo.java.common.core.resource.GeneralResource;
4 |
5 | /**
6 | * 基础控制器支持类 copyright 2014 albedo all right reserved author MrLi created on
7 | * 2014年10月15日 下午4:04:00
8 | *
9 | * @author somewhere
10 | */
11 | public class BaseResource extends GeneralResource {
12 |
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-module/src/main/resources/META-INF/spring.factories:
--------------------------------------------------------------------------------
1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
2 | com.albedo.java.common.runner.ContextInitRunner,\
3 | com.albedo.java.common.config.JacksonMapperConfiguration,\
4 | com.albedo.java.common.config.datasource.AuthorityDatabaseAutoConfiguration,\
5 | com.albedo.java.common.config.datasource.AuthorityMybatisAutoConfiguration,\
6 | com.albedo.java.common.config.GlobalMvcConfigurer
7 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-security/src/main/java/com/albedo/java/common/security/component/session/CustomSessionInformation.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.common.security.component.session;
2 |
3 | import org.springframework.security.core.session.SessionInformation;
4 |
5 | import java.util.Date;
6 |
7 | /**
8 | * 自定义的目的主要是redis序列化时需要默认构造,SessionInformation没有默认构造
9 | *
10 | * @author somewhere
11 | */
12 | public class CustomSessionInformation extends SessionInformation {
13 | private static final Object PRINCIPAL = new Object();
14 | private static final Date LAST_REQUEST = new Date();
15 |
16 | public CustomSessionInformation() {
17 | super(PRINCIPAL, "-1", LAST_REQUEST);
18 | }
19 |
20 | public CustomSessionInformation(Object principal, String sessionId, Date lastRequest) {
21 | super(principal, sessionId, lastRequest);
22 | }
23 |
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-security/src/main/java/com/albedo/java/common/security/event/SysUserOnlineEvent.java:
--------------------------------------------------------------------------------
1 |
2 | /*
3 | * Copyright (c) 2019-2023 Albedo , somewhere (somewhere0813@gmail.com).
4 | *
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://www.gnu.org/licenses/lgpl.html
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.albedo.java.common.security.event;
18 |
19 | import com.albedo.java.modules.sys.domain.UserOnlineDo;
20 | import org.springframework.context.ApplicationEvent;
21 |
22 | /**
23 | * @author somewhere 用户登录事件
24 | */
25 | public class SysUserOnlineEvent extends ApplicationEvent {
26 |
27 | public SysUserOnlineEvent(UserOnlineDo source) {
28 | super(source);
29 | }
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/albedo-common/albedo-common-security/src/main/resources/META-INF/spring.factories:
--------------------------------------------------------------------------------
1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
2 | com.albedo.java.common.security.config.SecurityAutoConfiguration,\
3 | com.albedo.java.common.security.config.SecurityJwtConfiguration
4 |
--------------------------------------------------------------------------------
/albedo-common/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | com.albedo.java
8 | albedo
9 | 3.3.18-SNAPSHOT
10 |
11 |
12 | albedo-common
13 | pom
14 |
15 | albedo 公共聚合模块
16 |
17 |
18 | albedo-common-core
19 | albedo-common-module
20 | albedo-common-log
21 | albedo-common-security
22 |
23 |
24 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-appendix/src/main/java/com/albedo/java/modules/file/domain/dto/AppendixQueryCriteria.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.file.domain.dto;
2 |
3 | import com.albedo.java.common.core.annotation.Query;
4 | import lombok.Data;
5 |
6 | import java.io.Serializable;
7 |
8 | /**
9 | * @author somewhere
10 | */
11 | @Data
12 | public class AppendixQueryCriteria implements Serializable {
13 |
14 | private static final long serialVersionUID = 1L;
15 |
16 | /**
17 | * F_NAME name : 名称
18 | */
19 | @Query(operator = Query.Operator.like, propName = "original_file_name")
20 | private String originalFileName;
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-appendix/src/main/java/com/albedo/java/modules/file/repository/AppendixRepository.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.file.repository;
2 |
3 | import com.albedo.java.modules.file.domain.Appendix;
4 | import com.albedo.java.plugins.database.mybatis.repository.BaseRepository;
5 | import org.apache.ibatis.annotations.Mapper;
6 |
7 | /**
8 | *
9 | * Mapper 接口
10 | * 业务附件
11 | *
12 | *
13 | * @author somewhere
14 | * @date 2021-06-30
15 | * @create [2021-06-30] [somewhere] [初始创建]
16 | */
17 | @Mapper
18 | public interface AppendixRepository extends BaseRepository {
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-file/albedo-file-biz/src/main/java/com/albedo/java/modules/file/repository/FileRepository.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.file.repository;
2 |
3 | import com.albedo.java.modules.file.domain.FileDo;
4 | import com.albedo.java.plugins.database.mybatis.repository.BaseRepository;
5 | import org.apache.ibatis.annotations.Mapper;
6 |
7 | /**
8 | *
9 | * Mapper 接口
10 | * 增量文件上传日志
11 | *
12 | *
13 | * @author somewhere
14 | * @date 2021-06-30
15 | * @create [2021-06-30] [somewhere] [初始创建]
16 | */
17 | @Mapper
18 | public interface FileRepository extends BaseRepository {
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-file/albedo-file-biz/src/main/java/com/albedo/java/modules/file/strategy/FileChunkStrategy.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.file.strategy;
2 |
3 |
4 | import com.albedo.java.common.core.util.Result;
5 | import com.albedo.java.modules.file.domain.FileDo;
6 | import com.albedo.java.modules.file.domain.dto.FileChunksMergeDto;
7 |
8 | /**
9 | * 文件分片处理策略类
10 | *
11 | * @author somewhere
12 | * @date 2019/06/19
13 | */
14 | public interface FileChunkStrategy {
15 |
16 | /**
17 | * 根据md5检测文件
18 | *
19 | * @param md5 md5
20 | * @param userId 用户id
21 | * @return 附件
22 | */
23 | FileDo md5Check(String md5, Long userId);
24 |
25 | /**
26 | * 合并文件
27 | *
28 | * @param merge 合并参数
29 | * @return 附件
30 | */
31 | Result chunksMerge(FileChunksMergeDto merge);
32 | }
33 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-file/albedo-file-domain/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | albedo-file
7 | com.albedo.java
8 | 3.3.18-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | albedo-file-domain
13 |
14 |
15 |
16 | com.albedo.java
17 | albedo-common-core
18 | 3.3.18-SNAPSHOT
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-file/albedo-file-domain/src/main/java/com/albedo/java/modules/file/domain/FileDeleteBo.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.file.domain;
2 |
3 | import com.albedo.java.modules.file.domain.enums.FileStorageType;
4 | import lombok.Builder;
5 | import lombok.Data;
6 |
7 | /**
8 | * 文件删除
9 | *
10 | * @author somewhere
11 | * @date 2019/05/07
12 | */
13 | @Data
14 | @Builder
15 | public class FileDeleteBo {
16 | /**
17 | * 桶
18 | */
19 | private String bucket;
20 | /**
21 | * 相对路径
22 | */
23 | private String path;
24 | /**
25 | * 存储类型
26 | */
27 | private FileStorageType storageType;
28 | }
29 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-file/albedo-file-domain/src/main/java/com/albedo/java/modules/file/domain/FileGetUrlBo.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.file.domain;
2 |
3 | import io.swagger.v3.oas.annotations.media.Schema;
4 | import lombok.*;
5 | import lombok.experimental.Accessors;
6 |
7 | import javax.validation.constraints.NotBlank;
8 | import java.io.Serializable;
9 |
10 | /**
11 | *
12 | * 实体类
13 | * 附件
14 | *
15 | *
16 | * @author somewhere
17 | * @since 2021-06-15
18 | */
19 | @Data
20 | @NoArgsConstructor
21 | @AllArgsConstructor
22 | @Accessors(chain = true)
23 | @ToString(callSuper = true)
24 | @EqualsAndHashCode(callSuper = false)
25 | @Builder
26 | @Schema(name = "FileGetUrlVO", description = "附件查询")
27 | public class FileGetUrlBo implements Serializable {
28 | private static final long serialVersionUID = 1L;
29 |
30 | @NotBlank(message = "请传入文件路径")
31 | private String path;
32 | private String originalFileName;
33 |
34 | private String bucket;
35 | }
36 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-file/albedo-file-domain/src/main/java/com/albedo/java/modules/file/domain/dto/FileChunkCheckDto.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.file.domain.dto;
2 |
3 | import io.swagger.v3.oas.annotations.media.Schema;
4 | import lombok.Data;
5 | import lombok.ToString;
6 |
7 | /**
8 | * 分片检测参数
9 | *
10 | * @author somewhere
11 | * @date 2018/08/28
12 | */
13 | @Data
14 | @ToString
15 | @Schema(name = "FileChunkCheck", description = "文件分片信息")
16 | public class FileChunkCheckDto {
17 |
18 | @Schema(name = "文件大小")
19 | private Long size;
20 | @Schema(name = "文件唯一名")
21 | private String name;
22 | @Schema(name = "分片索引")
23 | private Integer chunkIndex;
24 | }
25 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-file/albedo-file-domain/src/main/java/com/albedo/java/modules/file/domain/dto/FileChunksMergeDto.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.file.domain.dto;
2 |
3 | import io.swagger.v3.oas.annotations.media.Schema;
4 | import lombok.Data;
5 | import lombok.ToString;
6 |
7 | /**
8 | * 封建分片合并DTO
9 | *
10 | * @author somewhere
11 | * @date 2018/08/28
12 | */
13 | @Data
14 | @ToString
15 | @Schema(name = "FileChunksMerge", description = "文件合并实体")
16 | public class FileChunksMergeDto {
17 |
18 | @Schema(name = "文件唯一名 md5.js 生成的, 与后端生成的一致")
19 | private String name;
20 | @Schema(name = "原始文件名")
21 | private String submittedFileName;
22 |
23 | @Schema(name = "md5", description = "webuploader 自带的md5算法值, 与后端生成的不一致")
24 | private String md5;
25 |
26 | @Schema(name = "分片总数")
27 | private Integer chunks;
28 | @Schema(name = "后缀")
29 | private String ext;
30 | @Schema(name = "文件夹id")
31 | private Long folderId;
32 |
33 | @Schema(name = "大小")
34 | private Long size;
35 | @Schema(name = "类型")
36 | private String contextType;
37 | }
38 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-file/albedo-file-domain/src/main/java/com/albedo/java/modules/file/domain/dto/FileQueryCriteria.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.file.domain.dto;
2 |
3 | import com.albedo.java.common.core.annotation.Query;
4 | import lombok.Data;
5 |
6 | import java.io.Serializable;
7 |
8 | /**
9 | * @author somewhere
10 | */
11 | @Data
12 | public class FileQueryCriteria implements Serializable {
13 |
14 | private static final long serialVersionUID = 1L;
15 |
16 | /**
17 | *
18 | */
19 | @Query(operator = Query.Operator.like, propName = "biz_type")
20 | private String bizType;
21 | /**
22 | *
23 | */
24 | @Query(operator = Query.Operator.like, propName = "original_file_name")
25 | private String originalFileName;
26 | /**
27 | *
28 | */
29 | @Query(propName = "file_type")
30 | private String fileType;
31 | /**
32 | *
33 | */
34 | @Query(propName = "storage_type")
35 | private String storageType;
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-file/albedo-file-domain/src/main/java/com/albedo/java/modules/file/domain/dto/FileUploadDto.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.file.domain.dto;
2 |
3 | import io.swagger.v3.oas.annotations.media.Schema;
4 | import lombok.Data;
5 | import lombok.ToString;
6 |
7 | /**
8 | * 文件分片上传实体
9 | *
10 | * @author somewhere
11 | * @date 2018/08/29
12 | */
13 | @Data
14 | @Schema(name = "FileUpload", description = "文件分片上传实体")
15 | @ToString
16 | public class FileUploadDto {
17 | @Schema(name = "md5", description = "webuploader 自带的md5算法值, 与后端生成的不一致")
18 | private String md5;
19 | @Schema(name = "大小")
20 | private Long size;
21 | @Schema(name = "文件唯一名 md5.js生成的, 与后端生成的一致")
22 | private String name;
23 | @Schema(name = "分片总数")
24 | private Integer chunks;
25 | @Schema(name = "当前分片")
26 | private Integer chunk;
27 | @Schema(name = "最后更新时间")
28 | private String lastModifiedDate;
29 | @Schema(name = "类型")
30 | private String type;
31 | @Schema(name = "后缀")
32 | private String ext;
33 | @Schema(name = "文件夹id")
34 | private Long folderId;
35 | }
36 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-file/albedo-file-domain/src/main/java/com/albedo/java/modules/file/domain/vo/param/FileUploadVo.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.file.domain.vo.param;
2 |
3 |
4 | import com.albedo.java.modules.file.domain.enums.FileStorageType;
5 | import io.swagger.v3.oas.annotations.media.Schema;
6 | import lombok.Data;
7 |
8 | import javax.validation.constraints.NotBlank;
9 | import java.io.Serializable;
10 |
11 | /**
12 | * 附件上传
13 | *
14 | * @author somewhere
15 | * @date 2019-05-12 18:49
16 | */
17 | @Data
18 | @Schema(name = "FileUploadVO", description = "附件上传")
19 | public class FileUploadVo implements Serializable {
20 |
21 | @Schema(name = "业务类型")
22 | @NotBlank(message = "请填写业务类型")
23 | private String bizType;
24 |
25 | @Schema(name = "桶")
26 | private String bucket;
27 |
28 | @Schema(name = "存储类型")
29 | private FileStorageType storageType;
30 | }
31 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-file/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | com.albedo.java
7 | albedo-modules
8 | 3.3.18-SNAPSHOT
9 |
10 |
11 | 4.0.0
12 |
13 | albedo-file
14 | pom
15 |
16 | albedo-file-domain
17 | albedo-file-biz
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-gen/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | albedo-modules
7 | com.albedo.java
8 | 3.3.18-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | albedo-gen
13 |
14 |
15 |
16 |
17 | com.albedo.java
18 | albedo-common-security
19 |
20 |
21 | com.albedo.java
22 | albedo-sys-api
23 |
24 |
25 |
26 | com.albedo.java
27 | albedo-plugin-dynamic-datasource
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-gen/src/main/java/com/albedo/java/modules/gen/cache/DatasourceConfCacheKeyBuilder.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.gen.cache;
2 |
3 | import com.albedo.java.common.core.cache.model.CacheKeyBuilder;
4 | import com.albedo.java.common.core.constant.CacheKeyBuilderConstants;
5 |
6 | import java.time.Duration;
7 |
8 | /**
9 | * @author somewhere
10 | * @date 2021/10/21 11:25 上午
11 | */
12 | public class DatasourceConfCacheKeyBuilder implements CacheKeyBuilder {
13 | @Override
14 | public String getPrefix() {
15 | return CacheKeyBuilderConstants.GEN_DATASOURCE_CONF;
16 | }
17 |
18 | @Override
19 | public Duration getExpire() {
20 | return Duration.ofHours(12);
21 | }
22 | }
23 |
24 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-gen/src/main/java/com/albedo/java/modules/gen/cache/SchemeCacheKeyBuilder.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.gen.cache;
2 |
3 | import com.albedo.java.common.core.cache.model.CacheKeyBuilder;
4 | import com.albedo.java.common.core.constant.CacheKeyBuilderConstants;
5 |
6 | import java.time.Duration;
7 |
8 | /**
9 | * @author somewhere
10 | * @date 2021/10/21 11:25 上午
11 | */
12 | public class SchemeCacheKeyBuilder implements CacheKeyBuilder {
13 | @Override
14 | public String getPrefix() {
15 | return CacheKeyBuilderConstants.GEN_SCHEME;
16 | }
17 |
18 | @Override
19 | public Duration getExpire() {
20 | return Duration.ofHours(12);
21 | }
22 | }
23 |
24 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-gen/src/main/java/com/albedo/java/modules/gen/cache/TableCacheKeyBuilder.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.gen.cache;
2 |
3 | import com.albedo.java.common.core.cache.model.CacheKeyBuilder;
4 | import com.albedo.java.common.core.constant.CacheKeyBuilderConstants;
5 |
6 | import java.time.Duration;
7 |
8 | /**
9 | * @author somewhere
10 | * @date 2021/10/21 11:25 上午
11 | */
12 | public class TableCacheKeyBuilder implements CacheKeyBuilder {
13 | @Override
14 | public String getPrefix() {
15 | return CacheKeyBuilderConstants.GEN_TABLE;
16 | }
17 |
18 | @Override
19 | public Duration getExpire() {
20 | return Duration.ofHours(12);
21 | }
22 | }
23 |
24 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-gen/src/main/java/com/albedo/java/modules/gen/cache/TableColumnCacheKeyBuilder.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.gen.cache;
2 |
3 | import com.albedo.java.common.core.cache.model.CacheKeyBuilder;
4 | import com.albedo.java.common.core.constant.CacheKeyBuilderConstants;
5 |
6 | import java.time.Duration;
7 |
8 | /**
9 | * @author somewhere
10 | * @date 2021/10/21 11:25 上午
11 | */
12 | public class TableColumnCacheKeyBuilder implements CacheKeyBuilder {
13 | @Override
14 | public String getPrefix() {
15 | return CacheKeyBuilderConstants.GEN_TABLE_COLUMN;
16 | }
17 |
18 | @Override
19 | public Duration getExpire() {
20 | return Duration.ofHours(12);
21 | }
22 | }
23 |
24 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-gen/src/main/java/com/albedo/java/modules/gen/service/TemplateService.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019-2023 Albedo , somewhere (somewhere0813@gmail.com).
3 | *
4 | * you may not use this file except in compliance with the License.
5 | * You may obtain a copy of the License at
6 | *
7 | * https://www.gnu.org/licenses/lgpl.html
8 | *
9 | * Unless required by applicable law or agreed to in writing, software
10 | * distributed under the License is distributed on an "AS IS" BASIS,
11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | * See the License for the specific language governing permissions and
13 | * limitations under the License.
14 | */
15 |
16 | package com.albedo.java.modules.gen.service;
17 |
18 | /**
19 | * @author somewhere
20 | * @description
21 | * @date 2020/5/30 11:26 下午
22 | */
23 | public interface TemplateService {
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-gen/src/main/resources/mapper/gen/TableColumnMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-monitor/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | albedo-modules
7 | com.albedo.java
8 | 3.3.18-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | albedo-monitor
13 |
14 |
15 |
16 |
17 | com.albedo.java
18 | albedo-common-module
19 |
20 |
21 |
22 | com.github.oshi
23 | oshi-core
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-monitor/src/main/java/com/albedo/java/modules/monitor/domain/ReportSearchType.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019-2023 Albedo , somewhere (somewhere0813@gmail.com).
3 | *
4 | * you may not use this file except in compliance with the License.
5 | * You may obtain a copy of the License at
6 | *
7 | * https://www.gnu.org/licenses/lgpl.html
8 | *
9 | * Unless required by applicable law or agreed to in writing, software
10 | * distributed under the License is distributed on an "AS IS" BASIS,
11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | * See the License for the specific language governing permissions and
13 | * limitations under the License.
14 | */
15 |
16 | package com.albedo.java.modules.monitor.domain;
17 |
18 | /**
19 | * redis key数量 / 占用内存 /redis信息
20 | *
21 | * @author somewhere
22 | * @date 2021-03-08
23 | */
24 | public enum ReportSearchType {
25 |
26 | /**
27 | * key数量
28 | */
29 | KEY,
30 | /**
31 | * 占用内存
32 | */
33 | RAM,
34 | /**
35 | * redis信息
36 | */
37 | INFO
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-monitor/src/main/java/com/albedo/java/modules/monitor/service/MonitorService.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019-2023 Albedo , somewhere (somewhere0813@gmail.com).
3 | *
4 | * you may not use this file except in compliance with the License.
5 | * You may obtain a copy of the License at
6 | *
7 | * https://www.gnu.org/licenses/lgpl.html
8 | *
9 | * Unless required by applicable law or agreed to in writing, software
10 | * distributed under the License is distributed on an "AS IS" BASIS,
11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | * See the License for the specific language governing permissions and
13 | * limitations under the License.
14 | */
15 |
16 | package com.albedo.java.modules.monitor.service;
17 |
18 | import java.util.Map;
19 |
20 | /**
21 | * @author somewhere
22 | * @date 2020-05-02
23 | */
24 | public interface MonitorService {
25 |
26 | /**
27 | * 查询数据分页
28 | *
29 | * @return Map
30 | */
31 | Map getServers();
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM anapsix/alpine-java:8_server-jre_unlimited as builder
2 | WORKDIR /build
3 | ARG JAR_FILE=target/albedo-sys-server.jar
4 | COPY ${JAR_FILE} app.jar
5 | RUN java -Djarmode=layertools -jar app.jar extract && rm app.jar
6 |
7 | FROM anapsix/alpine-java:8_server-jre_unlimited
8 | LABEL maintainer="somewhere0813@gmail.com"
9 | ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms128m -Xmx256m -Djava.security.egd=fileDo:/dev/./urandom"
10 | WORKDIR albedo-sys-server
11 |
12 | COPY --from=builder /build/dependencies/ ./
13 | COPY --from=builder /build/snapshot-dependencies/ ./
14 | COPY --from=builder /build/spring-boot-loader/ ./
15 | COPY --from=builder /build/application/ ./
16 |
17 | EXPOSE 4000
18 |
19 | CMD sleep 5; java $JAVA_OPTS org.springframework.boot.loader.JarLauncher
20 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-api/src/main/java/com/albedo/java/modules/sys/feign/RemoteDeptService.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.sys.feign;
2 |
3 | import java.util.List;
4 |
5 | /**
6 | * @author somewhere
7 | * @description
8 | * @date 2020/6/1 11:10
9 | */
10 | public interface RemoteDeptService {
11 | /**
12 | * findDescendantIdList
13 | *
14 | * @param deptId
15 | * @return List
16 | * @author somewhere
17 | * @updateTime 2020/6/1 11:09
18 | */
19 | List findDescendantIdList(Long deptId);
20 | }
21 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-api/src/main/java/com/albedo/java/modules/sys/feign/RemoteDictService.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.sys.feign;
2 |
3 | import com.albedo.java.modules.sys.domain.DictDo;
4 |
5 | import java.util.List;
6 |
7 | /**
8 | * @author somewhere
9 | * @description
10 | * @date 2020/6/1 11:10
11 | */
12 | public interface RemoteDictService {
13 |
14 | /**
15 | * findAllOrderBySort
16 | *
17 | * @return java.lang.String
18 | * @author somewhere
19 | * @updateTime 2020/6/1 11:09
20 | */
21 | List findAllOrderBySort();
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-api/src/main/java/com/albedo/java/modules/sys/feign/RemoteLogLoginService.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019-2020, somowhere (somewhere0813@gmail.com).
3 | *
4 | * Licensed under the GNU Lesser General Public License 3.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://www.gnu.org/licenses/lgpl.html
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.albedo.java.modules.sys.feign;
18 |
19 | import com.albedo.java.modules.sys.domain.LogLoginDo;
20 |
21 | /**
22 | * @author somowhere
23 | * @date 2019/2/1
24 | */
25 | public interface RemoteLogLoginService {
26 | /**
27 | * 保存日志
28 | *
29 | * @param logLogin 日志实体
30 | * @return succes、false
31 | */
32 | boolean save(LogLoginDo logLogin);
33 | }
34 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-api/src/main/java/com/albedo/java/modules/sys/feign/RemoteMenuService.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.sys.feign;
2 |
3 | import com.albedo.java.modules.sys.domain.dto.GenSchemeDto;
4 |
5 | /**
6 | * @author somewhere
7 | * @description
8 | * @date 2020/6/1 11:10
9 | */
10 | public interface RemoteMenuService {
11 |
12 | /**
13 | * saveByGenScheme
14 | *
15 | * @param schemeDto
16 | * @return boolean
17 | * @author somewhere
18 | * @updateTime 2020/6/1 11:10
19 | */
20 | boolean saveByGenScheme(GenSchemeDto schemeDto);
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-api/src/main/java/com/albedo/java/modules/sys/feign/RemoteRoleService.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.sys.feign;
2 |
3 | import java.io.Serializable;
4 | import java.util.List;
5 |
6 | /**
7 | * @author somewhere
8 | * @description
9 | * @date 2020/6/1 11:18
10 | */
11 | public interface RemoteRoleService {
12 | /**
13 | * findDescendantIdList
14 | *
15 | * @param roleId
16 | * @return List
17 | * @author somewhere
18 | * @updateTime 2020/6/1 11:09
19 | */
20 | List findDeptIdsByRoleId(Serializable roleId);
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-biz/src/main/java/com/albedo/java/modules/sys/service/LogOperateService.java:
--------------------------------------------------------------------------------
1 |
2 | /*
3 | * Copyright (c) 2019-2023 Albedo , somewhere (somewhere0813@gmail.com).
4 | *
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://www.gnu.org/licenses/lgpl.html
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.albedo.java.modules.sys.service;
18 |
19 | import com.albedo.java.modules.sys.domain.LogOperateDo;
20 | import com.albedo.java.plugins.database.mybatis.service.BaseService;
21 |
22 | /**
23 | *
24 | * 日志表 服务类
25 | *
26 | *
27 | * @author somewhere
28 | * @since 2019/2/1
29 | */
30 | public interface LogOperateService extends BaseService {
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-biz/src/main/java/com/albedo/java/modules/sys/service/RoleDeptService.java:
--------------------------------------------------------------------------------
1 |
2 | /*
3 | * Copyright (c) 2019-2023 Albedo , somewhere (somewhere0813@gmail.com).
4 | *
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://www.gnu.org/licenses/lgpl.html
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.albedo.java.modules.sys.service;
18 |
19 | import com.albedo.java.modules.sys.domain.RoleDeptDo;
20 | import com.albedo.java.plugins.database.mybatis.service.BaseService;
21 |
22 | /**
23 | *
24 | * 角色菜单表 服务类
25 | *
26 | *
27 | * @author somewhere
28 | * @since 2019/2/1
29 | */
30 | public interface RoleDeptService extends BaseService {
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-biz/src/main/resources/mapper/sys/LogOperateMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-domain/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | albedo-sys
7 | com.albedo.java
8 | 3.3.18-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | albedo-sys-domain
13 |
14 |
15 |
16 |
17 | com.albedo.java
18 | albedo-common-core
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-domain/src/main/java/com/albedo/java/modules/sys/cache/ApplicationCacheKeyBuilder.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.sys.cache;
2 |
3 | import com.albedo.java.common.core.cache.model.CacheKeyBuilder;
4 | import com.albedo.java.common.core.constant.CacheKeyBuilderConstants;
5 |
6 | import java.time.Duration;
7 |
8 | /**
9 | * 应用 KEY
10 | *
11 | * #c_auth_application
12 | *
13 | * @author somewhere
14 | * @date 2020/9/20 6:45 下午
15 | */
16 | public class ApplicationCacheKeyBuilder implements CacheKeyBuilder {
17 | @Override
18 | public String getPrefix() {
19 | return CacheKeyBuilderConstants.APPLICATION;
20 | }
21 |
22 | @Override
23 | public Duration getExpire() {
24 | return Duration.ofHours(24);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-domain/src/main/java/com/albedo/java/modules/sys/cache/ApplicationClientCacheKeyBuilder.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.sys.cache;
2 |
3 | import com.albedo.java.common.core.cache.model.CacheKeyBuilder;
4 | import com.albedo.java.common.core.constant.CacheKeyBuilderConstants;
5 |
6 | import java.time.Duration;
7 |
8 | /**
9 | * 应用 KEY
10 | *
11 | * #c_auth_application
12 | *
13 | * @author somewhere
14 | * @date 2020/9/20 6:45 下午
15 | */
16 | public class ApplicationClientCacheKeyBuilder implements CacheKeyBuilder {
17 | @Override
18 | public String getPrefix() {
19 | return CacheKeyBuilderConstants.APPLICATION_CLIENT;
20 | }
21 |
22 | @Override
23 | public Duration getExpire() {
24 | return Duration.ofHours(24);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-domain/src/main/java/com/albedo/java/modules/sys/cache/DeptCacheKeyBuilder.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.sys.cache;
2 |
3 | import com.albedo.java.common.core.cache.model.CacheKeyBuilder;
4 | import com.albedo.java.common.core.constant.CacheKeyBuilderConstants;
5 |
6 | import java.time.Duration;
7 |
8 | /**
9 | * @author somewhere
10 | * @date 2021/10/21 11:25 上午
11 | */
12 | public class DeptCacheKeyBuilder implements CacheKeyBuilder {
13 | @Override
14 | public String getPrefix() {
15 | return CacheKeyBuilderConstants.DEPT;
16 | }
17 |
18 | @Override
19 | public Duration getExpire() {
20 | return Duration.ofHours(12);
21 | }
22 | }
23 |
24 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-domain/src/main/java/com/albedo/java/modules/sys/cache/DictCacheKeyBuilder.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.sys.cache;
2 |
3 | import com.albedo.java.common.core.cache.model.CacheKeyBuilder;
4 | import com.albedo.java.common.core.constant.CacheKeyBuilderConstants;
5 |
6 | import java.time.Duration;
7 |
8 | /**
9 | * @author somewhere
10 | * @date 2021/10/21 11:25 上午
11 | */
12 | public class DictCacheKeyBuilder implements CacheKeyBuilder {
13 | @Override
14 | public String getPrefix() {
15 | return CacheKeyBuilderConstants.DICT;
16 | }
17 |
18 | @Override
19 | public Duration getExpire() {
20 | return Duration.ofHours(12);
21 | }
22 | }
23 |
24 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-domain/src/main/java/com/albedo/java/modules/sys/cache/LogLoginBrowserCacheKeyBuilder.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.sys.cache;
2 |
3 |
4 | import com.albedo.java.common.core.cache.model.CacheKeyBuilder;
5 | import com.albedo.java.common.core.constant.CacheKeyBuilderConstants;
6 |
7 | /**
8 | * 参数 KEY
9 | * {tenant}:LOGIN_LOG_BROWSER -> long
10 | *
11 | * #sys_log_login
12 | *
13 | * @author somewhere
14 | * @date 2020/9/20 6:45 下午
15 | */
16 | public class LogLoginBrowserCacheKeyBuilder implements CacheKeyBuilder {
17 | @Override
18 | public String getPrefix() {
19 | return CacheKeyBuilderConstants.LOGIN_LOG_BROWSER;
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-domain/src/main/java/com/albedo/java/modules/sys/cache/LogLoginSystemCacheKeyBuilder.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.sys.cache;
2 |
3 |
4 | import com.albedo.java.common.core.cache.model.CacheKeyBuilder;
5 | import com.albedo.java.common.core.constant.CacheKeyBuilderConstants;
6 |
7 | /**
8 | * 参数 KEY
9 | * {tenant}:LOGIN_LOG_SYSTEM -> long
10 | *
11 | * #sys_log_login
12 | *
13 | * @author somewhere
14 | * @date 2020/9/20 6:45 下午
15 | */
16 | public class LogLoginSystemCacheKeyBuilder implements CacheKeyBuilder {
17 | @Override
18 | public String getPrefix() {
19 | return CacheKeyBuilderConstants.LOGIN_LOG_SYSTEM;
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-domain/src/main/java/com/albedo/java/modules/sys/cache/LogLoginTenDayCacheKeyBuilder.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.sys.cache;
2 |
3 |
4 | import com.albedo.java.common.core.cache.model.CacheKeyBuilder;
5 | import com.albedo.java.common.core.constant.CacheKeyBuilderConstants;
6 |
7 | /**
8 | * 参数 KEY
9 | * {tenant}:LOGIN_LOG_TEN_DAY -> long
10 | *
11 | * #sys_log_login
12 | *
13 | * @author somewhere
14 | * @date 2020/9/20 6:45 下午
15 | */
16 | public class LogLoginTenDayCacheKeyBuilder implements CacheKeyBuilder {
17 | @Override
18 | public String getPrefix() {
19 | return CacheKeyBuilderConstants.LOGIN_LOG_TEN_DAY;
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-domain/src/main/java/com/albedo/java/modules/sys/cache/MenuCacheKeyBuilder.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.sys.cache;
2 |
3 | import com.albedo.java.common.core.cache.model.CacheKeyBuilder;
4 | import com.albedo.java.common.core.constant.CacheKeyBuilderConstants;
5 |
6 | import java.time.Duration;
7 |
8 | /**
9 | * @author somewhere
10 | * @date 2021/10/21 11:25 上午
11 | */
12 | public class MenuCacheKeyBuilder implements CacheKeyBuilder {
13 | @Override
14 | public String getPrefix() {
15 | return CacheKeyBuilderConstants.MENU;
16 | }
17 |
18 | @Override
19 | public Duration getExpire() {
20 | return Duration.ofHours(12);
21 | }
22 | }
23 |
24 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-domain/src/main/java/com/albedo/java/modules/sys/cache/ParameterKeyCacheKeyBuilder.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.sys.cache;
2 |
3 |
4 | import com.albedo.java.common.core.cache.model.CacheKeyBuilder;
5 | import com.albedo.java.common.core.constant.CacheKeyBuilderConstants;
6 |
7 | /**
8 | * 参数 KEY
9 | * {tenant}:PARAMETER_KEY:{key} -> value
10 | *
11 | * #c_parameter
12 | *
13 | * @author somewhere
14 | * @date 2020/9/20 6:45 下午
15 | */
16 | public class ParameterKeyCacheKeyBuilder implements CacheKeyBuilder {
17 | @Override
18 | public String getPrefix() {
19 | return CacheKeyBuilderConstants.PARAMETER_KEY;
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-domain/src/main/java/com/albedo/java/modules/sys/cache/RoleCacheKeyBuilder.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.sys.cache;
2 |
3 | import com.albedo.java.common.core.cache.model.CacheKeyBuilder;
4 | import com.albedo.java.common.core.constant.CacheKeyBuilderConstants;
5 |
6 | import java.time.Duration;
7 |
8 | /**
9 | * @author somewhere
10 | * @date 2021/10/21 11:25 上午
11 | */
12 | public class RoleCacheKeyBuilder implements CacheKeyBuilder {
13 | @Override
14 | public String getPrefix() {
15 | return CacheKeyBuilderConstants.ROLE;
16 | }
17 |
18 | @Override
19 | public Duration getExpire() {
20 | return Duration.ofHours(12);
21 | }
22 | }
23 |
24 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-domain/src/main/java/com/albedo/java/modules/sys/cache/TodayLoginIvCacheKeyBuilder.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.sys.cache;
2 |
3 |
4 | import com.albedo.java.common.core.cache.model.CacheKey;
5 | import com.albedo.java.common.core.cache.model.CacheKeyBuilder;
6 | import com.albedo.java.common.core.constant.CacheKeyBuilderConstants;
7 |
8 | import java.time.Duration;
9 | import java.time.LocalDate;
10 |
11 | /**
12 | * 参数 KEY
13 | * {tenant}:TODAY_LOGIN_IV:{now} -> long
14 | *
15 | * #sys_log_login
16 | *
17 | * @author somewhere
18 | * @date 2020/9/20 6:45 下午
19 | */
20 | public class TodayLoginIvCacheKeyBuilder implements CacheKeyBuilder {
21 | public static CacheKey build(LocalDate now) {
22 | return new TodayLoginIvCacheKeyBuilder().key(now.toString());
23 | }
24 |
25 | @Override
26 | public String getPrefix() {
27 | return CacheKeyBuilderConstants.TODAY_LOGIN_IV;
28 | }
29 |
30 | @Override
31 | public Duration getExpire() {
32 | return Duration.ofDays(2L);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-domain/src/main/java/com/albedo/java/modules/sys/cache/TodayLoginPvCacheKeyBuilder.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.sys.cache;
2 |
3 |
4 | import com.albedo.java.common.core.cache.model.CacheKey;
5 | import com.albedo.java.common.core.cache.model.CacheKeyBuilder;
6 | import com.albedo.java.common.core.constant.CacheKeyBuilderConstants;
7 |
8 | import java.time.Duration;
9 | import java.time.LocalDate;
10 |
11 | /**
12 | * 参数 KEY
13 | * {tenant}:TODAY_LOGIN_PV -> long
14 | *
15 | * #sys_log_login
16 | *
17 | * @author somewhere
18 | * @date 2020/9/20 6:45 下午
19 | */
20 | public class TodayLoginPvCacheKeyBuilder implements CacheKeyBuilder {
21 | public static CacheKey build(LocalDate now) {
22 | return new TodayLoginPvCacheKeyBuilder().key(now.toString());
23 | }
24 |
25 | @Override
26 | public String getPrefix() {
27 | return CacheKeyBuilderConstants.TODAY_LOGIN_PV;
28 | }
29 |
30 | @Override
31 | public Duration getExpire() {
32 | return Duration.ofDays(2L);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-domain/src/main/java/com/albedo/java/modules/sys/cache/TodayPvCacheKeyBuilder.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.sys.cache;
2 |
3 |
4 | import com.albedo.java.common.core.cache.model.CacheKey;
5 | import com.albedo.java.common.core.cache.model.CacheKeyBuilder;
6 | import com.albedo.java.common.core.constant.CacheKeyBuilderConstants;
7 |
8 | import java.time.Duration;
9 | import java.time.LocalDate;
10 |
11 | /**
12 | * 参数 KEY
13 | * {tenant}:TODAY_PV:{now} -> long
14 | *
15 | *
16 | * @author somewhere
17 | * @date 2020/9/20 6:45 下午
18 | */
19 | public class TodayPvCacheKeyBuilder implements CacheKeyBuilder {
20 | public static CacheKey build(LocalDate now) {
21 | return new TodayPvCacheKeyBuilder().key(now.toString());
22 | }
23 |
24 | @Override
25 | public String getPrefix() {
26 | return CacheKeyBuilderConstants.TODAY_PV;
27 | }
28 |
29 | @Override
30 | public Duration getExpire() {
31 | return Duration.ofDays(2L);
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-domain/src/main/java/com/albedo/java/modules/sys/cache/TokenUserIdCacheKeyBuilder.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.sys.cache;
2 |
3 |
4 | import com.albedo.java.common.core.cache.model.CacheKeyBuilder;
5 | import com.albedo.java.common.core.constant.CacheKeyBuilderConstants;
6 |
7 | /**
8 | * 参数 KEY
9 | *
10 | * #c_application
11 | *
12 | * @author somewhere
13 | * @date 2020/9/20 6:45 下午
14 | */
15 | public class TokenUserIdCacheKeyBuilder implements CacheKeyBuilder {
16 | @Override
17 | public String getPrefix() {
18 | return CacheKeyBuilderConstants.TOKEN_USER_ID;
19 | }
20 |
21 | // @Override
22 | // public Duration getExpire() {
23 | // return Duration.ofMinutes(15);
24 | // }
25 | }
26 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-domain/src/main/java/com/albedo/java/modules/sys/cache/TotalLoginIvCacheKeyBuilder.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.sys.cache;
2 |
3 |
4 | import com.albedo.java.common.core.cache.model.CacheKey;
5 | import com.albedo.java.common.core.cache.model.CacheKeyBuilder;
6 | import com.albedo.java.common.core.constant.CacheKeyBuilderConstants;
7 |
8 | /**
9 | * 参数 KEY
10 | * {tenant}:TOTAL_LOGIN_IV -> long
11 | *
12 | * #sys_log_login
13 | *
14 | * @author somewhere
15 | * @date 2020/9/20 6:45 下午
16 | */
17 | public class TotalLoginIvCacheKeyBuilder implements CacheKeyBuilder {
18 | public static CacheKey build() {
19 | return new TodayLoginIvCacheKeyBuilder().key();
20 | }
21 |
22 | @Override
23 | public String getPrefix() {
24 | return CacheKeyBuilderConstants.TOTAL_LOGIN_IV;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-domain/src/main/java/com/albedo/java/modules/sys/cache/TotalLoginPvCacheKeyBuilder.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.sys.cache;
2 |
3 |
4 | import com.albedo.java.common.core.cache.model.CacheKey;
5 | import com.albedo.java.common.core.cache.model.CacheKeyBuilder;
6 | import com.albedo.java.common.core.constant.CacheKeyBuilderConstants;
7 |
8 | /**
9 | * 参数 KEY
10 | * {tenant}:TOTAL_LOGIN_PV -> long
11 | *
12 | * #sys_log_login
13 | *
14 | * @author somewhere
15 | * @date 2020/9/20 6:45 下午
16 | */
17 | public class TotalLoginPvCacheKeyBuilder implements CacheKeyBuilder {
18 | public static CacheKey build() {
19 | return new TotalLoginPvCacheKeyBuilder().key();
20 | }
21 |
22 | @Override
23 | public String getPrefix() {
24 | return CacheKeyBuilderConstants.TOTAL_LOGIN_PV;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-domain/src/main/java/com/albedo/java/modules/sys/cache/TotalPvCacheKeyBuilder.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.sys.cache;
2 |
3 |
4 | import com.albedo.java.common.core.cache.model.CacheKey;
5 | import com.albedo.java.common.core.cache.model.CacheKeyBuilder;
6 | import com.albedo.java.common.core.constant.CacheKeyBuilderConstants;
7 |
8 | /**
9 | * 参数 KEY
10 | * {tenant}:TOTAL_PV -> long
11 | *
12 | * @author somewhere
13 | * @date 2020/9/20 6:45 下午
14 | */
15 | public class TotalPvCacheKeyBuilder implements CacheKeyBuilder {
16 | public static CacheKey build() {
17 | return new TotalPvCacheKeyBuilder().key();
18 | }
19 |
20 | @Override
21 | public String getPrefix() {
22 | return CacheKeyBuilderConstants.TOTAL_PV;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-domain/src/main/java/com/albedo/java/modules/sys/cache/UserCacheKeyBuilder.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.sys.cache;
2 |
3 | import com.albedo.java.common.core.cache.model.CacheKeyBuilder;
4 | import com.albedo.java.common.core.constant.CacheKeyBuilderConstants;
5 |
6 | import java.time.Duration;
7 |
8 | /**
9 | * @author somewhere
10 | * @date 2021/10/21 11:25 上午
11 | */
12 | public class UserCacheKeyBuilder implements CacheKeyBuilder {
13 | @Override
14 | public String getPrefix() {
15 | return CacheKeyBuilderConstants.USER;
16 | }
17 |
18 | @Override
19 | public Duration getExpire() {
20 | return Duration.ofHours(12);
21 | }
22 | }
23 |
24 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-domain/src/main/java/com/albedo/java/modules/sys/domain/vo/LoggerVo.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.sys.domain.vo;
2 |
3 | import ch.qos.logback.classic.Logger;
4 | import com.fasterxml.jackson.annotation.JsonCreator;
5 |
6 | public class LoggerVo {
7 | private String name;
8 |
9 | private String level;
10 |
11 | public LoggerVo(Logger logger) {
12 | this.name = logger.getName();
13 | this.level = logger.getEffectiveLevel().toString();
14 | }
15 |
16 | @JsonCreator
17 | public LoggerVo() {
18 | }
19 |
20 | public String getName() {
21 | return name;
22 | }
23 |
24 | public void setName(String name) {
25 | this.name = name;
26 | }
27 |
28 | public String getLevel() {
29 | return level;
30 | }
31 |
32 | public void setLevel(String level) {
33 | this.level = level;
34 | }
35 |
36 | @Override
37 | public String toString() {
38 | return "LoggerVM{" + "name='" + name + '\'' + ", level='" + level + '\'' + '}';
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-domain/src/main/java/com/albedo/java/modules/sys/domain/vo/account/AvatarInfo.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.sys.domain.vo.account;
2 |
3 | import lombok.Data;
4 |
5 | import javax.validation.constraints.NotBlank;
6 | import java.io.Serializable;
7 |
8 | /**
9 | * @author somewhere
10 | */
11 | @Data
12 | public class AvatarInfo implements Serializable {
13 |
14 | @NotBlank
15 | private String avatar;
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-sys/albedo-sys-web/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | albedo-sys
7 | com.albedo.java
8 | 3.3.18-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | albedo-sys-web
13 |
14 |
15 |
16 |
17 | com.albedo.java
18 | albedo-sys-biz
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-tenant/src/main/java/com/albedo/java/modules/tenant/cache/TenantCacheKeyBuilder.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.tenant;
2 |
3 |
4 | import com.albedo.java.common.core.cache.model.CacheKeyBuilder;
5 | import com.albedo.java.common.core.constant.CacheKeyBuilderConstants;
6 | import com.albedo.java.common.core.util.StrPool;
7 |
8 | import java.time.Duration;
9 |
10 | /**
11 | * 系统用户 KEY
12 | *
13 | * #d_tenant
14 | *
15 | * @author somewhere
16 | * @date 2020/9/20 6:45 下午
17 | */
18 | public class TenantCacheKeyBuilder implements CacheKeyBuilder {
19 | @Override
20 | public String getTenant() {
21 | return StrPool.EMPTY;
22 | }
23 |
24 | @Override
25 | public String getPrefix() {
26 | return CacheKeyBuilderConstants.TENANT;
27 | }
28 |
29 | @Override
30 | public Duration getExpire() {
31 | return Duration.ofHours(24);
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-tenant/src/main/java/com/albedo/java/modules/tenant/cache/TenantCodeCacheKeyBuilder.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.tenant;
2 |
3 | import com.albedo.java.common.core.cache.model.CacheKeyBuilder;
4 | import com.albedo.java.common.core.constant.CacheKeyBuilderConstants;
5 | import com.albedo.java.common.core.util.StrPool;
6 |
7 | import java.time.Duration;
8 |
9 | /**
10 | * 系统用户 KEY
11 | *
12 | * #c_tenant
13 | *
14 | * @author somewhere
15 | * @date 2020/9/20 6:45 下午
16 | */
17 | public class TenantCodeCacheKeyBuilder implements CacheKeyBuilder {
18 | @Override
19 | public String getTenant() {
20 | return StrPool.EMPTY;
21 | }
22 |
23 | @Override
24 | public String getPrefix() {
25 | return CacheKeyBuilderConstants.TENANT_CODE;
26 | }
27 |
28 | @Override
29 | public Duration getExpire() {
30 | return Duration.ofHours(24);
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-tenant/src/main/java/com/albedo/java/modules/tenant/repository/InitDbRepository.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.tenant.repository;
2 |
3 | import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
4 | import org.apache.ibatis.annotations.Mapper;
5 | import org.apache.ibatis.annotations.Param;
6 |
7 | /**
8 | * 初始化数据库DAO
9 | *
10 | * @author somewhere
11 | * @date 2019/09/02
12 | */
13 | @Mapper
14 | @InterceptorIgnore(tenantLine = "true", dynamicTableName = "true")
15 | public interface InitDbRepository {
16 | /**
17 | * 创建数据库
18 | *
19 | * @param database 数据库
20 | * @return 创建数量
21 | */
22 | int createDatabase(@Param("database") String database);
23 |
24 |
25 | /**
26 | * 删除数据库
27 | *
28 | * @param database 数据库
29 | * @return 删除数量
30 | */
31 | int dropDatabase(@Param("database") String database);
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-tenant/src/main/java/com/albedo/java/modules/tenant/repository/TenantRepository.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.tenant.repository;
2 |
3 | import com.albedo.java.modules.tenant.domain.Tenant;
4 | import com.albedo.java.plugins.database.mybatis.repository.BaseRepository;
5 | import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
6 | import org.apache.ibatis.annotations.Mapper;
7 | import org.apache.ibatis.annotations.Param;
8 |
9 | /**
10 | *
11 | * Mapper 接口
12 | * 企业
13 | *
14 | *
15 | * @author somewhere
16 | * @date 2019-10-25
17 | */
18 | @Mapper
19 | @InterceptorIgnore(tenantLine = "true", dynamicTableName = "true")
20 | public interface TenantRepository extends BaseRepository {
21 |
22 | /**
23 | * 根据租户编码查询
24 | *
25 | * @param code 租户编码
26 | * @return 租户
27 | */
28 | Tenant getByCode(@Param("code") String code);
29 | }
30 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-tenant/src/main/java/com/albedo/java/modules/tenant/strategy/InitSystemStrategy.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.tenant.strategy;
2 |
3 | import com.albedo.java.modules.tenant.domain.dto.TenantConnectDto;
4 |
5 | import java.util.List;
6 |
7 | /**
8 | * 初始化系统
9 | *
10 | *
11 | * @author somewhere
12 | * @date 2019/10/25
13 | */
14 | public interface InitSystemStrategy {
15 |
16 | /**
17 | * 初始化 服务链接
18 | *
19 | * @param tenantConnect 链接信息
20 | * @return 是否成功
21 | */
22 | boolean initConnect(TenantConnectDto tenantConnect);
23 |
24 | /**
25 | * 重置系统
26 | *
27 | * @param tenant 租户编码
28 | * @return 是否成功
29 | */
30 | boolean reset(String tenant);
31 |
32 | /**
33 | * 删除租户数据
34 | *
35 | * @param ids 租户id
36 | * @param tenantCodeList 租户编码
37 | * @return 是否成功
38 | */
39 | boolean delete(List ids, List tenantCodeList);
40 | }
41 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-tenant/src/main/java/com/albedo/java/modules/tenant/utils/DriverEnum.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.tenant.utils;
2 |
3 | import lombok.extern.slf4j.Slf4j;
4 |
5 | /**
6 | * @author somewhere
7 | */
8 | @Slf4j
9 | public enum DriverEnum {
10 |
11 | /**
12 | * mysql
13 | */
14 | MYSQL("com.mysql.cj.jdbc.Driver"),
15 |
16 | /**
17 | * oracle
18 | */
19 | ORACLE("oracle.jdbc.driver.OracleDriver"),
20 |
21 | /**
22 | * sql server
23 | */
24 | SQLSERVER("com.microsoft.sqlserver.jdbc.SQLServerDriver"),
25 | ;
26 |
27 | /**
28 | * 驱动
29 | */
30 | private final String driver;
31 |
32 | DriverEnum(String driver) {
33 | this.driver = driver;
34 | }
35 |
36 | public String getDriver() {
37 | return driver;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-tenant/src/main/resources/mapper/tenant/InitDbMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | CREATE
7 | DATABASE IF NOT EXISTS
8 | ${database}
9 | DEFAULT
10 | CHARACTER
11 | SET
12 | utf8mb4
13 | COLLATE
14 | utf8mb4_general_ci
15 |
16 |
17 |
18 |
19 | DROP
20 | DATABASE IF EXISTS
21 | ${database}
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/albedo-modules/albedo-tenant/src/main/resources/mapper/tenant/TenantMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | select *
7 | from c_tenant
8 | where code = #{code}
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/albedo-plugin/albedo-plugin-biz-ip/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | albedo-plugin
8 | com.albedo.java
9 | 3.3.18-SNAPSHOT
10 |
11 |
12 | albedo-plugin-biz-ip
13 |
14 |
15 |
16 | cn.hutool
17 | hutool-all
18 |
19 |
20 | com.albedo.java
21 | albedo-common-core
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/albedo-plugin/albedo-plugin-biz-ip/src/main/java/com/albedo/java/plugins/ip/Area.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.plugins.ip;
2 |
3 | import com.albedo.java.plugins.ip.enums.AreaTypeEnum;
4 | import lombok.AllArgsConstructor;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | import java.util.List;
9 |
10 | @Data
11 | @AllArgsConstructor
12 | @NoArgsConstructor
13 | public class Area {
14 |
15 | /**
16 | * 编号 - 全球,即根目录
17 | */
18 | public static final Integer ID_GLOBAL = 0;
19 | /**
20 | * 编号 - 中国
21 | */
22 | public static final Integer ID_CHINA = 1;
23 |
24 | /**
25 | * 编号
26 | */
27 | private Integer id;
28 | /**
29 | * 名字
30 | */
31 | private String name;
32 | /**
33 | * 类型
34 | *
35 | * 枚举 {@link AreaTypeEnum}
36 | */
37 | private Integer type;
38 |
39 | /**
40 | * 父节点
41 | */
42 | private Area parent;
43 | /**
44 | * 子节点
45 | */
46 | private List children;
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/albedo-plugin/albedo-plugin-biz-ip/src/main/java/com/albedo/java/plugins/ip/enums/AreaTypeEnum.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.plugins.ip.enums;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Getter;
5 |
6 | import java.util.Arrays;
7 |
8 | /**
9 | * 区域类型枚举
10 | *
11 | * @author somewhere
12 | */
13 | @AllArgsConstructor
14 | @Getter
15 | public enum AreaTypeEnum {
16 |
17 | COUNTRY(1, "国家"),
18 | PROVINCE(2, "省份"),
19 | CITY(3, "城市"),
20 | DISTRICT(4, "地区"), // 县、镇、区等
21 | ;
22 |
23 | public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(AreaTypeEnum::getType).toArray();
24 |
25 | /**
26 | * 类型
27 | */
28 | private final Integer type;
29 | /**
30 | * 名字
31 | */
32 | private final String name;
33 |
34 | public int[] array() {
35 | return ARRAYS;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/albedo-plugin/albedo-plugin-biz-ip/src/main/resources/ip2region.xdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-plugin/albedo-plugin-biz-ip/src/main/resources/ip2region.xdb
--------------------------------------------------------------------------------
/albedo-plugin/albedo-plugin-biz-ip/src/test/java/AreaUtilTest.java:
--------------------------------------------------------------------------------
1 | import com.albedo.java.plugins.ip.Area;
2 | import com.albedo.java.plugins.ip.enums.AreaTypeEnum;
3 | import com.albedo.java.plugins.ip.util.AreaUtil;
4 | import org.junit.jupiter.api.Test;
5 |
6 | import static org.junit.jupiter.api.Assertions.assertEquals;
7 |
8 | /**
9 | * {@link AreaUtil} 的单元测试
10 | *
11 | * @author somewhere
12 | */
13 | public class AreaUtilTest {
14 |
15 | @Test
16 | public void testGetArea() {
17 | // 调用:北京
18 | Area area = AreaUtil.getArea(110100);
19 | // 断言
20 | assertEquals(area.getId(), 110100);
21 | assertEquals(area.getName(), "北京市");
22 | assertEquals(area.getType(), AreaTypeEnum.CITY.getType());
23 | assertEquals(area.getParent().getId(), 110000);
24 | assertEquals(area.getChildren().size(), 16);
25 | }
26 |
27 | @Test
28 | public void testFormat() {
29 | assertEquals(AreaUtil.format(110105), "北京 北京市 朝阳区");
30 | assertEquals(AreaUtil.format(1), "中国");
31 | assertEquals(AreaUtil.format(2), "蒙古");
32 | }
33 |
34 | }
35 |
--------------------------------------------------------------------------------
/albedo-plugin/albedo-plugin-cache-starter/src/main/java/com/albedo/java/plugins/cache/lock/CaffeineDistributedLock.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.plugins.cache.lock;
2 |
3 |
4 | import com.albedo.java.common.core.lock.DistributedLock;
5 |
6 | /**
7 | * 分布式锁 只能用redis实现
8 | * 写这个类的目的,只是为了防止代码启动报错
9 | *
10 | * @author somewhere
11 | * @date 2019/08/07
12 | */
13 | public class CaffeineDistributedLock implements DistributedLock {
14 | @Override
15 | public boolean lock(String key, long expire, int retryTimes, long sleepMillis) {
16 | return true;
17 | }
18 |
19 | @Override
20 | public boolean releaseLock(String key) {
21 | return true;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/albedo-plugin/albedo-plugin-cache-starter/src/main/java/com/albedo/java/plugins/cache/properties/CacheType.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.plugins.cache.properties;
2 |
3 | /**
4 | * 缓存类型
5 | *
6 | * @author somewhere
7 | * @date 2020/9/22 3:34 下午
8 | */
9 | public enum CacheType {
10 | /**
11 | * 内存
12 | */
13 | CAFFEINE,
14 | /**
15 | * redis
16 | */
17 | REDIS,
18 | ;
19 |
20 | public boolean eq(CacheType cacheType) {
21 | return cacheType != null && this.name().equals(cacheType.name());
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/albedo-plugin/albedo-plugin-cache-starter/src/main/java/com/albedo/java/plugins/cache/properties/SerializerType.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.plugins.cache.properties;
2 |
3 | /**
4 | * 序列化类型
5 | *
6 | * @author somewhere
7 | * @date 2021年04月19日08:25:13
8 | */
9 | public enum SerializerType {
10 | /**
11 | * json 序列化
12 | */
13 | JACK_SON,
14 | /**
15 | * 默认:ProtoStuff 序列化
16 | */
17 | ProtoStuff,
18 | /**
19 | * jdk 序列化
20 | */
21 | JDK
22 | }
23 |
--------------------------------------------------------------------------------
/albedo-plugin/albedo-plugin-cache-starter/src/main/java/com/albedo/java/plugins/cache/redis/NullVal.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.plugins.cache.redis;
2 |
3 | import java.io.Serializable;
4 |
5 | /**
6 | * 空值
7 | * 解决缓存穿透
8 | *
9 | * @author somewhere
10 | * @date 2020/9/17 2:30 下午
11 | */
12 | public class NullVal implements Serializable {
13 | private static final long serialVersionUID = 1L;
14 | }
15 |
--------------------------------------------------------------------------------
/albedo-plugin/albedo-plugin-cache-starter/src/main/resources/META-INF/spring.factories:
--------------------------------------------------------------------------------
1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
2 | com.albedo.java.plugins.cache.CacheAutoConfigure
3 |
--------------------------------------------------------------------------------
/albedo-plugin/albedo-plugin-cache-starter/src/main/resources/limit.lua:
--------------------------------------------------------------------------------
1 | --lua 下标从 1 开始
2 | -- 限流 key
3 | local key = KEYS[1]
4 | -- 限流大小
5 | local limit = tonumber(ARGV[1])
6 |
7 | -- 获取当前流量大小
8 | local curentLimit = tonumber(redis.call('get', key) or "0")
9 |
10 | if curentLimit + 1 > limit then
11 | -- 达到限流大小 返回
12 | return 0;
13 | else
14 | -- 没有达到阈值 value + 1
15 | redis.call("INCRBY", key, 1)
16 | redis.call("EXPIRE", key, 2)
17 | return curentLimit + 1
18 | end
19 |
20 |
--------------------------------------------------------------------------------
/albedo-plugin/albedo-plugin-database/src/main/java/com/albedo/java/plugins/database/handler/MultiTenantLineHandler.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.plugins.database.handler;
2 |
3 | import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
4 | import net.sf.jsqlparser.expression.ValueListExpression;
5 |
6 | /**
7 | * @author somewhere
8 | * @version v1.0
9 | * @date 2021/5/17 8:52 下午
10 | * @create [2021/5/17 8:52 下午 ] [somewhere] [初始创建]
11 | */
12 | public interface MultiTenantLineHandler extends TenantLineHandler {
13 | /**
14 | * 获取租户 ID 值表达式,支持多个 ID 值
15 | *
16 | *
17 | * @return 租户 ID 值表达式
18 | */
19 | ValueListExpression getTenantIdList();
20 | }
21 |
--------------------------------------------------------------------------------
/albedo-plugin/albedo-plugin-database/src/main/java/com/albedo/java/plugins/database/injector/method/UpdateAllById.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.plugins.database.injector.method;
2 |
3 | import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
4 | import com.baomidou.mybatisplus.extension.injector.methods.AlwaysUpdateSomeColumnById;
5 | import lombok.NoArgsConstructor;
6 |
7 | import java.util.function.Predicate;
8 |
9 | /**
10 | * 修改所有的字段
11 | *
12 | * @author somewhere
13 | * @date 2020年05月08日16:05:19
14 | */
15 | @NoArgsConstructor
16 | public class UpdateAllById extends AlwaysUpdateSomeColumnById {
17 |
18 | public UpdateAllById(Predicate predicate) {
19 | super("updateAllById", predicate);
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/albedo-plugin/albedo-plugin-database/src/main/java/com/albedo/java/plugins/database/mybatis/conditions/Wraps.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.plugins.database.mybatis.conditions;
2 |
3 |
4 | import com.albedo.java.plugins.database.mybatis.query.LambdaQueryWrapperX;
5 | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
6 |
7 |
8 | /**
9 | * Wrappers 工具类, 该方法的主要目的是为了 缩短代码长度
10 | *
11 | * @author somewhere
12 | * @date 2019/06/14
13 | */
14 | public final class Wraps {
15 |
16 | private Wraps() {
17 | // ignore
18 | }
19 |
20 | /**
21 | * 获取 QueryWrap<T>
22 | *
23 | * @param 实体类泛型
24 | * @return QueryWrapper<T>
25 | */
26 | public static LambdaQueryWrapperX lambdaQueryWrapperX() {
27 | return new LambdaQueryWrapperX<>();
28 | }
29 |
30 |
31 | /**
32 | * 获取 QueryWrap<T>
33 | *
34 | * @param 实体类泛型
35 | * @return QueryWrapper<T>
36 | */
37 | public static LambdaUpdateWrapper lambdaUpdateWrapper() {
38 | return new LambdaUpdateWrapper<>();
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/albedo-plugin/albedo-plugin-database/src/main/java/com/albedo/java/plugins/database/mybatis/enums/SqlConstants.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.plugins.database.mybatis.enums;
2 |
3 | import com.baomidou.mybatisplus.annotation.DbType;
4 |
5 | /**
6 | * SQL相关常量类
7 | *
8 | * @author somewhere
9 | */
10 | public class SqlConstants {
11 |
12 | /**
13 | * 数据库的类型
14 | */
15 | public static DbType DB_TYPE;
16 |
17 | public static void init(DbType dbType) {
18 | DB_TYPE = dbType;
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/albedo-plugin/albedo-plugin-database/src/main/java/com/albedo/java/plugins/database/mybatis/typehandler/FullLikeTypeHandler.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.plugins.database.mybatis.typehandler;
2 |
3 | import com.baomidou.mybatisplus.core.enums.SqlLike;
4 | import org.apache.ibatis.type.Alias;
5 |
6 | /**
7 | * 仅仅用于like查询
8 | *
9 | * @author somewhere
10 | */
11 | @Alias("fullLike")
12 | public class FullLikeTypeHandler extends BaseLikeTypeHandler {
13 | public FullLikeTypeHandler() {
14 | super(SqlLike.DEFAULT);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/albedo-plugin/albedo-plugin-database/src/main/java/com/albedo/java/plugins/database/mybatis/typehandler/LeftLikeTypeHandler.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.plugins.database.mybatis.typehandler;
2 |
3 |
4 | import com.baomidou.mybatisplus.core.enums.SqlLike;
5 | import org.apache.ibatis.type.Alias;
6 |
7 | /**
8 | * 仅仅用于like查询
9 | *
10 | * @author somewhere
11 | */
12 | @Alias("leftLike")
13 | public class LeftLikeTypeHandler extends BaseLikeTypeHandler {
14 | public LeftLikeTypeHandler() {
15 | super(SqlLike.LEFT);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/albedo-plugin/albedo-plugin-database/src/main/java/com/albedo/java/plugins/database/mybatis/typehandler/RightLikeTypeHandler.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.plugins.database.mybatis.typehandler;
2 |
3 |
4 | import com.baomidou.mybatisplus.core.enums.SqlLike;
5 | import org.apache.ibatis.type.Alias;
6 |
7 | /**
8 | * 仅仅用于like查询
9 | *
10 | * @author somewhere
11 | */
12 | @Alias("rightLike")
13 | public class RightLikeTypeHandler extends BaseLikeTypeHandler {
14 | public RightLikeTypeHandler() {
15 | super(SqlLike.RIGHT);
16 | }
17 | }
18 |
19 |
--------------------------------------------------------------------------------
/albedo-plugin/albedo-plugin-database/src/main/java/com/albedo/java/plugins/database/p6spy/TenantP6SpyLogger.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.plugins.database.p6spy;
2 |
3 | import cn.hutool.core.util.StrUtil;
4 | import com.albedo.java.common.core.context.ContextUtil;
5 | import com.baomidou.mybatisplus.core.toolkit.StringPool;
6 | import com.baomidou.mybatisplus.core.toolkit.StringUtils;
7 | import com.p6spy.engine.spy.appender.MessageFormattingStrategy;
8 |
9 | /**
10 | * 用于 p6spy 在输出的sql日志中,打印当前租户、当前用户ID、当前数据源连接url
11 | *
12 | * @author somewhere
13 | * @date 2020/9/3 3:39 下午
14 | */
15 | public class TenantP6SpyLogger implements MessageFormattingStrategy {
16 | public static final String REGX = "[\\s]+";
17 |
18 | @Override
19 | public String formatMessage(int connectionId, String now, long elapsed, String category,
20 | String prepared, String sql, String url) {
21 | return StringUtils.isNotBlank(sql) ?
22 | StrUtil.format(" tenant: {} userId: {} \n Consume Time:{} ms {} \n url: {} \n Execute SQL:{} \n",
23 | ContextUtil.getTenant(), ContextUtil.getUserId(), elapsed, now, url, sql.replaceAll(REGX, StringPool.SPACE)) :
24 | StringPool.EMPTY;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/albedo-plugin/albedo-plugin-database/src/main/java/com/albedo/java/plugins/database/properties/IdType.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.plugins.database.properties;
2 |
3 | /**
4 | * @author somewhere
5 | * @date 2020/9/15 3:44 下午
6 | */
7 | public enum IdType {
8 | /**
9 | * 单机部署 或者 有固定部署集群数量时,使用hu tool的
10 | */
11 | HU_TOOL,
12 | /**
13 | * 集群部署动态扩容时使用
14 | *
15 | * UidGenerator通过借用未来时间来解决sequence天然存在的并发限制
16 | */
17 | DEFAULT,
18 | /**
19 | * 集群部署动态扩容时使用
20 | * 采用RingBuffer来缓存已生成的UID, 并行化UID的生产和消费, 同时对CacheLine补齐,避免了由RingBuffer带来的硬件级「伪共享」问题
21 | *
22 | * 600万/s的稳定吞吐量
23 | */
24 | CACHE,
25 | ;
26 |
27 | public boolean eq(IdType t) {
28 | return t != null && this.name().equals(t.name());
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/albedo-plugin/albedo-plugin-dynamic-datasource/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | albedo-plugin
7 | com.albedo.java
8 | 3.3.18-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | albedo-plugin-dynamic-datasource
13 |
14 |
15 |
16 |
17 |
18 | com.baomidou
19 | dynamic-datasource-spring-boot-starter
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/albedo-plugin/albedo-plugin-swagger/.gitignore:
--------------------------------------------------------------------------------
1 | /target/
2 |
--------------------------------------------------------------------------------
/albedo-plugin/albedo-plugin-swagger/src/main/resources/META-INF/spring.factories:
--------------------------------------------------------------------------------
1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=
2 |
--------------------------------------------------------------------------------
/albedo-plugin/albedo-plugin-uid/src/main/java/com/baidu/fsg/uid/utils/ValuedEnum.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2017 Baidu, Inc. All Rights Reserve.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.baidu.fsg.uid.utils;
17 |
18 | /**
19 | * {@code ValuedEnum} defines an enumeration which is bounded to a value, you
20 | * may implements this interface when you defines such kind of enumeration
21 | *
22 | * @author yutianbao
23 | */
24 | public interface ValuedEnum {
25 | /**
26 | * 值
27 | *
28 | * @return
29 | */
30 | T value();
31 | }
32 |
--------------------------------------------------------------------------------
/albedo-plugin/albedo-plugin-uid/src/main/java/com/baidu/fsg/uid/worker/WorkerIdAssigner.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2017 Baidu, Inc. All Rights Reserve.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.baidu.fsg.uid.worker;
17 |
18 | /**
19 | * Represents a worker id assigner for {@link com.baidu.fsg.uid.impl.DefaultUidGenerator}
20 | *
21 | * @author yutianbao
22 | */
23 | public interface WorkerIdAssigner {
24 |
25 | /**
26 | * Assign worker id for {@link com.baidu.fsg.uid.impl.DefaultUidGenerator}
27 | *
28 | * @return assigned worker id
29 | */
30 | long assignWorkerId();
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/albedo-plugin/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | albedo
7 | com.albedo.java
8 | 3.3.18-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | albedo-plugin
13 |
14 | pom
15 |
16 |
17 |
18 | albedo-plugin-cache-starter
19 | albedo-plugin-database
20 | albedo-plugin-dynamic-datasource
21 | albedo-plugin-swagger
22 | albedo-plugin-uid
23 | albedo-plugin-biz-ip
24 |
25 |
26 |
--------------------------------------------------------------------------------
/albedo-servers/albedo-admin-server/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM openjdk:8 as builder
2 | WORKDIR /build
3 | ARG JAR_FILE=target/albedo-admin.jar
4 | COPY ${JAR_FILE} app.jar
5 | RUN java -Djarmode=layertools -jar app.jar extract && rm app.jar
6 |
7 | FROM openjdk:8
8 | LABEL maintainer="somewhere0813@gmail.com"
9 | ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms128m -Xmx256m -Djava.security.egd=fileDo:/dev/./urandom"
10 | WORKDIR albedo-admin
11 |
12 | COPY --from=builder /build/dependencies/ ./
13 | COPY --from=builder /build/snapshot-dependencies/ ./
14 | COPY --from=builder /build/spring-boot-loader/ ./
15 | COPY --from=builder /build/application/ ./
16 |
17 | EXPOSE 4000
18 |
19 | CMD sleep 10; java $JAVA_OPTS org.springframework.boot.loader.JarLauncher
20 |
--------------------------------------------------------------------------------
/albedo-servers/albedo-admin-server/src/main/resources/templates/codet/curd/viewService.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | viewComponentTs
4 | src/views/${moduleName}/${subModuleName}/${classNameUrl}
5 | ${classNameUrl}-service.js
6 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/albedo-servers/albedo-admin-server/src/test/java/com/albedo/java/modules/base/BaseRedisIntegrationTest.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.base;
2 |
3 | import com.albedo.java.plugins.cache.RedisAutoConfigure;
4 | import org.redisson.spring.starter.RedissonAutoConfiguration;
5 | import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
6 | import org.springframework.boot.test.context.SpringBootTest;
7 | import org.springframework.context.annotation.Import;
8 | import org.springframework.test.context.ActiveProfiles;
9 |
10 | @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseRedisIntegrationTest.Application.class)
11 | @ActiveProfiles("integration-test") // 设置使用 application-integration-test 配置文件
12 | public class BaseRedisIntegrationTest {
13 |
14 | @Import({
15 | // Redis 配置类
16 | RedisAutoConfiguration.class, // Spring Redis 自动配置类
17 | RedisAutoConfigure.class, // 自己的 Redis 配置类
18 | RedissonAutoConfiguration.class, // Redisson 自动高配置类
19 | })
20 | public static class Application {
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/albedo-servers/albedo-admin-server/src/test/java/com/albedo/java/modules/base/SimulationRuntimeIntegrationTest.java:
--------------------------------------------------------------------------------
1 | package com.albedo.java.modules.base;
2 |
3 | import com.albedo.java.common.core.constant.CommonConstants;
4 | import com.albedo.java.common.core.context.ContextUtil;
5 | import com.albedo.java.modules.AlbedoAdminApplication;
6 | import lombok.extern.slf4j.Slf4j;
7 | import org.junit.jupiter.api.BeforeEach;
8 | import org.springframework.boot.test.context.SpringBootTest;
9 | import org.springframework.security.test.context.support.TestExecutionEvent;
10 | import org.springframework.security.test.context.support.WithUserDetails;
11 |
12 | @Slf4j
13 | @WithUserDetails(userDetailsServiceBeanName = "userDetailsServiceImpl", value = "admin", setupBefore = TestExecutionEvent.TEST_EXECUTION)
14 | @SpringBootTest(classes = AlbedoAdminApplication.class)
15 | public class SimulationRuntimeIntegrationTest {
16 | @BeforeEach
17 | public void initBeforeTest() {
18 | ContextUtil.setTenant(CommonConstants.TENANT_CODE_ADMIN);
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/albedo-servers/albedo-app-server/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM openjdk:8 as builder
2 | WORKDIR /build
3 | ARG JAR_FILE=target/albedo-app.jar
4 | COPY ${JAR_FILE} app.jar
5 | RUN java -Djarmode=layertools -jar app.jar extract && rm app.jar
6 |
7 | FROM openjdk:8
8 | LABEL maintainer="somewhere0813@gmail.com"
9 | ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms128m -Xmx256m -Djava.security.egd=fileDo:/dev/./urandom"
10 | WORKDIR albedo-api
11 |
12 | COPY --from=builder /build/dependencies/ ./
13 | COPY --from=builder /build/snapshot-dependencies/ ./
14 | COPY --from=builder /build/spring-boot-loader/ ./
15 | COPY --from=builder /build/application/ ./
16 |
17 | EXPOSE 4001
18 |
19 | CMD sleep 5; java $JAVA_OPTS org.springframework.boot.loader.JarLauncher
20 |
--------------------------------------------------------------------------------
/albedo-servers/albedo-app-server/src/main/resources/config/application-swagger.yml:
--------------------------------------------------------------------------------
1 | # ===================================================================
2 | # Albedo specific properties
3 | # ===================================================================
4 |
5 | application:
6 | swagger:
7 | default-include-pattern: ${application.adminPath}/.*
8 | title: ${spring.application.name} API
9 | description: ${spring.application.name} API documentation
10 | version: 0.0.1
11 | termsOfServiceUrl:
12 | contactName:
13 | contactUrl:
14 | contactEmail:
15 | license:
16 | licenseUrl:
17 | oauthServer: /auth/oauth/token
18 |
--------------------------------------------------------------------------------
/albedo-servers/albedo-quartz-server/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM openjdk:8 as builder
2 | WORKDIR /build
3 | ARG JAR_FILE=target/albedo-quartz.jar
4 | COPY ${JAR_FILE} app.jar
5 | RUN java -Djarmode=layertools -jar app.jar extract && rm app.jar
6 |
7 | FROM openjdk:8
8 | LABEL maintainer="somewhere0813@gmail.com"
9 | ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms128m -Xmx256m -Djava.security.egd=fileDo:/dev/./urandom"
10 | WORKDIR albedo-quartz
11 |
12 | COPY --from=builder /build/dependencies/ ./
13 | COPY --from=builder /build/snapshot-dependencies/ ./
14 | COPY --from=builder /build/spring-boot-loader/ ./
15 | COPY --from=builder /build/application/ ./
16 |
17 | EXPOSE 4002
18 |
19 | CMD sleep 5; java $JAVA_OPTS org.springframework.boot.loader.JarLauncher
20 |
--------------------------------------------------------------------------------
/albedo-servers/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | albedo
7 | com.albedo.java
8 | 3.3.18-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | pom
13 | albedo-servers
14 |
15 |
16 | albedo-admin-server
17 | albedo-quartz-server
18 | albedo-app-server
19 |
20 |
21 |
--------------------------------------------------------------------------------
/albedo-ui/.editorconfig:
--------------------------------------------------------------------------------
1 | # https://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | charset = utf-8
6 | indent_style = space
7 | indent_size = 2
8 | end_of_line = lf
9 | insert_final_newline = true
10 | trim_trailing_whitespace = true
11 |
12 | [*.md]
13 | insert_final_newline = false
14 | trim_trailing_whitespace = false
15 |
--------------------------------------------------------------------------------
/albedo-ui/.env.development:
--------------------------------------------------------------------------------
1 | ENV = 'development'
2 |
3 | # 接口地址
4 | VUE_APP_BASE_URL = 'http://127.0.0.1:8061'
5 | VUE_APP_WS_URL = 'ws://127.0.0.1:8061'
6 |
7 | VUE_APP_BASE_API = '/a'
8 |
9 | # 是否启用 babel-plugin-dynamic-import-node插件
10 | VUE_CLI_BABEL_TRANSPILE_MODULES = true
11 |
--------------------------------------------------------------------------------
/albedo-ui/.env.production:
--------------------------------------------------------------------------------
1 | ENV = 'production'
2 |
3 |
4 | VUE_APP_BASE_API = '/a'
5 |
6 | # 接口地址,注意协议,如果你没有配置 ssl,需要将 https 改为 http
7 | VUE_APP_BASE_URL = ''
8 | # 如果接口是 http 形式, wss 需要改为 ws
9 | VUE_APP_WS_URL = ''
10 |
--------------------------------------------------------------------------------
/albedo-ui/.eslintignore:
--------------------------------------------------------------------------------
1 | build/*.js
2 | src/assets
3 | public
4 | dist
5 |
--------------------------------------------------------------------------------
/albedo-ui/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | dist/
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | **/*.log
8 |
9 | tests/**/coverage/
10 | tests/e2e/reports
11 | selenium-debug.log
12 |
13 | # Editor directories and files
14 | .idea
15 | .vscode
16 | *.suo
17 | *.ntvs*
18 | *.njsproj
19 | *.sln
20 | *.local
21 |
22 | package-lock.json
23 | yarn.lock
24 |
--------------------------------------------------------------------------------
/albedo-ui/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js: 10
3 | script: npm run test
4 | notifications:
5 | email: false
6 |
--------------------------------------------------------------------------------
/albedo-ui/Dockerfile:
--------------------------------------------------------------------------------
1 |
2 | FROM nginx
3 |
4 | COPY ./dist /data
5 |
6 | RUN rm /etc/nginx/conf.d/default.conf
7 |
8 | ADD ./nginx.conf /etc/nginx/conf.d/
9 |
10 | RUN /bin/bash -c 'echo init ok'
11 |
12 |
13 | EXPOSE 80
14 |
--------------------------------------------------------------------------------
/albedo-ui/babel.config.js:
--------------------------------------------------------------------------------
1 | const plugins = ['@vue/babel-plugin-transform-vue-jsx']
2 | // 生产环境移除console
3 | if (process.env.NODE_ENV === 'production') {
4 | plugins.push('transform-remove-console')
5 | }
6 | module.exports = {
7 | plugins: plugins,
8 | presets: [
9 | '@vue/app'
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/albedo-ui/jest.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | moduleFileExtensions: ['js', 'jsx', 'json', 'vue'],
3 | transform: {
4 | '^.+\\.vue$': 'vue-jest',
5 | '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$':
6 | 'jest-transform-stub',
7 | '^.+\\.jsx?$': 'babel-jest'
8 | },
9 | moduleNameMapper: {
10 | '^@/(.*)$': '/src/$1'
11 | },
12 | snapshotSerializers: ['jest-serializer-vue'],
13 | testMatch: [
14 | '**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)'
15 | ],
16 | collectCoverageFrom: ['src/utils/**/*.{js,vue}', '!src/utils/auth.js', '!src/utils/request.js', 'src/components/**/*.{js,vue}'],
17 | coverageDirectory: '/tests/unit/coverage',
18 | // 'collectCoverage': true,
19 | 'coverageReporters': [
20 | 'lcov',
21 | 'text-summary'
22 | ],
23 | testURL: 'http://localhost/'
24 | }
25 |
--------------------------------------------------------------------------------
/albedo-ui/nginx.conf:
--------------------------------------------------------------------------------
1 | server {
2 | listen 80;
3 | server_name localhost;
4 |
5 | root /data/;
6 |
7 | location ~* ^/(a) {
8 | proxy_pass http://albedo-admin:4000;
9 | #proxy_set_header Host $http_host;
10 | proxy_connect_timeout 15s;
11 | proxy_send_timeout 15s;
12 | proxy_read_timeout 15s;
13 | proxy_set_header X-Real-IP $remote_addr;
14 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/albedo-ui/plopfile.js:
--------------------------------------------------------------------------------
1 | const viewGenerator = require('./plop-templates/view/prompt')
2 | const componentGenerator = require('./plop-templates/component/prompt')
3 |
4 | module.exports = function(plop) {
5 | plop.setGenerator('view', viewGenerator)
6 | plop.setGenerator('component', componentGenerator)
7 | }
8 |
--------------------------------------------------------------------------------
/albedo-ui/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | autoprefixer: {}
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/albedo-ui/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/public/favicon.ico
--------------------------------------------------------------------------------
/albedo-ui/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | <%= webpackConfig.name %>
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/albedo-ui/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
--------------------------------------------------------------------------------
/albedo-ui/src/api/account.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 | import { encrypt } from '@/utils/rsa-encrypt'
3 |
4 | const accountService = {
5 | updatePass(user) {
6 | const data = {
7 | oldPassword: encrypt(user.oldPassword),
8 | newPassword: encrypt(user.newPassword),
9 | confirmPassword: encrypt(user.confirmPassword)
10 | }
11 | return request({
12 | url: '/account/change-password',
13 | method: 'post',
14 | data
15 | })
16 | },
17 | resetEmailSend(data) {
18 | return request({
19 | url: '/reset/email-send?email=' + data,
20 | method: 'post'
21 | })
22 | },
23 |
24 | updateEmail(form) {
25 | const data = {
26 | password: encrypt(form.pass),
27 | email: form.email
28 | }
29 | return request({
30 | url: '/account/change-email/' + form.code,
31 | method: 'post',
32 | data
33 | })
34 | },
35 | updateAvatar(avatar) {
36 | return request({
37 | url: '/account/change-avatar',
38 | method: 'post',
39 | data: { avatar: avatar }
40 | })
41 | }
42 | }
43 |
44 | export default accountService
45 |
--------------------------------------------------------------------------------
/albedo-ui/src/api/dashboard.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | const apiList = {
4 | getChart: `/dashboard/chart`,
5 | getItem: `/dashboard/item`
6 | }
7 |
8 | export default {
9 | getChart(data) {
10 | return request({
11 | method: 'GET',
12 | url: apiList.getChart,
13 | data
14 | })
15 | },
16 | getItem(data) {
17 | return request({
18 | method: 'GET',
19 | url: apiList.getItem,
20 | data
21 | })
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/albedo-ui/src/api/data.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 | import qs from 'qs'
3 |
4 | export function initData(url, params) {
5 | return request({
6 | url: url + '?' + qs.stringify(params, { indices: false }),
7 | method: 'get'
8 | })
9 | }
10 |
11 | export function download(url, params) {
12 | return request({
13 | url: url + '?' + qs.stringify(params, { indices: false }),
14 | method: 'get',
15 | responseType: 'blob'
16 | })
17 | }
18 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/401_images/401.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/401_images/401.gif
--------------------------------------------------------------------------------
/albedo-ui/src/assets/404_images/404.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/404_images/404.png
--------------------------------------------------------------------------------
/albedo-ui/src/assets/404_images/404_cloud.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/404_images/404_cloud.png
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/17e420c250804efe904a09a33796d5a10.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/17e420c250804efe904a09a33796d5a10.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/17e420c250804efe904a09a33796d5a16.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/17e420c250804efe904a09a33796d5a16.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/19034103295190235.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/19034103295190235.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/1d22f3e41d284f50b2c8fc32e0788698.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/1d22f3e41d284f50b2c8fc32e0788698.jpeg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/20180414165754.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/20180414165754.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/20180414165815.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/20180414165815.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/20180414165821.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/20180414165821.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/20180414165827.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/20180414165827.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/20180414165834.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/20180414165834.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/20180414165840.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/20180414165840.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/20180414165846.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/20180414165846.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/20180414165855.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/20180414165855.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/20180414165909.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/20180414165909.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/20180414165914.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/20180414165914.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/20180414165920.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/20180414165920.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/20180414165927.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/20180414165927.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/20180414165936.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/20180414165936.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/20180414165942.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/20180414165942.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/20180414165947.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/20180414165947.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/20180414165955.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/20180414165955.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/20180414170003.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/20180414170003.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/2dd7a2d09fa94bf8b5c52e5318868b4d9.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/2dd7a2d09fa94bf8b5c52e5318868b4d9.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/2dd7a2d09fa94bf8b5c52e5318868b4df.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/2dd7a2d09fa94bf8b5c52e5318868b4df.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/496b3ace787342f7954b7045b8b06804.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/496b3ace787342f7954b7045b8b06804.jpeg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/595ba7b05f2e485eb50565a50cb6cc3c.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/595ba7b05f2e485eb50565a50cb6cc3c.jpeg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/5997fedcc7bd4cffbd350b40d1b5b9824.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/5997fedcc7bd4cffbd350b40d1b5b9824.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/5997fedcc7bd4cffbd350b40d1b5b987.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/5997fedcc7bd4cffbd350b40d1b5b987.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/87d8194bc9834e9f8f0228e9e530beb1.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/87d8194bc9834e9f8f0228e9e530beb1.jpeg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/8f5b60ef00714a399ee544d331231820.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/8f5b60ef00714a399ee544d331231820.jpeg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/964e40b005724165b8cf772355796c8c.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/964e40b005724165b8cf772355796c8c.jpeg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/BiazfanxmamNRoxxVxka.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/BiazfanxmamNRoxxVxka.png
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/WhxKECPNujWoWEFNdnJE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/WhxKECPNujWoWEFNdnJE.png
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/a3b10296862e40edb811418d64455d00.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/a3b10296862e40edb811418d64455d00.jpeg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/a43456282d684e0b9319cf332f8ac468.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/a43456282d684e0b9319cf332f8ac468.jpeg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/bba284ac05b041a8b8b0d1927868d5c9x.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/bba284ac05b041a8b8b0d1927868d5c9x.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/c7c4ee7be3eb4e73a19887dc713505145.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/c7c4ee7be3eb4e73a19887dc713505145.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/cnrhVkzwxjPwAaCfPbdc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/cnrhVkzwxjPwAaCfPbdc.png
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/default.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/default.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/ff698bb2d25c4d218b3256b46c706ece.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/ff698bb2d25c4d218b3256b46c706ece.jpeg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/gaOngJwsRYRaVAuXXcmB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/gaOngJwsRYRaVAuXXcmB.png
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/jZUIxmJycoymBprLOUbT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/jZUIxmJycoymBprLOUbT.png
--------------------------------------------------------------------------------
/albedo-ui/src/assets/avatar/ubnKSIfAJTxIgXOKlciN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/avatar/ubnKSIfAJTxIgXOKlciN.png
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import SvgIcon from '@/views/components/SvgIcon'// svg component
3 |
4 | // register globally
5 | Vue.component('svg-icon', SvgIcon)
6 |
7 | const req = require.context('./svg', false, /\.svg$/)
8 | const requireAll = requireContext => requireContext.keys().map(requireContext)
9 | requireAll(req)
10 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/chart.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/clipboard.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/codeConsole.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/component.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/deploy.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/dev.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/develop.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/dictionary.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/doc.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/documentation.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/download.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/drag.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/edit.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/education.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/example.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/excel.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/fullscreen.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/gonggao.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/guide.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/icon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/image.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/international.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/link.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/list.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/lock.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/login.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/magnifying-glass.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/markdown.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/menu.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/message.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/money.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/monitor.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/nested.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/password.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/peoples.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/search.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/size.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/skill.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/star.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/tab.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/table.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/theme.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/timing.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/tree-table.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/unlock.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/user.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/user1.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/validCode.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/visits.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/wechat.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svg/zujian.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/icons/svgo.yml:
--------------------------------------------------------------------------------
1 | # replace default config
2 |
3 | # multipass: true
4 | # full: true
5 |
6 | plugins:
7 |
8 | # - name
9 | #
10 | # or:
11 | # - name: false
12 | # - name: true
13 | #
14 | # or:
15 | # - name:
16 | # param1: 1
17 | # param2: 2
18 |
19 | - removeAttrs:
20 | attrs:
21 | - 'fill'
22 | - 'fill-rule'
23 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/images/avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/images/avatar.png
--------------------------------------------------------------------------------
/albedo-ui/src/assets/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/images/logo.png
--------------------------------------------------------------------------------
/albedo-ui/src/assets/logo/dingtalk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/logo/dingtalk.png
--------------------------------------------------------------------------------
/albedo-ui/src/assets/logo/gitee.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/logo/gitee.png
--------------------------------------------------------------------------------
/albedo-ui/src/assets/logo/github.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/logo/github.png
--------------------------------------------------------------------------------
/albedo-ui/src/assets/logo/microsoft.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/logo/microsoft.png
--------------------------------------------------------------------------------
/albedo-ui/src/assets/logo/qq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/logo/qq.png
--------------------------------------------------------------------------------
/albedo-ui/src/assets/logo/tencent_cloud.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/logo/tencent_cloud.png
--------------------------------------------------------------------------------
/albedo-ui/src/assets/styles/element-variables.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * I think element-ui's default theme color is too light for long-term use.
3 | * So I modified the default color and you can modify it to your liking.
4 | **/
5 |
6 | /* theme color */
7 | $--color-primary: #1890ff;
8 | $--color-success: #13ce66;
9 | $--color-warning: #FFBA00;
10 | $--color-danger: #ff4949;
11 | // $--color-info: #1E1E1E;
12 |
13 | $--button-font-weight: 400;
14 |
15 | // $--color-text-regular: #1f2d3d;
16 |
17 | $--border-color-light: #dfe4ed;
18 | $--border-color-lighter: #e6ebf5;
19 |
20 | $--table-border:1px solid#dfe6ec;
21 |
22 | /* icon font path, required */
23 | $--font-path: '~element-ui/lib/theme-chalk/fonts';
24 |
25 | @import "../../../node_modules/element-ui/packages/theme-chalk/src/index";
26 |
27 | // the :export directive is the magic sauce for webpack
28 | // https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass
29 | :export {
30 | theme: $--color-primary;
31 | }
32 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/styles/transition.scss:
--------------------------------------------------------------------------------
1 | // global transition css
2 |
3 | /* fade */
4 | .fade-enter-active,
5 | .fade-leave-active {
6 | transition: opacity 0.28s;
7 | }
8 |
9 | .fade-enter,
10 | .fade-leave-active {
11 | opacity: 0;
12 | }
13 |
14 | /* fade-transform */
15 | .fade-transform-leave-active,
16 | .fade-transform-enter-active {
17 | transition: all .5s;
18 | }
19 |
20 | .fade-transform-enter {
21 | opacity: 0;
22 | transform: translateX(-30px);
23 | }
24 |
25 | .fade-transform-leave-to {
26 | opacity: 0;
27 | transform: translateX(30px);
28 | }
29 |
30 | /* breadcrumb transition */
31 | .breadcrumb-enter-active,
32 | .breadcrumb-leave-active {
33 | transition: all .5s;
34 | }
35 |
36 | .breadcrumb-enter,
37 | .breadcrumb-leave-active {
38 | opacity: 0;
39 | transform: translateX(20px);
40 | }
41 |
42 | .breadcrumb-move {
43 | transition: all .5s;
44 | }
45 |
46 | .breadcrumb-leave-active {
47 | position: absolute;
48 | }
49 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/styles/variables.scss:
--------------------------------------------------------------------------------
1 | // base color
2 | $blue:#324157;
3 | $light-blue:#3A71A8;
4 | $red:#C03639;
5 | $pink: #E65D6E;
6 | $green: #30B08F;
7 | $tiffany: #4AB7BD;
8 | $yellow:#FEC171;
9 | $panGreen: #30B08F;
10 |
11 | // sidebar
12 | $menuText:#bfcbd9;
13 | $menuActiveText:#409EFF;
14 | $subMenuActiveText:#f4f4f5; // https://github.com/ElemeFE/element/issues/12951
15 |
16 | $menuBg:#304156;
17 | $menuHover:#263445;
18 |
19 | $subMenuBg:#1f2d3d;
20 | $subMenuHover:#001528;
21 |
22 | $sideBarWidth: 205px;
23 |
24 | // the :export directive is the magic sauce for webpack
25 | // https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass
26 | :export {
27 | menuText: $menuText;
28 | menuActiveText: $menuActiveText;
29 | subMenuActiveText: $subMenuActiveText;
30 | menuBg: $menuBg;
31 | menuHover: $menuHover;
32 | subMenuBg: $subMenuBg;
33 | subMenuHover: $subMenuHover;
34 | sideBarWidth: $sideBarWidth;
35 | }
36 |
--------------------------------------------------------------------------------
/albedo-ui/src/assets/捐赠1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/捐赠1.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/assets/捐赠2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/assets/捐赠2.jpg
--------------------------------------------------------------------------------
/albedo-ui/src/const/common.js:
--------------------------------------------------------------------------------
1 | /* ture 网关模式, false 普通模式*/
2 | /** * 返回消息类型 info */
3 | export const MSG_TYPE_FAIL = 0
4 | /** * 返回消息类型 success */
5 | export const MSG_TYPE_SUCCESS = 1
6 |
7 | /** * 否 */
8 | export const NO = 0
9 | /** * 是 */
10 | export const YES = 1
11 |
12 |
--------------------------------------------------------------------------------
/albedo-ui/src/directive/clipboard/index.js:
--------------------------------------------------------------------------------
1 | import Clipboard from './clipboard'
2 |
3 | const install = function(Vue) {
4 | Vue.directive('Clipboard', Clipboard)
5 | }
6 |
7 | if (window.Vue) {
8 | window.clipboard = Clipboard
9 | Vue.use(install); // eslint-disable-line
10 | }
11 |
12 | Clipboard.install = install
13 | export default Clipboard
14 |
--------------------------------------------------------------------------------
/albedo-ui/src/directive/el-drag-dialog/index.js:
--------------------------------------------------------------------------------
1 | import drag from './drag'
2 |
3 | const install = function(Vue) {
4 | Vue.directive('el-drag-dialog', drag)
5 | }
6 |
7 | if (window.Vue) {
8 | window['el-drag-dialog'] = drag
9 | Vue.use(install); // eslint-disable-line
10 | }
11 |
12 | drag.install = install
13 | export default drag
14 |
--------------------------------------------------------------------------------
/albedo-ui/src/directive/el-table/index.js:
--------------------------------------------------------------------------------
1 | import adaptive from './adaptive'
2 |
3 | const install = function(Vue) {
4 | Vue.directive('el-height-adaptive-table', adaptive)
5 | }
6 |
7 | if (window.Vue) {
8 | window['el-height-adaptive-table'] = adaptive
9 | Vue.use(install); // eslint-disable-line
10 | }
11 |
12 | adaptive.install = install
13 | export default adaptive
14 |
--------------------------------------------------------------------------------
/albedo-ui/src/directive/waves/index.js:
--------------------------------------------------------------------------------
1 | import waves from './waves'
2 |
3 | const install = function(Vue) {
4 | Vue.directive('waves', waves)
5 | }
6 |
7 | if (window.Vue) {
8 | window.waves = waves
9 | Vue.use(install); // eslint-disable-line
10 | }
11 |
12 | waves.install = install
13 | export default waves
14 |
--------------------------------------------------------------------------------
/albedo-ui/src/directive/waves/waves.css:
--------------------------------------------------------------------------------
1 | .waves-ripple {
2 | position: absolute;
3 | border-radius: 100%;
4 | background-color: rgba(0, 0, 0, 0.15);
5 | background-clip: padding-box;
6 | pointer-events: none;
7 | -webkit-user-select: none;
8 | -moz-user-select: none;
9 | -ms-user-select: none;
10 | user-select: none;
11 | -webkit-transform: scale(0);
12 | -ms-transform: scale(0);
13 | transform: scale(0);
14 | opacity: 1;
15 | }
16 |
17 | .waves-ripple.z-active {
18 | opacity: 0;
19 | -webkit-transform: scale(2);
20 | -ms-transform: scale(2);
21 | transform: scale(2);
22 | -webkit-transition: opacity 1.2s ease-out, -webkit-transform 0.6s ease-out;
23 | transition: opacity 1.2s ease-out, -webkit-transform 0.6s ease-out;
24 | transition: opacity 1.2s ease-out, transform 0.6s ease-out;
25 | transition: opacity 1.2s ease-out, transform 0.6s ease-out, -webkit-transform 0.6s ease-out;
26 | }
--------------------------------------------------------------------------------
/albedo-ui/src/layout/components/Sidebar/FixiOSBug.js:
--------------------------------------------------------------------------------
1 | export default {
2 | computed: {
3 | device() {
4 | return this.$store.state.app.device
5 | }
6 | },
7 | mounted() {
8 | // In order to fix the click on menu on the ios device will trigger the mouseleave bug
9 | // https://github.com/PanJiaChen/vue-element-admin/issues/1135
10 | this.fixBugIniOS()
11 | },
12 | methods: {
13 | fixBugIniOS() {
14 | const $subMenu = this.$refs.subMenu
15 | if ($subMenu) {
16 | const handleMouseleave = $subMenu.handleMouseleave
17 | $subMenu.handleMouseleave = (e) => {
18 | if (this.device === 'mobile') {
19 | return
20 | }
21 | handleMouseleave(e)
22 | }
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/albedo-ui/src/layout/components/Sidebar/Item.vue:
--------------------------------------------------------------------------------
1 |
30 |
--------------------------------------------------------------------------------
/albedo-ui/src/layout/components/Sidebar/Link.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
36 |
--------------------------------------------------------------------------------
/albedo-ui/src/layout/components/index.js:
--------------------------------------------------------------------------------
1 | export { default as AppMain } from './AppMain'
2 | export { default as Navbar } from './Navbar'
3 | export { default as Settings } from './Settings'
4 | export { default as Sidebar } from './Sidebar/index.vue'
5 | export { default as TagsView } from './TagsView/index.vue'
6 |
--------------------------------------------------------------------------------
/albedo-ui/src/settings.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | /**
3 | * @description 网站标题
4 | */
5 | title: 'Albedo',
6 | key: 'Albedo',
7 | /**
8 | * @description 是否显示 tagsView
9 | */
10 | tagsView: true,
11 | /**
12 | * @description 固定头部
13 | */
14 | fixedHeader: true,
15 | /**
16 | * @description 记住密码状态下的token在Cookie中存储的天数,默认1天
17 | */
18 | tokenCookieExpires: 1,
19 | /**
20 | * @description 记住密码状态下的密码在Cookie中存储的天数,默认1天s
21 | */
22 | passCookieExpires: 1,
23 | /**
24 | * @description 是否只保持一个子菜单的展开
25 | */
26 | uniqueOpened: true,
27 | /**
28 | * @description token key
29 | */
30 | TokenKey: 'ALBEDO-TOEKN',
31 | /**
32 | * @description 请求超时时间,毫秒(默认2分钟)
33 | */
34 | timeout: 1200000,
35 | /**
36 | * @description 是否显示logo
37 | */
38 | sidebarLogo: true,
39 | /**
40 | * 是否显示设置的底部信息
41 | */
42 | showFooter: true,
43 | /**
44 | * 底部文字,支持html语法
45 | */
46 | footerTxt: '© 2020 somewhere Apache License 2.0 ',
47 | /**
48 | * 备案号
49 | */
50 | caseNumber: 'xxxx号'
51 | }
52 |
--------------------------------------------------------------------------------
/albedo-ui/src/store/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Vuex from 'vuex'
3 | import getters from './getters'
4 |
5 | Vue.use(Vuex)
6 |
7 | // https://webpack.js.org/guides/dependency-management/#requirecontext
8 | const modulesFiles = require.context('./modules', true, /\.js$/)
9 |
10 | // you do not need `import app from './modules/app'`
11 | // it will auto require all vuex module from modules file
12 | const modules = modulesFiles.keys().reduce((modules, modulePath) => {
13 | // set './app.js' => 'app'
14 | const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1')
15 | const value = modulesFiles(modulePath)
16 | modules[moduleName] = value.default
17 | return modules
18 | }, {})
19 |
20 | const store = new Vuex.Store({
21 | modules,
22 | getters
23 | })
24 |
25 | export default store
26 |
--------------------------------------------------------------------------------
/albedo-ui/src/store/modules/api.js:
--------------------------------------------------------------------------------
1 | const baseUrl = process.env.VUE_APP_BASE_URL
2 | const api = {
3 | state: {
4 | // 实时控制台
5 | socketApi: baseUrl + '/websocket?token=kl',
6 | // swagger
7 | swaggerApi: baseUrl + '/swagger-ui/index.html',
8 | // 文件上传
9 | fileUploadApi: process.env.VUE_APP_BASE_API + '/file/upload',
10 | // baseUrl,
11 | baseUrl: baseUrl,
12 | // baseApi,
13 | baseApi: process.env.VUE_APP_BASE_API
14 | }
15 | }
16 |
17 | export default api
18 |
--------------------------------------------------------------------------------
/albedo-ui/src/store/modules/dict.js:
--------------------------------------------------------------------------------
1 | import commonService from '@/api/common'
2 | import { MSG_TYPE_SUCCESS } from '@/const/common'
3 |
4 | const dict = {
5 | state: {
6 | dicts: {}
7 | },
8 | mutations: {
9 | SET_DICTS: (state, dicts) => {
10 | state.dicts = dicts
11 | }
12 | },
13 | actions: {
14 | // 获取字典数据
15 | GetDicts({ commit }) {
16 | return new Promise((resolve, reject) => {
17 | commonService.getDicts().then(res => {
18 | if (res.code === MSG_TYPE_SUCCESS) {
19 | commit('SET_DICTS', res.data)
20 | resolve()
21 | }
22 | }).catch(error => {
23 | reject(error)
24 | })
25 | })
26 | }
27 | }
28 | }
29 |
30 | export default dict
31 |
--------------------------------------------------------------------------------
/albedo-ui/src/utils/auth.js:
--------------------------------------------------------------------------------
1 | import Cookies from 'js-cookie'
2 | import Config from '@/settings'
3 |
4 | const TokenKey = Config.TokenKey
5 |
6 | export function getToken() {
7 | return Cookies.get(TokenKey)
8 | }
9 |
10 | export function getXsrfToken() {
11 | return Cookies.get('XSRF-TOKEN')
12 | }
13 |
14 | export function setToken(token, rememberMe) {
15 | if (rememberMe) {
16 | return Cookies.set(TokenKey, token, { expires: Config.tokenCookieExpires })
17 | } else return Cookies.set(TokenKey, token)
18 | }
19 |
20 | export function removeToken() {
21 | return Cookies.remove(TokenKey)
22 | }
23 |
--------------------------------------------------------------------------------
/albedo-ui/src/utils/clipboard.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Clipboard from 'clipboard'
3 |
4 | function clipboardSuccess() {
5 | Vue.prototype.$message({
6 | message: 'Copy successfully',
7 | type: 'success',
8 | duration: 1500
9 | })
10 | }
11 |
12 | function clipboardError() {
13 | Vue.prototype.$message({
14 | message: 'Copy failed',
15 | type: 'error'
16 | })
17 | }
18 |
19 | export default function handleClipboard(text, event) {
20 | const clipboard = new Clipboard(event.target, {
21 | text: () => text
22 | })
23 | clipboard.on('success', () => {
24 | clipboardSuccess()
25 | clipboard.off('error')
26 | clipboard.off('success')
27 | clipboard.destroy()
28 | })
29 | clipboard.on('error', () => {
30 | clipboardError()
31 | clipboard.off('error')
32 | clipboard.off('success')
33 | clipboard.destroy()
34 | })
35 | clipboard.onClick(event)
36 | }
37 |
--------------------------------------------------------------------------------
/albedo-ui/src/utils/get-page-title.js:
--------------------------------------------------------------------------------
1 | import defaultSettings from '@/settings'
2 |
3 | const title = defaultSettings.title || 'Vue Element Admin'
4 |
5 | export default function getPageTitle(pageTitle) {
6 | if (pageTitle) {
7 | return `${pageTitle} - ${title}`
8 | }
9 | return `${title}`
10 | }
11 |
--------------------------------------------------------------------------------
/albedo-ui/src/utils/permission.js:
--------------------------------------------------------------------------------
1 | import store from '@/store'
2 |
3 | /**
4 | * @param {Array} value
5 | * @returns {Boolean}
6 | * @example see @/views/permission/directive.vue
7 | */
8 | export default function checkPermission(value) {
9 | if (value && value instanceof Array && value.length > 0) {
10 | const roles = store.getters && store.getters.roles
11 | const permissionRoles = value
12 |
13 | const hasPermission = roles.some(role => {
14 | return permissionRoles.includes(role)
15 | })
16 |
17 | if (!hasPermission) {
18 | return false
19 | }
20 | return true
21 | } else {
22 | console.error(`need roles! Like v-permission="['admin','editor']"`)
23 | return false
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/albedo-ui/src/utils/rsa-encrypt.js:
--------------------------------------------------------------------------------
1 | import JSEncrypt from 'jsencrypt/bin/jsencrypt'
2 |
3 | // 密钥对生成 http://web.chacuo.net/netrsakeypair
4 |
5 | const publicKey = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAN4UOrkIuLpL0o7WItgIUkP/RFBsurMPQ7fTaOKwT+S9tWly0xMmJzSl9Kdh8MpWcyz+5nUSb7SgGWxiE3qIL2sCAwEAAQ=='
6 |
7 | // 加密
8 | export function encrypt(txt) {
9 | const encryptor = new JSEncrypt()
10 | encryptor.setPublicKey(publicKey) // 设置公钥
11 | return encryptor.encrypt(txt) // 对需要加密的数据进行加密
12 | }
13 |
14 | // 解密
15 | // export function decrypt(txt) {
16 | // const encryptor = new JSEncrypt()
17 | // encryptor.setPrivateKey(privateKey)
18 | // return encryptor.decrypt(txt)
19 | // }
20 |
21 |
--------------------------------------------------------------------------------
/albedo-ui/src/utils/upload.js:
--------------------------------------------------------------------------------
1 | import axios from 'axios'
2 | import { getToken } from '@/utils/auth'
3 |
4 | export function upload(api, file) {
5 | var data = new FormData()
6 | data.append('file', file)
7 | const config = {
8 | headers: { 'Authorization': getToken() }
9 | }
10 | return axios.post(api, data, config)
11 | }
12 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/components/Crud/Pagination.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
12 |
13 |
20 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/components/Crud/RR.operation.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 搜索
12 | 重置
20 |
21 |
22 |
36 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/components/Doc/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
17 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/components/Echarts/mixins/resize.js:
--------------------------------------------------------------------------------
1 | import commonUtil from '@/utils/common'
2 |
3 | export default {
4 | data() {
5 | return {
6 | $_sidebarElm: null
7 | }
8 | },
9 | mounted() {
10 | this.__resizeHandler = commonUtil.debounce(() => {
11 | if (this.chart) {
12 | this.chart.resize()
13 | }
14 | }, 100)
15 | window.addEventListener('resize', this.__resizeHandler)
16 |
17 | this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0]
18 | this.$_sidebarElm && this.$_sidebarElm.addEventListener('transitionend', this.$_sidebarResizeHandler)
19 | },
20 | beforeDestroy() {
21 | window.removeEventListener('resize', this.__resizeHandler)
22 |
23 | this.$_sidebarElm && this.$_sidebarElm.removeEventListener('transitionend', this.$_sidebarResizeHandler)
24 | },
25 | methods: {
26 | // use $_ for mixins properties
27 | // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential
28 | $_sidebarResizeHandler(e) {
29 | if (e.propertyName === 'width') {
30 | this.__resizeHandler()
31 | }
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/components/IconSelect/requireIcons.js:
--------------------------------------------------------------------------------
1 | const req = require.context('@/assets/icons/svg', false, /\.svg$/)
2 | const requireAll = requireContext => requireContext.keys()
3 |
4 | const re = /\.\/(.*)\.svg/
5 |
6 | const icons = requireAll(req).map(i => {
7 | return i.match(re)[1]
8 | })
9 |
10 | export default icons
11 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/components/Icons/svg-icons.js:
--------------------------------------------------------------------------------
1 | const req = require.context('@/assets/icons/svg', false, /\.svg$/)
2 | const requireAll = requireContext => requireContext.keys()
3 |
4 | const re = /\.\/(.*)\.svg/
5 |
6 | const svgIcons = requireAll(req).map(i => {
7 | return i.match(re)[1]
8 | })
9 |
10 | export default svgIcons
11 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/components/Iframe/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
31 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/components/Permission/index.js:
--------------------------------------------------------------------------------
1 | import permission from './permission'
2 |
3 | const install = function(Vue) {
4 | Vue.directive('permission', permission)
5 | }
6 |
7 | if (window.Vue) {
8 | window['permission'] = permission
9 | Vue.use(install); // eslint-disable-line
10 | }
11 |
12 | permission.install = install
13 | export default permission
14 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/components/Permission/permission.js:
--------------------------------------------------------------------------------
1 | import store from '@/store'
2 | import validate from '../../../utils/validate'
3 |
4 | export default {
5 | inserted(el, binding, vnode) {
6 | const { value } = binding
7 | const permissions = store.getters && store.getters.permissions
8 | if (validate.checkNotNull(value)) {
9 | const hasPermission = value instanceof Array ? permissions.some(item => {
10 | return value.includes(item)
11 | }) : permissions.includes(value)
12 | if (!hasPermission) {
13 | el.parentNode && el.parentNode.removeChild(el)
14 | }
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/components/Upload/images/image-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/views/components/Upload/images/image-icon.png
--------------------------------------------------------------------------------
/albedo-ui/src/views/components/Upload/images/text-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/views/components/Upload/images/text-icon.png
--------------------------------------------------------------------------------
/albedo-ui/src/views/components/Upload/images/video-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/somowhere/albedo/c3c3dc8d2764fcb7bc2598be5ff1e9ddc69f541d/albedo-ui/src/views/components/Upload/images/video-icon.png
--------------------------------------------------------------------------------
/albedo-ui/src/views/components/Upload/js/bus.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 |
3 | export default new Vue()
4 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/components/Upload/js/config.js:
--------------------------------------------------------------------------------
1 | export const ACCEPT_CONFIG = {
2 | image: ['.png', '.jpg', '.jpeg', '.gif', '.bmp'],
3 | video: ['.mp4', '.rmvb', '.mkv', '.wmv', '.flv'],
4 | document: ['.doc', '.docx', '.xls', '.xlsx', '.ppt', '.pptx', '.pdf', '.txt', '.tif', '.tiff'],
5 | getAll() {
6 | return [...this.image, ...this.video, ...this.document]
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/features/redirect.vue:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/gen/datasource-conf/datasource-conf-service.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 | import qs from 'qs'
3 |
4 | export function page(params) {
5 | return request({
6 | url: '/gen/datasource-conf/?' + qs.stringify(params, { indices: false }),
7 | method: 'get'
8 | })
9 | }
10 |
11 | export function save(data) {
12 | return request({
13 | url: '/gen/datasource-conf',
14 | method: 'post',
15 | data
16 | })
17 | }
18 |
19 | export function del(ids) {
20 | return request({
21 | url: '/gen/datasource-conf',
22 | method: 'delete',
23 | data: ids
24 | })
25 | }
26 |
27 | export function get(id) {
28 | return request({
29 | url: '/gen/datasource-conf/' + id,
30 | method: 'get'
31 | })
32 | }
33 |
34 | export default { page, del, save, get }
35 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/gen/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/monitor/log-login/log-login-service.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 | import qs from 'qs'
3 |
4 | export function page(params) {
5 | return request({
6 | url: '/sys/log-login/?' + qs.stringify(params, { indices: false }),
7 | method: 'get'
8 | })
9 | }
10 |
11 | export function del(ids) {
12 | return request({
13 | url: '/sys/log-login',
14 | method: 'delete',
15 | data: ids
16 | })
17 | }
18 |
19 | export function download(params) {
20 | return request({
21 | url: '/sys/log-login/download?' + qs.stringify(params, { indices: false }),
22 | method: 'get',
23 | responseType: 'blob'
24 | })
25 | }
26 |
27 | export default { page, del, download }
28 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/monitor/log-operate/log-operate-service.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 | import qs from 'qs'
3 |
4 | export function page(params) {
5 | return request({
6 | url: '/sys/log-operate/?' + qs.stringify(params, { indices: false }),
7 | method: 'get'
8 | })
9 | }
10 |
11 | export function del(ids) {
12 | return request({
13 | url: '/sys/log-operate/',
14 | method: 'delete',
15 | data: ids
16 | })
17 | }
18 |
19 | export function download(params) {
20 | return request({
21 | url: '/sys/log-operate/download?' + qs.stringify(params, { indices: false }),
22 | method: 'get',
23 | responseType: 'blob'
24 | })
25 | }
26 |
27 | export default { page, del, download }
28 |
29 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/monitor/persistent-token/persistent-token-service.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 | import qs from 'qs'
3 |
4 | export function page(params) {
5 | return request({
6 | url: '/sys/persistent-token/?' + qs.stringify(params, { indices: false }),
7 | method: 'get'
8 | })
9 | }
10 |
11 | export function del(ids) {
12 | return request({
13 | url: '/sys/persistent-token',
14 | method: 'delete',
15 | data: ids
16 | })
17 | }
18 |
19 | export default { page, del }
20 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/monitor/server/redis-detail.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
42 |
43 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/monitor/sql/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
17 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/monitor/user-online/user-online-service.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 | import qs from 'qs'
3 |
4 | export function page(params) {
5 | return request({
6 | url: '/sys/user-online/?' + qs.stringify(params, { indices: false }),
7 | method: 'get'
8 | })
9 | }
10 |
11 | export function del(ids) {
12 | return request({
13 | url: '/sys/user-online',
14 | method: 'delete',
15 | data: ids
16 | })
17 | }
18 |
19 | export function batchForceLogout(ids) {
20 | return request({
21 | url: '/sys/user-online/batch-force-logout',
22 | method: 'put',
23 | data: ids
24 | })
25 | }
26 |
27 | export default { page, del, batchForceLogout }
28 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/nested/menu1/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/nested/menu1/menu1-1/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/nested/menu1/menu1-2/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/nested/menu2/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/sys/dept/dept-service.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 | import qs from 'qs'
3 |
4 | export function getDepts(query) {
5 | return request({
6 | url: '/sys/dept/tree',
7 | method: 'get',
8 | params: query
9 | })
10 | }
11 |
12 | export function page(params) {
13 | return request({
14 | url: '/sys/dept/?' + qs.stringify(params, { indices: false }),
15 | method: 'get'
16 | })
17 | }
18 |
19 | export function get(id) {
20 | return request({
21 | url: '/sys/dept/' + id,
22 | method: 'get'
23 | })
24 | }
25 |
26 | export function save(data) {
27 | return request({
28 | url: '/sys/dept',
29 | method: 'post',
30 | data
31 | })
32 | }
33 |
34 | export function del(ids) {
35 | return request({
36 | url: '/sys/dept',
37 | method: 'delete',
38 | data: ids
39 | })
40 | }
41 |
42 | export function lock(ids) {
43 | return request({
44 | url: '/sys/dept',
45 | method: 'put',
46 | data: ids
47 | })
48 | }
49 |
50 | export default { page, save, lock, del, get, getDepts }
51 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/sys/dict/dict-service.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 | import qs from 'qs'
3 |
4 | export function getDicts(query) {
5 | return request({
6 | url: '/sys/dict/tree',
7 | method: 'get',
8 | params: query
9 | })
10 | }
11 |
12 | export function page(params) {
13 | return request({
14 | url: '/sys/dict/?' + qs.stringify(params, { indices: false }),
15 | method: 'get'
16 | })
17 | }
18 | export function get(id) {
19 | return request({
20 | url: '/sys/dict/' + id,
21 | method: 'get'
22 | })
23 | }
24 |
25 | export function save(data) {
26 | return request({
27 | url: '/sys/dict',
28 | method: 'post',
29 | data
30 | })
31 | }
32 |
33 | export function del(ids) {
34 | return request({
35 | url: '/sys/dict',
36 | method: 'delete',
37 | data: ids
38 | })
39 | }
40 |
41 | export function lock(ids) {
42 | return request({
43 | url: '/sys/dict',
44 | method: 'put',
45 | data: ids
46 | })
47 | }
48 |
49 | export default { page, save, lock, del, get, getDicts }
50 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/sys/file/file-service.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 | import qs from 'qs'
3 |
4 | export function page(params) {
5 | return request({
6 | url: '/file/?' + qs.stringify(params, { indices: false }),
7 | method: 'get'
8 | })
9 | }
10 |
11 | export function del(ids) {
12 | return request({
13 | url: '/file',
14 | method: 'delete',
15 | data: ids
16 | })
17 | }
18 |
19 | export function download(ids) {
20 | return request({
21 | url: '/file/download',
22 | method: 'post',
23 | responseType: 'blob',
24 | data: ids
25 | })
26 | }
27 | export default { page, del, download }
28 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/tool/alipay/alipay-service.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function get() {
4 | return request({
5 | url: '/tool/aliPay',
6 | method: 'get'
7 | })
8 | }
9 |
10 | export function update(data) {
11 | return request({
12 | url: '/tool/aliPay',
13 | data,
14 | method: 'put'
15 | })
16 | }
17 |
18 | // 支付
19 | export function toAliPay(url, data) {
20 | return request({
21 | url: '/tool/' + url,
22 | data,
23 | method: 'post'
24 | })
25 | }
26 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/tool/email/email-service.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function get() {
4 | return request({
5 | url: '/tool/email',
6 | method: 'get'
7 | })
8 | }
9 |
10 | export function update(data) {
11 | return request({
12 | url: '/tool/email',
13 | data,
14 | method: 'put'
15 | })
16 | }
17 |
18 | export function send(data) {
19 | return request({
20 | url: '/tool/email',
21 | data,
22 | method: 'post'
23 | })
24 | }
25 |
--------------------------------------------------------------------------------
/albedo-ui/src/views/tool/swagger/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
17 |
--------------------------------------------------------------------------------
/db/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM mysql:8.0.27
2 |
3 | MAINTAINER somewhere(somewhere0813@gmail.com)
4 |
5 | ENV TZ=Asia/Shanghai
6 |
7 | RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
8 |
9 |
10 | COPY ./db/albedo.sql /docker-entrypoint-initdb.d
11 |
--------------------------------------------------------------------------------