├── al-wechat ├── pages │ ├── index │ │ ├── index.json │ │ └── index.wxss │ ├── .DS_Store │ └── logs │ │ ├── logs.json │ │ ├── logs.wxss │ │ ├── logs.wxml │ │ └── logs.js ├── .DS_Store ├── style │ ├── .DS_Store │ ├── base │ │ ├── fn.wxss │ │ ├── mixin │ │ │ ├── mobile.wxss │ │ │ ├── text.wxss │ │ │ ├── setArrow.wxss │ │ │ └── setOnepx.wxss │ │ ├── variable │ │ │ ├── color.wxss │ │ │ ├── global.wxss │ │ │ ├── weui-msg.wxss │ │ │ ├── weui-tab.wxss │ │ │ ├── weui-button.wxss │ │ │ ├── weui-cell.wxss │ │ │ ├── weui-dialog.wxss │ │ │ ├── weui-grid.wxss │ │ │ └── weui-progress.wxss │ │ └── reset.wxss │ └── widget │ │ ├── weui-cell │ │ ├── weui-switch.wxss │ │ ├── weui-check.wxss │ │ ├── weui-form │ │ │ └── weui-vcode.wxss │ │ └── weui-access.wxss │ │ ├── weui-button │ │ ├── weui-btn_disabled.wxss │ │ ├── weui-btn_primary.wxss │ │ ├── weui-btn_warn.wxss │ │ ├── weui-btn_default.wxss │ │ ├── weui-btn_loading.wxss │ │ ├── weui-btn_global.wxss │ │ ├── weui-button.wxss │ │ ├── weui-btn_plain.wxss │ │ └── weui-btn_cell.wxss │ │ ├── weui-icon │ │ └── weui-icon.wxss │ │ ├── weui-flex │ │ └── weui-flex.wxss │ │ ├── weui-tips │ │ ├── weui-mask.wxss │ │ ├── weui-badge.wxss │ │ ├── weui-loadmore.wxss │ │ └── weui-toptips.wxss │ │ ├── weui-progress │ │ └── weui-progress.wxss │ │ ├── weui-agree │ │ └── weui-agree.wxss │ │ ├── weui-grid │ │ └── weui-grid.wxss │ │ ├── weui-panel │ │ └── weui-panel.wxss │ │ ├── weui-page │ │ └── weui-article.wxss │ │ └── weui-footer │ │ └── weui-footer.wxss ├── sitemap.json ├── project.private.config.json ├── app.json ├── utils │ └── util.js └── app.wxss ├── al-api ├── .DS_Store ├── al-sys-api │ ├── .DS_Store │ └── src │ │ └── main │ │ ├── resources │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── java │ │ └── cn │ │ └── com │ │ └── axel │ │ └── sys │ │ └── api │ │ ├── req │ │ └── ReqDbConnect.java │ │ ├── fallback │ │ ├── RemoteLogFallback.java │ │ └── RemoteDictFallback.java │ │ └── entity │ │ └── TableInfo.java ├── al-oauth-api │ ├── .DS_Store │ ├── src │ │ └── main │ │ │ ├── resources │ │ │ └── META-INF │ │ │ │ └── spring │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ └── java │ │ │ └── cn │ │ │ └── com │ │ │ └── axel │ │ │ └── common │ │ │ └── oauth │ │ │ └── api │ │ │ ├── entity │ │ │ └── UserRole.java │ │ │ └── vo │ │ │ └── TenantVo.java │ └── pom.xml ├── al-storage-api │ ├── .DS_Store │ └── src │ │ └── main │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── al-scheduler-api │ ├── .DS_Store │ ├── src │ │ └── main │ │ │ ├── resources │ │ │ └── META-INF │ │ │ │ └── spring │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ └── java │ │ │ └── cn │ │ │ └── com │ │ │ └── axel │ │ │ └── common │ │ │ └── scheduler │ │ │ └── api │ │ │ └── fallback │ │ │ └── RemoteSchedulerFallBack.java │ └── pom.xml └── pom.xml ├── al-oauth ├── .DS_Store └── src │ └── main │ ├── resources │ ├── static │ │ ├── img │ │ │ ├── logo.png │ │ │ ├── favicon.ico │ │ │ ├── login-bg.png │ │ │ ├── success.png │ │ │ ├── qrcode_ok.png │ │ │ └── qrcode_invalid.png │ │ └── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ └── templates │ │ └── 404.html │ └── java │ └── cn │ └── com │ └── axel │ └── oauth │ ├── mapper │ ├── xml │ │ ├── ClientMapper.xml │ │ └── SsoClientDetailsMapper.xml │ ├── SsoClientDetailsMapper.java │ └── ClientMapper.java │ ├── entity │ ├── RedisQrCode.java │ ├── UserOrg.java │ ├── QRCodeImg.java │ └── QRCode.java │ ├── service │ ├── QRCodeService.java │ ├── ClientService.java │ ├── SsoClientDetailsService.java │ ├── impl │ │ └── ClientServiceImpl.java │ └── OAuth2Service.java │ ├── config │ ├── properties │ │ ├── ShiroProperties.java │ │ ├── ShiroWhitesProperties.java │ │ └── WeChatProperties.java │ └── OauthMvcConfig.java │ ├── req │ ├── ReqChangePwd.java │ ├── ReqSsoClientDetails.java │ ├── ReqSsoTenant.java │ └── ReqSsoRole.java │ ├── validator │ ├── GetCodeValidator.java │ └── ClientIdExistValidator.java │ ├── credentials │ ├── QRCodeCredentialsMatcher.java │ └── WxCredentialsMatcher.java │ ├── cache │ ├── redis │ │ └── RedisCacheManager.java │ └── temp │ │ ├── OpenIdTempCache.java │ │ ├── ClientTempCache.java │ │ ├── UserTempCache.java │ │ └── UserTenantTempCache.java │ └── realm │ └── UserPasswordRealm.java ├── al-start ├── .DS_Store ├── al-start-sys │ ├── .DS_Store │ ├── Dockerfile │ └── src │ │ └── main │ │ ├── resources │ │ └── bootstrap.yml │ │ └── java │ │ └── cn │ │ └── com │ │ └── axel │ │ └── sys │ │ └── AlSysApplication.java ├── al-start-boot │ ├── .DS_Store │ ├── src │ │ └── main │ │ │ ├── resources │ │ │ ├── excel │ │ │ │ └── 销售订单.xlsx │ │ │ ├── application-gateway.yml │ │ │ ├── application-shiro.yml │ │ │ ├── application-oauth.yml │ │ │ ├── bootstrap.yml │ │ │ └── application-swagger.yml │ │ │ └── java │ │ │ └── cn │ │ │ └── com │ │ │ └── axel │ │ │ ├── boot │ │ │ └── config │ │ │ │ └── GatewayProperties.java │ │ │ └── AlNoCodeStart.java │ └── Dockerfile ├── al-start-demo │ ├── .DS_Store │ ├── Dockerfile │ └── src │ │ └── main │ │ ├── resources │ │ ├── excel │ │ │ └── 销售订单.xlsx │ │ └── bootstrap.yml │ │ └── java │ │ └── cn │ │ └── com │ │ └── axel │ │ └── demo │ │ └── AlDemoApplication.java ├── al-start-oauth │ ├── .DS_Store │ ├── Dockerfile │ └── src │ │ └── main │ │ ├── resources │ │ └── bootstrap.yml │ │ └── java │ │ └── cn │ │ └── com │ │ └── axel │ │ └── oauth │ │ └── AlOauthApplication.java ├── al-start-gateway │ ├── .DS_Store │ └── Dockerfile ├── al-start-lowcode │ ├── .DS_Store │ ├── Dockerfile │ └── src │ │ └── main │ │ ├── resources │ │ ├── excel │ │ │ └── 销售订单.xlsx │ │ └── bootstrap.yml │ │ └── java │ │ └── cn │ │ └── com │ │ └── axel │ │ └── lowcode │ │ └── AlLowcodeApplication.java ├── al-start-storage │ ├── .DS_Store │ ├── Dockerfile │ └── src │ │ └── main │ │ ├── resources │ │ └── bootstrap.yml │ │ └── java │ │ └── cn │ │ └── com │ │ └── axel │ │ └── storage │ │ └── AlStorageApplication.java └── al-start-scheduler │ ├── .DS_Store │ ├── Dockerfile │ └── src │ └── main │ ├── resources │ └── bootstrap.yml │ └── java │ └── cn │ └── com │ └── axel │ └── scheduler │ └── AlSchedulerApplication.java ├── al-test ├── .DS_Store └── src │ ├── .DS_Store │ └── main │ ├── resources │ └── bootstrap.yml │ └── java │ └── cn │ └── com │ └── axel │ └── test │ ├── entity │ └── TestParam.java │ └── AlTestApplication.java ├── al-business ├── .DS_Store ├── al-sys │ ├── .DS_Store │ └── src │ │ └── main │ │ └── java │ │ └── cn │ │ └── com │ │ └── axel │ │ └── sys │ │ ├── mapper │ │ ├── xml │ │ │ ├── CodeBuildMapper.xml │ │ │ ├── DbConnectMapper.xml │ │ │ ├── DictItemMapper.xml │ │ │ ├── SysConfigMapper.xml │ │ │ └── DictMapper.xml │ │ ├── DbConnectMapper.java │ │ ├── CodeBuildMapper.java │ │ ├── SysConfigMapper.java │ │ ├── DictItemMapper.java │ │ └── DictMapper.java │ │ ├── req │ │ ├── ReqMenuCreate.java │ │ ├── ReqSysConfig.java │ │ ├── ReqDictCategory.java │ │ ├── ReqDict.java │ │ └── ReqCodeBuild.java │ │ ├── service │ │ ├── SysConfigService.java │ │ └── DictService.java │ │ └── entity │ │ └── DBTreeNode.java ├── al-demo │ ├── .DS_Store │ └── src │ │ └── main │ │ └── java │ │ └── cn │ │ └── com │ │ └── axel │ │ └── demo │ │ ├── mapper │ │ ├── xml │ │ │ ├── DemoOrderMapper.xml │ │ │ ├── DemoDataScopeMapper.xml │ │ │ ├── DemoOrderDetailMapper.xml │ │ │ └── DemoImportExportMapper.xml │ │ ├── DemoOrderMapper.java │ │ ├── DemoDataScopeMapper.java │ │ ├── DemoOrderDetailMapper.java │ │ └── DemoImportExportMapper.java │ │ ├── entity │ │ ├── Question.java │ │ ├── CompletionResult.java │ │ └── Completion.java │ │ ├── service │ │ ├── DemoDataScopeService.java │ │ ├── DemoOrderDetailService.java │ │ ├── DemoImportExportService.java │ │ ├── DemoOrderService.java │ │ └── impl │ │ │ ├── DemoDataScopeServiceImpl.java │ │ │ ├── DemoOrderDetailServiceImpl.java │ │ │ └── DemoImportExportServiceImpl.java │ │ ├── req │ │ ├── ReqDemoDataScope.java │ │ ├── ReqDemoOrderDetail.java │ │ ├── ReqDemoOrder.java │ │ └── ReqDemoImportExport.java │ │ └── config │ │ └── OpenAiConfig.java ├── al-consume │ ├── .DS_Store │ └── src │ │ └── main │ │ ├── resources │ │ └── bootstrap.yml │ │ └── java │ │ └── cn │ │ └── com │ │ └── axel │ │ └── consume │ │ ├── AlConsumeApplication.java │ │ └── job │ │ └── ConsumerJob.java ├── al-lowcode │ ├── .DS_Store │ └── src │ │ └── main │ │ └── java │ │ └── cn │ │ └── com │ │ └── axel │ │ └── lowcode │ │ ├── mapper │ │ ├── LowCodePageMapper.java │ │ └── LowCodePageCategoryMapper.java │ │ ├── req │ │ ├── ReqLowCodePage.java │ │ └── ReqLowCodePageCategory.java │ │ └── service │ │ ├── LowCodePageService.java │ │ └── LowCodePageCategoryService.java └── pom.xml ├── al-common ├── .DS_Store ├── al-common-api │ ├── .DS_Store │ └── src │ │ └── main │ │ └── java │ │ └── cn │ │ └── com │ │ └── axel │ │ └── common │ │ └── api │ │ ├── BootLogService.java │ │ └── BootDictService.java ├── al-common-app │ ├── .DS_Store │ └── src │ │ └── main │ │ └── java │ │ └── cn │ │ └── com │ │ └── axel │ │ └── common │ │ └── app │ │ └── annotation │ │ └── AutoApp.java ├── al-common-ds │ ├── .DS_Store │ └── src │ │ └── main │ │ ├── resources │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── java │ │ └── cn │ │ └── com │ │ └── axel │ │ └── common │ │ └── ds │ │ ├── mapper │ │ └── BatchBaseMapper.java │ │ └── annotation │ │ ├── Master.java │ │ └── Slave.java ├── al-common-log │ ├── .DS_Store │ └── src │ │ └── main │ │ ├── resources │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── java │ │ └── cn │ │ └── com │ │ └── axel │ │ └── common │ │ └── log │ │ ├── mapper │ │ ├── xml │ │ │ └── SysLogMapper.xml │ │ └── SysLogMapper.java │ │ ├── service │ │ ├── SysLogService.java │ │ └── impl │ │ │ └── SysLogServiceImpl.java │ │ └── annotation │ │ └── Log.java ├── al-common-sys │ ├── .DS_Store │ └── src │ │ └── main │ │ └── java │ │ └── cn │ │ └── com │ │ └── axel │ │ └── common │ │ └── sys │ │ ├── req │ │ └── ReqDictItem.java │ │ └── service │ │ └── DictItemService.java ├── al-common-web │ ├── .DS_Store │ └── src │ │ └── main │ │ ├── resources │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── java │ │ └── cn │ │ └── com │ │ └── axel │ │ └── common │ │ └── web │ │ └── annotation │ │ └── AutoWeb.java ├── al-common-cloud │ ├── .DS_Store │ └── src │ │ └── main │ │ ├── resources │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── java │ │ └── cn │ │ └── com │ │ └── axel │ │ └── common │ │ └── cloud │ │ ├── annotation │ │ ├── AutoCloud.java │ │ └── AutoFeignClients.java │ │ └── config │ │ └── FeignConfig.java ├── al-common-code │ ├── .DS_Store │ └── src │ │ └── main │ │ ├── resources │ │ ├── META-INF │ │ │ └── spring │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── template │ │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── ${packageName} │ │ │ ├── mapper │ │ │ ├── xml │ │ │ │ └── ${entityName}Mapper.xml.ftl │ │ │ └── ${entityName}Mapper.java.ftl │ │ │ └── service │ │ │ ├── ${entityName}Service.java.ftl │ │ │ └── impl │ │ │ └── ${entityName}ServiceImpl.java.ftl │ │ └── java │ │ └── cn │ │ └── com │ │ └── axel │ │ └── common │ │ └── code │ │ ├── vo │ │ └── CodeVo.java │ │ ├── entity │ │ ├── FieldExpand.java │ │ ├── TableExpand.java │ │ ├── SearchInfo.java │ │ └── CodeInfo.java │ │ ├── req │ │ └── ReqSearch.java │ │ └── config │ │ └── properties │ │ └── FreemarkerProperties.java ├── al-common-core │ ├── .DS_Store │ └── src │ │ └── main │ │ ├── resources │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── java │ │ └── cn │ │ └── com │ │ └── axel │ │ └── common │ │ └── core │ │ ├── web │ │ └── PageConstant.java │ │ ├── exception │ │ ├── OAuthValidateException.java │ │ └── MyRuntimeException.java │ │ ├── enums │ │ ├── ReqSource.java │ │ ├── DeviceType.java │ │ ├── HttpType.java │ │ └── OperateType.java │ │ ├── config │ │ ├── ServiceProperties.java │ │ └── XssProperties.java │ │ ├── annotation │ │ ├── InnerUser.java │ │ └── GlobalException.java │ │ ├── utils │ │ └── excel │ │ │ └── UploadDAO.java │ │ ├── constants │ │ ├── ServiceConstants.java │ │ └── RPCConstants.java │ │ └── entity │ │ ├── BaseTreeEntity.java │ │ └── DefaultField.java ├── al-common-dblink │ ├── .DS_Store │ └── src │ │ └── main │ │ └── java │ │ └── cn │ │ └── com │ │ └── axel │ │ └── common │ │ └── dblink │ │ ├── .DS_Store │ │ ├── entity │ │ └── QueryParam.java │ │ ├── dbpool │ │ └── PoolWrapper.java │ │ ├── db │ │ └── DBDialect.java │ │ └── service │ │ └── DbConnectService.java ├── al-common-file │ ├── .DS_Store │ └── src │ │ └── main │ │ ├── resources │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── java │ │ └── cn │ │ └── com │ │ └── axel │ │ └── common │ │ └── file │ │ ├── service │ │ └── StorageService.java │ │ └── enums │ │ └── StorageType.java ├── al-common-oauth │ ├── .DS_Store │ └── src │ │ └── main │ │ ├── java │ │ └── cn │ │ │ └── com │ │ │ └── axel │ │ │ └── common │ │ │ └── oauth │ │ │ ├── common │ │ │ ├── Logical.java │ │ │ ├── DataScopeValue.java │ │ │ └── LoginMutexEntity.java │ │ │ ├── scope │ │ │ ├── DataScopeHandle.java │ │ │ └── TenantDataScopeHandle.java │ │ │ ├── validator │ │ │ └── IBaseValidator.java │ │ │ ├── annotation │ │ │ ├── RequiresRoles.java │ │ │ ├── RequiresPermissions.java │ │ │ └── DataScopes.java │ │ │ ├── req │ │ │ ├── ReqOrgUser.java │ │ │ ├── ReqSsoOrg.java │ │ │ ├── ReqSsoMenu.java │ │ │ └── ReqSsoUser.java │ │ │ ├── entity │ │ │ ├── SimpleUserInfo.java │ │ │ ├── SsoUser.java │ │ │ └── AccessToken.java │ │ │ └── service │ │ │ └── SsoMenuService.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── al-common-redis │ ├── .DS_Store │ └── src │ │ └── main │ │ ├── resources │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── java │ │ └── cn │ │ └── com │ │ └── axel │ │ └── common │ │ └── redis │ │ └── config │ │ └── CacheProperties.java ├── al-common-captcha │ ├── .DS_Store │ └── src │ │ └── main │ │ ├── resources │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── java │ │ └── cn │ │ └── com │ │ └── axel │ │ └── common │ │ └── captcha │ │ ├── common │ │ └── CaptchaConstant.java │ │ └── service │ │ └── CheckCodeService.java ├── al-common-dataset │ ├── .DS_Store │ ├── src │ │ └── main │ │ │ └── java │ │ │ └── cn │ │ │ └── com │ │ │ └── axel │ │ │ └── common │ │ │ └── dataset │ │ │ ├── enums │ │ │ └── TargetType.java │ │ │ ├── common │ │ │ └── Constant.java │ │ │ └── datatable │ │ │ └── MetaHeaderDataTable.java │ └── pom.xml ├── al-common-swagger │ ├── .DS_Store │ └── src │ │ └── main │ │ ├── resources │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── java │ │ └── cn │ │ └── com │ │ └── axel │ │ └── common │ │ └── swagger │ │ ├── annotation │ │ └── AutoSwagger.java │ │ └── config │ │ └── MyContact.java └── al-common-scheduler │ ├── .DS_Store │ └── src │ └── main │ ├── resources │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ └── java │ └── cn │ └── com │ └── axel │ └── common │ └── scheduler │ └── config │ ├── enums │ └── JobStatus.java │ └── properties │ └── ProductProperties.java ├── al-gateway ├── .DS_Store └── src │ └── main │ └── java │ └── cn │ └── com │ └── axel │ └── gateway │ ├── config │ └── properties │ │ └── IgnoreWhiteProperties.java │ └── common │ └── GatewayUtils.java ├── al-monitor ├── .DS_Store └── src │ └── main │ ├── resources │ ├── al-monitor-dev.yml │ └── bootstrap.yml │ └── java │ └── cn │ └── com │ └── axel │ └── monitor │ └── AlMonitorApplication.java ├── al-storage ├── .DS_Store └── src │ └── main │ └── java │ └── cn │ └── com │ └── axel │ └── storage │ ├── mapper │ ├── xml │ │ └── StorageMapper.xml │ └── StorageMapper.java │ └── req │ └── ReqSysFile.java ├── al-scheduler ├── .DS_Store └── src │ ├── .DS_Store │ ├── main │ └── java │ │ └── cn │ │ └── com │ │ └── axel │ │ └── scheduler │ │ ├── mapper │ │ ├── xml │ │ │ ├── JobMapper.xml │ │ │ └── JobLogMapper.xml │ │ ├── JobMapper.java │ │ ├── JobLogMapper.java │ │ └── JobSubscribeMapper.java │ │ ├── invoke │ │ └── BaseInvoke.java │ │ ├── service │ │ ├── JobLogService.java │ │ ├── impl │ │ │ └── JobLogServiceImpl.java │ │ └── JobService.java │ │ ├── req │ │ ├── ReqJobSubscribe.java │ │ ├── ReqJobLog.java │ │ └── ReqJob.java │ │ ├── listener │ │ └── ListenerEvent.java │ │ ├── execute │ │ ├── GeneralJobExecute.java │ │ └── DisallowConcurrentJobExecute.java │ │ ├── common │ │ └── AlConnectionProvider.java │ │ └── entity │ │ └── JobMeta.java │ └── test │ └── java │ └── cn │ └── com │ └── axel │ └── scheduler │ └── test │ └── BuildParamTest.java └── docker-compose.yml /al-wechat/pages/index/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": {} 3 | } -------------------------------------------------------------------------------- /al-api/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-api/.DS_Store -------------------------------------------------------------------------------- /al-oauth/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-oauth/.DS_Store -------------------------------------------------------------------------------- /al-start/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-start/.DS_Store -------------------------------------------------------------------------------- /al-test/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-test/.DS_Store -------------------------------------------------------------------------------- /al-business/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-business/.DS_Store -------------------------------------------------------------------------------- /al-common/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-common/.DS_Store -------------------------------------------------------------------------------- /al-gateway/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-gateway/.DS_Store -------------------------------------------------------------------------------- /al-monitor/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-monitor/.DS_Store -------------------------------------------------------------------------------- /al-storage/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-storage/.DS_Store -------------------------------------------------------------------------------- /al-test/src/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-test/src/.DS_Store -------------------------------------------------------------------------------- /al-wechat/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-wechat/.DS_Store -------------------------------------------------------------------------------- /al-scheduler/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-scheduler/.DS_Store -------------------------------------------------------------------------------- /al-scheduler/src/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-scheduler/src/.DS_Store -------------------------------------------------------------------------------- /al-wechat/pages/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-wechat/pages/.DS_Store -------------------------------------------------------------------------------- /al-wechat/style/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-wechat/style/.DS_Store -------------------------------------------------------------------------------- /al-api/al-sys-api/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-api/al-sys-api/.DS_Store -------------------------------------------------------------------------------- /al-business/al-sys/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-business/al-sys/.DS_Store -------------------------------------------------------------------------------- /al-wechat/pages/logs/logs.json: -------------------------------------------------------------------------------- 1 | { 2 | "navigationBarTitleText": "查看启动日志", 3 | "usingComponents": {} 4 | } -------------------------------------------------------------------------------- /al-api/al-oauth-api/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-api/al-oauth-api/.DS_Store -------------------------------------------------------------------------------- /al-api/al-storage-api/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-api/al-storage-api/.DS_Store -------------------------------------------------------------------------------- /al-business/al-demo/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-business/al-demo/.DS_Store -------------------------------------------------------------------------------- /al-start/al-start-sys/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-start/al-start-sys/.DS_Store -------------------------------------------------------------------------------- /al-api/al-scheduler-api/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-api/al-scheduler-api/.DS_Store -------------------------------------------------------------------------------- /al-business/al-consume/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-business/al-consume/.DS_Store -------------------------------------------------------------------------------- /al-business/al-lowcode/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-business/al-lowcode/.DS_Store -------------------------------------------------------------------------------- /al-common/al-common-api/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-common/al-common-api/.DS_Store -------------------------------------------------------------------------------- /al-common/al-common-app/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-common/al-common-app/.DS_Store -------------------------------------------------------------------------------- /al-common/al-common-ds/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-common/al-common-ds/.DS_Store -------------------------------------------------------------------------------- /al-common/al-common-log/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-common/al-common-log/.DS_Store -------------------------------------------------------------------------------- /al-common/al-common-sys/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-common/al-common-sys/.DS_Store -------------------------------------------------------------------------------- /al-common/al-common-web/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-common/al-common-web/.DS_Store -------------------------------------------------------------------------------- /al-start/al-start-boot/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-start/al-start-boot/.DS_Store -------------------------------------------------------------------------------- /al-start/al-start-demo/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-start/al-start-demo/.DS_Store -------------------------------------------------------------------------------- /al-start/al-start-oauth/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-start/al-start-oauth/.DS_Store -------------------------------------------------------------------------------- /al-common/al-common-cloud/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-common/al-common-cloud/.DS_Store -------------------------------------------------------------------------------- /al-common/al-common-code/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-common/al-common-code/.DS_Store -------------------------------------------------------------------------------- /al-common/al-common-core/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-common/al-common-core/.DS_Store -------------------------------------------------------------------------------- /al-common/al-common-dblink/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-common/al-common-dblink/.DS_Store -------------------------------------------------------------------------------- /al-common/al-common-file/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-common/al-common-file/.DS_Store -------------------------------------------------------------------------------- /al-common/al-common-oauth/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-common/al-common-oauth/.DS_Store -------------------------------------------------------------------------------- /al-common/al-common-redis/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-common/al-common-redis/.DS_Store -------------------------------------------------------------------------------- /al-start/al-start-gateway/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-start/al-start-gateway/.DS_Store -------------------------------------------------------------------------------- /al-start/al-start-lowcode/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-start/al-start-lowcode/.DS_Store -------------------------------------------------------------------------------- /al-start/al-start-storage/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-start/al-start-storage/.DS_Store -------------------------------------------------------------------------------- /al-common/al-common-captcha/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-common/al-common-captcha/.DS_Store -------------------------------------------------------------------------------- /al-common/al-common-dataset/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-common/al-common-dataset/.DS_Store -------------------------------------------------------------------------------- /al-common/al-common-swagger/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-common/al-common-swagger/.DS_Store -------------------------------------------------------------------------------- /al-start/al-start-scheduler/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-start/al-start-scheduler/.DS_Store -------------------------------------------------------------------------------- /al-common/al-common-scheduler/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-common/al-common-scheduler/.DS_Store -------------------------------------------------------------------------------- /al-oauth/src/main/resources/static/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-oauth/src/main/resources/static/img/logo.png -------------------------------------------------------------------------------- /al-oauth/src/main/resources/static/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-oauth/src/main/resources/static/img/favicon.ico -------------------------------------------------------------------------------- /al-oauth/src/main/resources/static/img/login-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-oauth/src/main/resources/static/img/login-bg.png -------------------------------------------------------------------------------- /al-oauth/src/main/resources/static/img/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-oauth/src/main/resources/static/img/success.png -------------------------------------------------------------------------------- /al-oauth/src/main/resources/static/img/qrcode_ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-oauth/src/main/resources/static/img/qrcode_ok.png -------------------------------------------------------------------------------- /al-start/al-start-demo/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk:21 2 | 3 | WORKDIR /app 4 | 5 | COPY target/al-*.jar /app/ 6 | 7 | ENTRYPOINT ["java", "-jar", "al-demo.jar"] -------------------------------------------------------------------------------- /al-start/al-start-sys/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk:21 2 | 3 | WORKDIR /app 4 | 5 | COPY target/al-*.jar /app/ 6 | 7 | ENTRYPOINT ["java", "-jar", "al-sys.jar"] -------------------------------------------------------------------------------- /al-start/al-start-oauth/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk:21 2 | 3 | WORKDIR /app 4 | 5 | COPY target/al-*.jar /app/ 6 | 7 | ENTRYPOINT ["java", "-jar", "al-oauth.jar"] -------------------------------------------------------------------------------- /al-common/al-common-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.com.axel.common.web.aspect.InnerUserAspect -------------------------------------------------------------------------------- /al-oauth/src/main/resources/static/img/qrcode_invalid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-oauth/src/main/resources/static/img/qrcode_invalid.png -------------------------------------------------------------------------------- /al-start/al-start-boot/src/main/resources/excel/销售订单.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-start/al-start-boot/src/main/resources/excel/销售订单.xlsx -------------------------------------------------------------------------------- /al-start/al-start-demo/src/main/resources/excel/销售订单.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-start/al-start-demo/src/main/resources/excel/销售订单.xlsx -------------------------------------------------------------------------------- /al-start/al-start-gateway/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk:21 2 | 3 | WORKDIR /app 4 | 5 | COPY target/al-*.jar /app/ 6 | 7 | ENTRYPOINT ["java", "-jar", "al-gateway.jar"] -------------------------------------------------------------------------------- /al-start/al-start-lowcode/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk:21 2 | 3 | WORKDIR /app 4 | 5 | COPY target/al-*.jar /app/ 6 | 7 | ENTRYPOINT ["java", "-jar", "al-lowcode.jar"] -------------------------------------------------------------------------------- /al-start/al-start-scheduler/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk:21 2 | 3 | WORKDIR /app 4 | 5 | COPY target/al-*.jar /app/ 6 | 7 | ENTRYPOINT ["java", "-jar", "al-scheduler.jar"] -------------------------------------------------------------------------------- /al-start/al-start-storage/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk:21 2 | 3 | WORKDIR /app 4 | 5 | COPY target/al-*.jar /app/ 6 | 7 | ENTRYPOINT ["java", "-jar", "al-storage.jar"] -------------------------------------------------------------------------------- /al-wechat/pages/logs/logs.wxss: -------------------------------------------------------------------------------- 1 | .log-list { 2 | display: flex; 3 | flex-direction: column; 4 | padding: 40rpx; 5 | } 6 | .log-item { 7 | margin: 10rpx; 8 | } 9 | -------------------------------------------------------------------------------- /al-start/al-start-lowcode/src/main/resources/excel/销售订单.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-start/al-start-lowcode/src/main/resources/excel/销售订单.xlsx -------------------------------------------------------------------------------- /al-wechat/style/base/fn.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | -------------------------------------------------------------------------------- /al-common/al-common-swagger/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.com.axel.common.swagger.config.SwaggerConfig -------------------------------------------------------------------------------- /al-api/al-storage-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.com.axel.common.storage.api.fallback.RemoteStorageFallBack -------------------------------------------------------------------------------- /al-wechat/style/base/mixin/mobile.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | -------------------------------------------------------------------------------- /al-wechat/style/base/mixin/text.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | -------------------------------------------------------------------------------- /al-api/al-scheduler-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.com.axel.common.scheduler.api.fallback.RemoteSchedulerFallBack -------------------------------------------------------------------------------- /al-wechat/style/base/mixin/setArrow.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | -------------------------------------------------------------------------------- /al-wechat/style/base/mixin/setOnepx.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | -------------------------------------------------------------------------------- /al-wechat/style/base/variable/color.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | -------------------------------------------------------------------------------- /al-wechat/style/base/variable/global.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | -------------------------------------------------------------------------------- /al-wechat/style/base/variable/weui-msg.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | -------------------------------------------------------------------------------- /al-wechat/style/base/variable/weui-tab.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | -------------------------------------------------------------------------------- /al-common/al-common-scheduler/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.com.axel.common.scheduler.config.properties.ProductProperties -------------------------------------------------------------------------------- /al-wechat/style/base/variable/weui-button.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | -------------------------------------------------------------------------------- /al-wechat/style/base/variable/weui-cell.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | -------------------------------------------------------------------------------- /al-wechat/style/base/variable/weui-dialog.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | -------------------------------------------------------------------------------- /al-wechat/style/base/variable/weui-grid.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | -------------------------------------------------------------------------------- /al-wechat/style/base/variable/weui-progress.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | -------------------------------------------------------------------------------- /al-oauth/src/main/resources/static/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-oauth/src/main/resources/static/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /al-oauth/src/main/resources/static/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-oauth/src/main/resources/static/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /al-common/al-common-dblink/src/main/java/cn/com/axel/common/dblink/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-common/al-common-dblink/src/main/java/cn/com/axel/common/dblink/.DS_Store -------------------------------------------------------------------------------- /al-oauth/src/main/resources/static/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-oauth/src/main/resources/static/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /al-oauth/src/main/resources/static/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zero-dim/server/HEAD/al-oauth/src/main/resources/static/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /al-wechat/sitemap.json: -------------------------------------------------------------------------------- 1 | { 2 | "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html", 3 | "rules": [{ 4 | "action": "allow", 5 | "page": "*" 6 | }] 7 | } -------------------------------------------------------------------------------- /al-start/al-start-boot/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk:21 2 | 3 | WORKDIR /app 4 | 5 | COPY target/al-*.jar /app/ 6 | COPY src/main/resources/prod/* /app/ 7 | 8 | ENTRYPOINT ["java", "-jar", "al-start-boot.jar"] 9 | -------------------------------------------------------------------------------- /al-common/al-common-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.com.axel.common.redis.config.RedisConfig 2 | cn.com.axel.common.redis.config.CacheProperties -------------------------------------------------------------------------------- /al-wechat/pages/logs/logs.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{index + 1}}. {{log}} 5 | 6 | 7 | -------------------------------------------------------------------------------- /al-common/al-common-cloud/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.com.axel.common.cloud.config.FeignConfig 2 | cn.com.axel.common.cloud.interceptor.BearerTokenInterceptor -------------------------------------------------------------------------------- /al-oauth/src/main/resources/templates/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 统一认证 错误 6 | 7 | 8 |

错误 404

9 | 10 | -------------------------------------------------------------------------------- /al-monitor/src/main/resources/al-monitor-dev.yml: -------------------------------------------------------------------------------- 1 | swagger: 2 | title: 'Axel监控中心' 3 | spring: 4 | security: 5 | user: 6 | name: admin 7 | password: 123456 8 | boot: 9 | admin: 10 | ui: 11 | title: Axel监控中心 -------------------------------------------------------------------------------- /al-wechat/style/widget/weui-cell/weui-switch.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | .weui-cell_switch{padding-top:12px;padding-bottom:12px} -------------------------------------------------------------------------------- /al-common/al-common-log/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.com.axel.common.log.aspect.LogAspect 2 | cn.com.axel.common.log.service.AsyncSaveLog 3 | cn.com.axel.common.log.service.impl.SysLogServiceImpl -------------------------------------------------------------------------------- /al-wechat/style/widget/weui-button/weui-btn_disabled.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | .weui-btn_disabled{color:rgba(0,0,0,.18);background-color:#fafafa} -------------------------------------------------------------------------------- /al-wechat/style/widget/weui-icon/weui-icon.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | icon[type=success]:after,icon[type=success]:before{color:#07c160!important} -------------------------------------------------------------------------------- /al-api/al-sys-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.com.axel.sys.api.fallback.RemoteLogFallback 2 | cn.com.axel.sys.api.fallback.RemoteDbConnectFallback 3 | cn.com.axel.sys.api.fallback.RemoteDictFallback -------------------------------------------------------------------------------- /al-common/al-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.com.axel.common.core.utils.SpringBeanFactory 2 | cn.com.axel.common.core.config.ServiceProperties 3 | cn.com.axel.common.core.config.XssProperties -------------------------------------------------------------------------------- /al-wechat/project.private.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", 3 | "setting": { 4 | "urlCheck": false 5 | } 6 | } -------------------------------------------------------------------------------- /al-common/al-common-file/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.com.axel.common.file.handler.StorageHandler 2 | cn.com.axel.common.file.config.properties.StorageProperties 3 | cn.com.axel.common.file.config.StorageConfig -------------------------------------------------------------------------------- /al-wechat/style/base/reset.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | page{line-height:1.6;font-family:-apple-system-font,Helvetica Neue,sans-serif}icon{vertical-align:middle} -------------------------------------------------------------------------------- /al-common/al-common-code/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.com.axel.common.code.common.FreemarkerUtils 2 | cn.com.axel.common.code.config.properties.FreemarkerProperties 3 | cn.com.axel.common.code.config.FreemarkerConfig -------------------------------------------------------------------------------- /al-common/al-common-ds/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.com.axel.common.ds.config.MybatisInterceptor 2 | cn.com.axel.common.ds.config.BatchSqlInjector 3 | com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure -------------------------------------------------------------------------------- /al-common/al-common-oauth/src/main/java/cn/com/axel/common/oauth/common/Logical.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.oauth.common; 2 | 3 | /** 4 | * @author: axel 5 | * @description: 权限校验连接枚举 6 | * @date: 2022/12/5 17:50 7 | */ 8 | public enum Logical { 9 | AND, 10 | OR; 11 | } 12 | -------------------------------------------------------------------------------- /al-common/al-common-captcha/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.com.axel.common.captcha.config.properties.CaptchaProperties 2 | cn.com.axel.common.captcha.config.CaptchaConfig 3 | cn.com.axel.common.captcha.service.impl.CheckCodeServiceImpl -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/mapper/xml/ClientMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /al-scheduler/src/main/java/cn/com/axel/scheduler/mapper/xml/JobMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /al-storage/src/main/java/cn/com/axel/storage/mapper/xml/StorageMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /al-business/al-sys/src/main/java/cn/com/axel/sys/mapper/xml/CodeBuildMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /al-business/al-sys/src/main/java/cn/com/axel/sys/mapper/xml/DbConnectMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /al-business/al-sys/src/main/java/cn/com/axel/sys/mapper/xml/DictItemMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /al-business/al-sys/src/main/java/cn/com/axel/sys/mapper/xml/SysConfigMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /al-scheduler/src/main/java/cn/com/axel/scheduler/mapper/xml/JobLogMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /al-wechat/style/widget/weui-flex/weui-flex.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | .weui-flex{display:-webkit-box;display:-webkit-flex;display:flex}.weui-flex__item{-webkit-box-flex:1;-webkit-flex:1;flex:1} -------------------------------------------------------------------------------- /al-business/al-demo/src/main/java/cn/com/axel/demo/mapper/xml/DemoOrderMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /al-wechat/style/widget/weui-tips/weui-mask.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | .weui-mask{background:rgba(0,0,0,.6)}.weui-mask,.weui-mask_transparent{position:fixed;z-index:1000;top:0;right:0;left:0;bottom:0} -------------------------------------------------------------------------------- /al-business/al-demo/src/main/java/cn/com/axel/demo/mapper/xml/DemoDataScopeMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /al-common/al-common-dataset/src/main/java/cn/com/axel/common/dataset/enums/TargetType.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.dataset.enums; 2 | 3 | /** 4 | * @description: 指标类型 5 | * @author: axel 6 | * @date: 2023/3/20 7 | */ 8 | public enum TargetType { 9 | ORIGINAL, //原始指标 10 | OPERATION //运算指标 11 | } 12 | -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/mapper/xml/SsoClientDetailsMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /al-business/al-demo/src/main/java/cn/com/axel/demo/mapper/xml/DemoOrderDetailMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /al-common/al-common-log/src/main/java/cn/com/axel/common/log/mapper/xml/SysLogMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /al-business/al-demo/src/main/java/cn/com/axel/demo/mapper/xml/DemoImportExportMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /al-business/al-demo/src/main/java/cn/com/axel/demo/entity/Question.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.demo.entity; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @description: 问题 7 | * @author: axel 8 | * @date: 2023/2/8 11:49 9 | */ 10 | @Data 11 | public class Question { 12 | private String id; 13 | private String data; 14 | } 15 | -------------------------------------------------------------------------------- /al-common/al-common-oauth/src/main/java/cn/com/axel/common/oauth/scope/DataScopeHandle.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.oauth.scope; 2 | 3 | /** 4 | * @description: 数据范围处理 5 | * @author: axel 6 | * @date: 2024/4/26 7 | */ 8 | public interface DataScopeHandle { 9 | String buildCondition(String fieldName, String[] values); 10 | } 11 | -------------------------------------------------------------------------------- /al-api/al-oauth-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.com.axel.common.oauth.api.fallback.RemoteUserFallback 2 | cn.com.axel.common.oauth.api.fallback.RemoteOrgFallback 3 | cn.com.axel.common.oauth.api.fallback.RemoteRoleFallback 4 | cn.com.axel.common.oauth.api.fallback.RemoteMenuFallback -------------------------------------------------------------------------------- /al-common/al-common-code/src/main/resources/template/src/main/java/${packageName}/mapper/xml/${entityName}Mapper.xml.ftl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /al-wechat/pages/logs/logs.js: -------------------------------------------------------------------------------- 1 | //logs.js 2 | const util = require('../../utils/util.js') 3 | 4 | Page({ 5 | data: { 6 | logs: [] 7 | }, 8 | onLoad: function () { 9 | this.setData({ 10 | logs: (wx.getStorageSync('logs') || []).map(log => { 11 | return util.formatTime(new Date(log)) 12 | }) 13 | }) 14 | } 15 | }) 16 | -------------------------------------------------------------------------------- /al-common/al-common-core/src/main/java/cn/com/axel/common/core/web/PageConstant.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.core.web; 2 | 3 | /** 4 | * @description: 翻页常量 5 | * @author: axel 6 | * @date: 2023/9/13 7 | */ 8 | public class PageConstant { 9 | public static final String PAGE_NUM = "pageNum"; 10 | public static final String PAGE_SIZE = "pageSize"; 11 | } 12 | -------------------------------------------------------------------------------- /al-common/al-common-core/src/main/java/cn/com/axel/common/core/exception/OAuthValidateException.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.core.exception; 2 | 3 | /** 4 | * @author: axel 5 | * @date: 2020/2/17 16:32 6 | */ 7 | public class OAuthValidateException extends RuntimeException { 8 | public OAuthValidateException(String msg) { 9 | super(msg); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/entity/RedisQrCode.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.entity; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | 6 | /** 7 | * @author: axel 8 | * @date: 2020/3/5 17:11 9 | */ 10 | @Data 11 | @EqualsAndHashCode(callSuper = true) 12 | public class RedisQrCode extends QRCode { 13 | private String accessToken; 14 | } 15 | -------------------------------------------------------------------------------- /al-wechat/style/widget/weui-button/weui-btn_primary.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | .weui-btn_primary{background-color:#07c160}.weui-btn_primary:not(.weui-btn_disabled):visited{color:#fff}.weui-btn_primary:not(.weui-btn_disabled):active{color:#fff;background-color:#06ad56} -------------------------------------------------------------------------------- /al-wechat/style/widget/weui-button/weui-btn_warn.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | .weui-btn_warn{color:#fa5151;background-color:#f2f2f2}.weui-btn_warn:not(.weui-btn_disabled):visited{color:#fa5151}.weui-btn_warn:not(.weui-btn_disabled):active{color:#fa5151;background-color:#d9d9d9} -------------------------------------------------------------------------------- /al-wechat/pages/index/index.wxss: -------------------------------------------------------------------------------- 1 | /**index.wxss**/ 2 | .userinfo { 3 | display: flex; 4 | flex-direction: column; 5 | align-items: center; 6 | } 7 | 8 | .userinfo-avatar { 9 | width: 128rpx; 10 | height: 128rpx; 11 | margin: 20rpx; 12 | border-radius: 50%; 13 | } 14 | 15 | .userinfo-nickname { 16 | color: #aaa; 17 | } 18 | 19 | .usermotto { 20 | margin-top: 200px; 21 | } -------------------------------------------------------------------------------- /al-wechat/style/widget/weui-button/weui-btn_default.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | .weui-btn_default{color:#06ae56;background-color:#f2f2f2}.weui-btn_default:not(.weui-btn_disabled):visited{color:#06ae56}.weui-btn_default:not(.weui-btn_disabled):active{color:#06ae56;background-color:#d9d9d9} -------------------------------------------------------------------------------- /al-scheduler/src/main/java/cn/com/axel/scheduler/invoke/BaseInvoke.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.scheduler.invoke; 2 | 3 | import cn.com.axel.common.scheduler.api.entity.JobLog; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @description: 基础任务 9 | * @author: axel 10 | * @date: 2023/2/13 17:41 11 | */ 12 | public interface BaseInvoke { 13 | Object run(JobLog jobLog, List params); 14 | } 15 | -------------------------------------------------------------------------------- /al-scheduler/src/main/java/cn/com/axel/scheduler/mapper/JobMapper.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.scheduler.mapper; 2 | 3 | import cn.com.axel.scheduler.entity.Job; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | * @description: 定时调度任务 8 | * @author: axel 9 | * @date: 2023-02-03 10 | * @version: V0.0.1 11 | */ 12 | public interface JobMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /al-wechat/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "pages": [ 3 | "pages/index/index", 4 | "pages/logs/logs" 5 | ], 6 | "window": { 7 | "backgroundTextStyle": "light", 8 | "navigationBarBackgroundColor": "#fff", 9 | "navigationBarTitleText": "Axel低代码—微信小程序", 10 | "navigationBarTextStyle": "black" 11 | }, 12 | "style": "v2", 13 | 14 | "usingComponents": {}, 15 | "sitemapLocation": "sitemap.json" 16 | } -------------------------------------------------------------------------------- /al-wechat/style/widget/weui-tips/weui-badge.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | .weui-badge{display:inline-block;padding:.15em .4em;min-width:8px;border-radius:18px;background-color:#fa5151;color:#fff;line-height:1.2;text-align:center;font-size:12px;vertical-align:middle}.weui-badge_dot{padding:.4em;min-width:0} -------------------------------------------------------------------------------- /al-business/al-sys/src/main/java/cn/com/axel/sys/mapper/DbConnectMapper.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.sys.mapper; 2 | 3 | import cn.com.axel.sys.api.entity.DbConnect; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | * @description: 数据库连接 8 | * @author: axel 9 | * @date: 2023-03-13 10 | * @version: V0.0.1 11 | */ 12 | public interface DbConnectMapper extends BaseMapper { 13 | } 14 | -------------------------------------------------------------------------------- /al-wechat/style/widget/weui-cell/weui-check.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | .weui-cells_checkbox .weui-check__label:before{left:55px}.weui-check__label:active{background-color:#ececec}.weui-check{position:absolute;left:-9999px}.weui-check__hd_in-checkbox{padding-right:16px}.weui-cell__ft_in-radio{padding-left:16px} -------------------------------------------------------------------------------- /al-business/al-demo/src/main/java/cn/com/axel/demo/mapper/DemoOrderMapper.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.demo.mapper; 2 | 3 | import cn.com.axel.demo.entity.DemoOrder; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | * @description: 销售订单 8 | * @author: axel 9 | * @date: 2024-09-13 10 | * @version: V0.0.1 11 | */ 12 | public interface DemoOrderMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /al-business/al-sys/src/main/java/cn/com/axel/sys/mapper/CodeBuildMapper.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.sys.mapper; 2 | 3 | import cn.com.axel.sys.entity.CodeBuild; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | * @description: 代码构建 8 | * @author: axel 9 | * @date: 2023-04-11 10 | * @version: V0.0.1 11 | */ 12 | public interface CodeBuildMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /al-business/al-sys/src/main/java/cn/com/axel/sys/mapper/SysConfigMapper.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.sys.mapper; 2 | 3 | import cn.com.axel.sys.entity.SysConfig; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | * @description: 界面配置 8 | * @author: axel 9 | * @date: 2023-03-07 10 | * @version: V0.0.1 11 | */ 12 | public interface SysConfigMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/service/QRCodeService.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.service; 2 | 3 | import cn.com.axel.oauth.entity.RedisQrCode; 4 | 5 | /** 6 | * @author: axel 7 | * @date: 2020/3/5 14:57 8 | */ 9 | public interface QRCodeService { 10 | void saveQRCode(RedisQrCode qrCode); 11 | 12 | RedisQrCode checkQRCode(String code); 13 | 14 | void updateQRCode(RedisQrCode qrCode); 15 | } 16 | -------------------------------------------------------------------------------- /al-business/al-demo/src/main/java/cn/com/axel/demo/entity/CompletionResult.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.demo.entity; 2 | 3 | import lombok.Data; 4 | import lombok.experimental.Accessors; 5 | 6 | /** 7 | * @description: 回答结果 8 | * @author: axel 9 | * @date: 2023/2/8 22:42 10 | */ 11 | @Data 12 | @Accessors(chain = true) 13 | public class CompletionResult { 14 | private String id; 15 | private String result; 16 | } 17 | -------------------------------------------------------------------------------- /al-common/al-common-log/src/main/java/cn/com/axel/common/log/mapper/SysLogMapper.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.log.mapper; 2 | 3 | import cn.com.axel.sys.api.entity.SysLog; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | * @description: 系统日志 8 | * @author: axel 9 | * @date: 2023-01-08 10 | * @version: V0.0.1 11 | */ 12 | public interface SysLogMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /al-scheduler/src/main/java/cn/com/axel/scheduler/mapper/JobLogMapper.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.scheduler.mapper; 2 | 3 | import cn.com.axel.common.scheduler.api.entity.JobLog; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | * @description: 任务日志 8 | * @author: axel 9 | * @date: 2023-02-14 10 | * @version: V0.0.1 11 | */ 12 | public interface JobLogMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/config/properties/ShiroProperties.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.config.properties; 2 | 3 | /** 4 | * @description: shiro配置属性 5 | * @author: axel 6 | * @date: 2023/1/15 15:41 7 | */ 8 | public class ShiroProperties { 9 | public static final String algorithmName = "md5"; 10 | public static final int hashIterations = 2; 11 | public static final Boolean hexEncoded = true; 12 | } 13 | -------------------------------------------------------------------------------- /al-scheduler/src/main/java/cn/com/axel/scheduler/service/JobLogService.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.scheduler.service; 2 | 3 | import cn.com.axel.common.scheduler.api.entity.JobLog; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | 6 | /** 7 | * @description: 任务日志 8 | * @author: axel 9 | * @date: 2023-02-14 10 | * @version: V0.0.1 11 | */ 12 | public interface JobLogService extends IService { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /al-storage/src/main/java/cn/com/axel/storage/mapper/StorageMapper.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.storage.mapper; 2 | 3 | import cn.com.axel.common.storage.api.entity.StorageInfo; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | * @description: 文件缓存 8 | * @author: axel 9 | * @date: 2023-01-05 10 | * @version: V0.0.1 11 | */ 12 | public interface StorageMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /al-wechat/style/widget/weui-progress/weui-progress.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | .weui-progress{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-progress__bar{-webkit-box-flex:1;-webkit-flex:1;flex:1}.weui-progress__opr{margin-left:15px;font-size:0} -------------------------------------------------------------------------------- /al-common/al-common-oauth/src/main/java/cn/com/axel/common/oauth/validator/IBaseValidator.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.oauth.validator; 2 | 3 | import cn.com.axel.common.core.web.Result; 4 | import jakarta.servlet.http.HttpServletRequest; 5 | 6 | 7 | /** 8 | * @author: axel 9 | * @date: 2020/2/13 13:43 10 | */ 11 | public interface IBaseValidator { 12 | Result validate(HttpServletRequest request, Result result); 13 | } 14 | -------------------------------------------------------------------------------- /al-business/al-lowcode/src/main/java/cn/com/axel/lowcode/mapper/LowCodePageMapper.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.lowcode.mapper; 2 | 3 | import cn.com.axel.lowcode.entity.LowCodePage; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | * @description: 低代码页面 8 | * @author: axel 9 | * @date: 2024-09-13 10 | * @version: V0.0.1 11 | */ 12 | public interface LowCodePageMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/mapper/SsoClientDetailsMapper.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.mapper; 2 | 3 | import cn.com.axel.oauth.entity.SsoClientDetails; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | * @description: 客户端信息 8 | * @author: axel 9 | * @date: 2023-05-12 10 | * @version: V0.0.1 11 | */ 12 | public interface SsoClientDetailsMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /al-business/al-demo/src/main/java/cn/com/axel/demo/mapper/DemoDataScopeMapper.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.demo.mapper; 2 | 3 | import cn.com.axel.demo.entity.DemoDataScope; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | * @description: demo_data_scope 8 | * @author: axel 9 | * @date: 2024-09-04 10 | * @version: V0.0.1 11 | */ 12 | public interface DemoDataScopeMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /al-business/al-demo/src/main/java/cn/com/axel/demo/mapper/DemoOrderDetailMapper.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.demo.mapper; 2 | 3 | import cn.com.axel.common.ds.mapper.BatchBaseMapper; 4 | import cn.com.axel.demo.entity.DemoOrderDetail; 5 | 6 | /** 7 | * @description: 销售订单明细 8 | * @author: axel 9 | * @date: 2024-09-02 10 | * @version: V0.0.1 11 | */ 12 | public interface DemoOrderDetailMapper extends BatchBaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /al-business/al-sys/src/main/java/cn/com/axel/sys/mapper/DictItemMapper.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.sys.mapper; 2 | 3 | import cn.com.axel.sys.api.entity.DictItem; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | * @Description: 字典项 8 | * @Author: axel 9 | * @date: 2023-01-03 10 | * @Version: V0.0.1 11 | */ 12 | @SuppressWarnings("rawtypes") 13 | public interface DictItemMapper extends BaseMapper { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/service/ClientService.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.service; 2 | 3 | import cn.com.axel.oauth.entity.OAuthClient; 4 | 5 | /** 6 | * @author: axel 7 | * @date: 2020/2/16 16:10 8 | */ 9 | public interface ClientService { 10 | /** 11 | * 根据客户端ID获取客户端信息 12 | * 13 | * @param clientId 客户端id 14 | * @return 返回客户端信息 15 | */ 16 | OAuthClient getClientById(String clientId); 17 | } 18 | -------------------------------------------------------------------------------- /al-business/al-demo/src/main/java/cn/com/axel/demo/mapper/DemoImportExportMapper.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.demo.mapper; 2 | 3 | import cn.com.axel.common.ds.mapper.BatchBaseMapper; 4 | import cn.com.axel.demo.entity.DemoImportExport; 5 | 6 | /** 7 | * @description: 导入导出Demo 8 | * @author: axel 9 | * @date: 2024-09-02 10 | * @version: V0.0.1 11 | */ 12 | public interface DemoImportExportMapper extends BatchBaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /al-business/al-demo/src/main/java/cn/com/axel/demo/service/DemoDataScopeService.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.demo.service; 2 | 3 | import cn.com.axel.demo.entity.DemoDataScope; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | 6 | /** 7 | * @description: demo_data_scope 8 | * @author: axel 9 | * @date: 2024-09-04 10 | * @version: V0.0.1 11 | */ 12 | public interface DemoDataScopeService extends IService { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /al-business/al-demo/src/main/java/cn/com/axel/demo/service/DemoOrderDetailService.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.demo.service; 2 | 3 | import cn.com.axel.demo.entity.DemoOrderDetail; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | 6 | /** 7 | * @description: 销售订单明细 8 | * @author: axel 9 | * @date: 2024-09-02 10 | * @version: V0.0.1 11 | */ 12 | public interface DemoOrderDetailService extends IService { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /al-wechat/style/widget/weui-button/weui-btn_loading.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | .weui-btn_loading .weui-loading{margin:-.2em .34em 0 0}.weui-btn_loading.weui-btn_primary{color:#fff}.weui-btn_loading.weui-btn_default{background-color:#d9d9d9}.weui-btn_loading.weui-btn_primary{background-color:#06ad56}.weui-btn_loading.weui-btn_warn{background-color:#d9d9d9} -------------------------------------------------------------------------------- /al-business/al-sys/src/main/java/cn/com/axel/sys/req/ReqMenuCreate.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.sys.req; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | 6 | /** 7 | * @description: 菜单创建请求 8 | * @author: axel 9 | * @date: 2024/4/22 10 | */ 11 | @Data 12 | public class ReqMenuCreate { 13 | @Schema(description = "代码生成id") 14 | private Long id; 15 | @Schema(description = "目录ID") 16 | private String parentId; 17 | } 18 | -------------------------------------------------------------------------------- /al-common/al-common-captcha/src/main/java/cn/com/axel/common/captcha/common/CaptchaConstant.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.captcha.common; 2 | 3 | /** 4 | * @description: 验证码常量 5 | * @author: axel 6 | * @date: 2024/5/2 7 | */ 8 | public class CaptchaConstant { 9 | public static final String CAPTCHA_VALUE = "captchaValue"; 10 | public static final String CAPTCHA_KEY = "captchaKey"; 11 | public static final String CHECK_ON_OFF = "captchaOnOff"; 12 | } 13 | -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/mapper/ClientMapper.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.mapper; 2 | 3 | import cn.com.axel.oauth.entity.OAuthClient; 4 | import org.apache.ibatis.annotations.Select; 5 | 6 | /** 7 | * @author: axel 8 | * @date: 2020/2/16 16:05 9 | */ 10 | public interface ClientMapper { 11 | @Select("select * from sso_client_details where client_id = #{clientId} and del_flag = 0") 12 | OAuthClient getClientById(String clientId); 13 | } 14 | -------------------------------------------------------------------------------- /al-business/al-lowcode/src/main/java/cn/com/axel/lowcode/mapper/LowCodePageCategoryMapper.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.lowcode.mapper; 2 | 3 | import cn.com.axel.lowcode.entity.LowCodePageCategory; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | * @description: 低代码页面分类 8 | * @author: axel 9 | * @date: 2024-09-13 10 | * @version: V0.0.1 11 | */ 12 | public interface LowCodePageCategoryMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /al-start/al-start-boot/src/main/resources/application-gateway.yml: -------------------------------------------------------------------------------- 1 | gateway: 2 | routes: 3 | - path: /oauth2 4 | packageName: cn.com.axel.oauth 5 | - path: /scheduler 6 | packageName: cn.com.axel.scheduler 7 | - path: /storage 8 | packageName: cn.com.axel.storage 9 | - path: /sys 10 | packageName: cn.com.axel.sys 11 | - path: /demo 12 | packageName: cn.com.axel.demo 13 | - path: /nocode 14 | packageName: cn.com.axel.nocode -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | services: 2 | axel-nocode-service: 3 | build: al-start/al-start-boot 4 | container_name: axel-nocode-service 5 | restart: always 6 | environment: 7 | - TZ=Asia/Shanghai 8 | ports: 9 | - 11116:8888 10 | volumes: 11 | - /home/srv/docker_volumes/axel-nocode-service/logs:/app/logs 12 | - /home/srv/docker_volumes/axel-nocode-service/code:/app/code 13 | - /home/srv/docker_volumes/axel-nocode-service/storage:/app/storage -------------------------------------------------------------------------------- /al-business/al-demo/src/main/java/cn/com/axel/demo/req/ReqDemoDataScope.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.demo.req; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * @description: demo_data_scope 9 | * @author: axel 10 | * @date: 2024-09-04 11 | * @version: V0.0.1 12 | */ 13 | @Data 14 | @Accessors(chain = true) 15 | @Schema(description = "demo_data_scope请求参数") 16 | public class ReqDemoDataScope { 17 | } 18 | -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/entity/UserOrg.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.entity; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | 5 | import lombok.Data; 6 | 7 | /** 8 | * @description: 用户组织 9 | * @author: axel 10 | * @date: 2023/7/4 11 | */ 12 | @Data 13 | @Schema(description = "用户组织") 14 | public class UserOrg { 15 | @Schema(description = "组织ID") 16 | private String orgId; 17 | @Schema(description = "用户ID") 18 | private String userId; 19 | } 20 | -------------------------------------------------------------------------------- /al-common/al-common-ds/src/main/java/cn/com/axel/common/ds/mapper/BatchBaseMapper.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.ds.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import org.apache.ibatis.annotations.Mapper; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @description: 批量新增mapper 10 | * @author: axel 11 | * @date: 2024/3/26 12 | */ 13 | @Mapper 14 | public interface BatchBaseMapper extends BaseMapper { 15 | int insertBatchSomeColumn(List list); 16 | } 17 | -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/entity/QRCodeImg.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.entity; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | 8 | /** 9 | * @author: axel 10 | * @date: 2020/3/5 18:23 11 | */ 12 | @Data 13 | @Schema(description = "二维码返回结果带图片") 14 | @EqualsAndHashCode(callSuper = true) 15 | public class QRCodeImg extends QRCode { 16 | @Schema(description = "二维码") 17 | private String img; 18 | } 19 | -------------------------------------------------------------------------------- /al-common/al-common-code/src/main/resources/template/src/main/java/${packageName}/mapper/${entityName}Mapper.java.ftl: -------------------------------------------------------------------------------- 1 | package ${packageName}.mapper; 2 | 3 | import ${packageName}.entity.${entityName}; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | * @description: ${tableInfo.tableComment} 8 | * @author: axel 9 | * @date: ${.now?string["yyyy-MM-dd"]} 10 | * @version: V0.0.1 11 | */ 12 | public interface ${entityName}Mapper extends BaseMapper<${entityName}> { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /al-common/al-common-code/src/main/resources/template/src/main/java/${packageName}/service/${entityName}Service.java.ftl: -------------------------------------------------------------------------------- 1 | package ${packageName}.service; 2 | 3 | import ${packageName}.entity.${entityName}; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | 6 | /** 7 | * @description: ${tableInfo.tableComment} 8 | * @author: axel 9 | * @date: ${.now?string["yyyy-MM-dd"]} 10 | * @version: V0.0.1 11 | */ 12 | public interface ${entityName}Service extends IService<${entityName}> { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /al-common/al-common-log/src/main/java/cn/com/axel/common/log/service/SysLogService.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.log.service; 2 | 3 | import cn.com.axel.common.core.web.Result; 4 | import cn.com.axel.sys.api.entity.SysLog; 5 | import com.baomidou.mybatisplus.extension.service.IService; 6 | 7 | /** 8 | * @description: 系统日志 9 | * @author: axel 10 | * @date: 2023-01-08 11 | * @version: V0.0.1 12 | */ 13 | public interface SysLogService extends IService { 14 | Result insertLog(SysLog sysLog); 15 | } 16 | -------------------------------------------------------------------------------- /al-common/al-common-core/src/main/java/cn/com/axel/common/core/enums/ReqSource.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.core.enums; 2 | 3 | import lombok.Getter; 4 | 5 | /** 6 | * @author: axel 7 | * @description: 请求来源 8 | * @date: 2022/9/6 17:33 9 | */ 10 | @Getter 11 | public enum ReqSource { 12 | //其他 13 | OTHER(0), 14 | //管理端 15 | MANAGER(1), 16 | //手机端 17 | PHONE(2); 18 | private final Integer value; 19 | 20 | ReqSource(Integer value) { 21 | this.value = value; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /al-business/al-sys/src/main/java/cn/com/axel/sys/mapper/DictMapper.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.sys.mapper; 2 | 3 | import cn.com.axel.sys.entity.Dict; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.apache.ibatis.annotations.Param; 6 | 7 | /** 8 | * @Description: 字典 9 | * @Author: axel 10 | * @date: 2023-01-03 11 | * @Version: V0.0.1 12 | */ 13 | public interface DictMapper extends BaseMapper { 14 | Integer isDictCodeExist(@Param("id") String id, @Param("dictCode") String dictCode); 15 | } 16 | -------------------------------------------------------------------------------- /al-business/al-sys/src/main/java/cn/com/axel/sys/req/ReqSysConfig.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.sys.req; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | /** 9 | * @description: 界面配置 10 | * @author: axel 11 | * @date: 2023-03-07 12 | * @version: V0.0.1 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | @Schema(description = "界面配置请求参数") 17 | public class ReqSysConfig { 18 | @Schema(description = "用户ID") 19 | private String userId; 20 | } 21 | -------------------------------------------------------------------------------- /al-common/al-common-dataset/src/main/java/cn/com/axel/common/dataset/common/Constant.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.dataset.common; 2 | 3 | /** 4 | * @description: 常量 5 | * @author: axel 6 | * @date: 2023/5/9 20:37 7 | */ 8 | public class Constant { 9 | public static final String NotFoundException = "错误:未找到对应的列"; 10 | public static final String IndexOverException = "错误:超出索引界限"; 11 | public static final String ErrorRowException = "错误:行不匹配"; 12 | public static final String EmptyColNameException = "错误:列名不允许为空"; 13 | } 14 | -------------------------------------------------------------------------------- /al-business/al-demo/src/main/java/cn/com/axel/demo/service/DemoImportExportService.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.demo.service; 2 | 3 | import cn.com.axel.demo.entity.DemoImportExport; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @description: 导入导出Demo 10 | * @author: axel 11 | * @date: 2024-09-02 12 | * @version: V0.0.1 13 | */ 14 | public interface DemoImportExportService extends IService { 15 | int insertBatchSomeColumn(List list); 16 | } 17 | -------------------------------------------------------------------------------- /al-scheduler/src/main/java/cn/com/axel/scheduler/req/ReqJobSubscribe.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.scheduler.req; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | /** 9 | * @description: 任务订阅表 10 | * @author: axel 11 | * @date: 2023-02-20 12 | * @version: V0.0.1 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | @Schema(description = "任务订阅表请求参数") 17 | public class ReqJobSubscribe { 18 | @Schema(description = "任务ID") 19 | private String jobId; 20 | } 21 | -------------------------------------------------------------------------------- /al-wechat/style/widget/weui-button/weui-btn_global.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | .weui-btn{position:relative;display:block;width:184px;margin-left:auto;margin-right:auto;padding:8px 24px;box-sizing:border-box;font-weight:700;font-size:17px;text-align:center;text-decoration:none;color:#fff;line-height:1.41176471;border-radius:4px;-webkit-tap-highlight-color:rgba(0,0,0,0);overflow:hidden}.weui-btn_block{width:auto}.weui-btn_inline{display:inline-block} -------------------------------------------------------------------------------- /al-common/al-common-oauth/src/main/java/cn/com/axel/common/oauth/annotation/RequiresRoles.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.oauth.annotation; 2 | 3 | import cn.com.axel.common.oauth.common.Logical; 4 | 5 | import java.lang.annotation.*; 6 | 7 | /** 8 | * @author: axel 9 | * @description: 角色校验注解 10 | * @date: 2022/12/5 17:51 11 | */ 12 | @Target({ElementType.TYPE, ElementType.METHOD}) 13 | @Retention(RetentionPolicy.RUNTIME) 14 | @Documented 15 | public @interface RequiresRoles { 16 | String[] value(); 17 | 18 | Logical logical() default Logical.OR; 19 | } -------------------------------------------------------------------------------- /al-common/al-common-oauth/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.com.axel.common.oauth.service.impl.WebTokenServiceImpl 2 | cn.com.axel.common.oauth.service.impl.WeChatTokenServiceImpl 3 | cn.com.axel.common.oauth.aspect.AuthorizationAspect 4 | cn.com.axel.common.oauth.validator.WebTokenValidator 5 | cn.com.axel.common.oauth.validator.WeChatTokenValidator 6 | cn.com.axel.common.oauth.validator.TokenValidator 7 | cn.com.axel.common.oauth.scope.SelectInterceptor 8 | cn.com.axel.common.oauth.aspect.DataScopeAspect -------------------------------------------------------------------------------- /al-common/al-common-core/src/main/java/cn/com/axel/common/core/enums/DeviceType.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.core.enums; 2 | 3 | /** 4 | * @author: axel 5 | * @description: 设备类型 6 | * @date: 2022/12/2 18:19 7 | */ 8 | public enum DeviceType { 9 | //浏览器 10 | Web("0"), 11 | //手机端 12 | APP("1"), 13 | //微信 14 | WX("2"); 15 | private final String value; 16 | 17 | DeviceType(String value) { 18 | this.value = value; 19 | } 20 | 21 | @Override 22 | public String toString() { 23 | return value; 24 | } 25 | } -------------------------------------------------------------------------------- /al-common/al-common-scheduler/src/main/java/cn/com/axel/common/scheduler/config/enums/JobStatus.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.scheduler.config.enums; 2 | 3 | /** 4 | * @description: 任务状态 5 | * @author: axel 6 | * @date: 2023/2/15 15:06 7 | */ 8 | public enum JobStatus { 9 | 开始(0), 10 | 调度成功(1), 11 | 调度失败(2), 12 | 执行成功(3), 13 | 执行失败(4); 14 | private final Integer status; 15 | 16 | JobStatus(int status) { 17 | this.status = status; 18 | } 19 | 20 | public int getValue() { 21 | return status; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /al-common/al-common-core/src/main/java/cn/com/axel/common/core/exception/MyRuntimeException.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.core.exception; 2 | 3 | /** 4 | * @author: axel 5 | * @date: 2020/2/10 17:17 6 | */ 7 | public class MyRuntimeException extends RuntimeException { 8 | public MyRuntimeException(String msg) { 9 | super(msg); 10 | } 11 | 12 | public MyRuntimeException(Throwable cause) { 13 | super(cause); 14 | } 15 | 16 | public MyRuntimeException(String msg, Throwable cause) { 17 | super(msg, cause); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /al-wechat/utils/util.js: -------------------------------------------------------------------------------- 1 | const formatTime = date => { 2 | const year = date.getFullYear() 3 | const month = date.getMonth() + 1 4 | const day = date.getDate() 5 | const hour = date.getHours() 6 | const minute = date.getMinutes() 7 | const second = date.getSeconds() 8 | 9 | return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':') 10 | } 11 | 12 | const formatNumber = n => { 13 | n = n.toString() 14 | return n[1] ? n : '0' + n 15 | } 16 | 17 | module.exports = { 18 | formatTime: formatTime 19 | } 20 | -------------------------------------------------------------------------------- /al-common/al-common-oauth/src/main/java/cn/com/axel/common/oauth/annotation/RequiresPermissions.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.oauth.annotation; 2 | 3 | import cn.com.axel.common.oauth.common.Logical; 4 | 5 | import java.lang.annotation.*; 6 | 7 | /** 8 | * @author: axel 9 | * @description: 权限校验注解 10 | * @date: 2022/12/5 17:48 11 | */ 12 | @Target({ElementType.TYPE, ElementType.METHOD}) 13 | @Retention(RetentionPolicy.RUNTIME) 14 | @Documented 15 | public @interface RequiresPermissions { 16 | String[] value(); 17 | 18 | Logical logical() default Logical.OR; 19 | } -------------------------------------------------------------------------------- /al-common/al-common-swagger/src/main/java/cn/com/axel/common/swagger/annotation/AutoSwagger.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.swagger.annotation; 2 | 3 | import cn.com.axel.common.swagger.config.SwaggerConfig; 4 | import org.springframework.context.annotation.Import; 5 | 6 | import java.lang.annotation.*; 7 | 8 | /** 9 | * @author: axel 10 | * @description: swagger自动配置注解 11 | * @date: 2021/11/15 13:12 12 | */ 13 | @Target(ElementType.TYPE) 14 | @Retention(RetentionPolicy.RUNTIME) 15 | @Documented 16 | @Import(SwaggerConfig.class) 17 | public @interface AutoSwagger { 18 | } 19 | -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/req/ReqChangePwd.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.req; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | 5 | import lombok.Data; 6 | 7 | /** 8 | * @author: axel 9 | * @description: 修改密码入参 10 | * @date: 2022/12/21 22:17 11 | */ 12 | @Schema(description = "修改密码入参") 13 | @Data 14 | public class ReqChangePwd { 15 | @Schema(description = "用户ID") 16 | private String userId; 17 | @Schema(description = "旧密码") 18 | private String oldPwd; 19 | @Schema(description = "新密码") 20 | private String newPwd; 21 | } 22 | -------------------------------------------------------------------------------- /al-common/al-common-oauth/src/main/java/cn/com/axel/common/oauth/annotation/DataScopes.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.oauth.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * @description: 数据范围组(多个组之间是and条件,即多个条件同时满足) 10 | * @author: axel 11 | * @date: 2024/4/28 12 | */ 13 | @Target({ElementType.METHOD}) 14 | @Retention(RetentionPolicy.RUNTIME) 15 | public @interface DataScopes { 16 | DataScope[] value(); 17 | } 18 | -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/validator/GetCodeValidator.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.validator; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | /** 6 | * @author: axel 7 | * @date: 2020/2/16 19:10 8 | */ 9 | @Component 10 | public class GetCodeValidator extends MultipleValidator { 11 | public GetCodeValidator() { 12 | this.validateClientList.add(ClientIdExistValidator.class); 13 | this.validateClientList.add(AllowCodeValidator.class); 14 | this.validateClientList.add(RedirectUriExistValidator.class); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /al-scheduler/src/main/java/cn/com/axel/scheduler/listener/ListenerEvent.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.scheduler.listener; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | 5 | /** 6 | * @description: 监听事件接口 7 | * @author: axel 8 | * @date: 2023/2/7 12:07 9 | */ 10 | @Slf4j 11 | public class ListenerEvent { 12 | 13 | public void save(T t) { 14 | log.info("----- ListenerEvent.save -----> {}", t.toString()); 15 | } 16 | 17 | public void delete(String fireInstanceId) { 18 | log.info("----- ListenerEvent.delete -----> {}", fireInstanceId); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /al-wechat/style/widget/weui-button/weui-button.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | .weui-btn+.weui-btn{margin-top:16px}.weui-btn.weui-btn_inline+.weui-btn.weui-btn_inline{margin-top:auto;margin-left:16px}.weui-btn-area{margin:48px 16px 8px}.weui-btn-area_inline{display:-webkit-box;display:-webkit-flex;display:flex}.weui-btn-area_inline .weui-btn{margin-top:auto;margin-right:16px;width:100%;-webkit-box-flex:1;-webkit-flex:1;flex:1}.weui-btn-area_inline .weui-btn:last-child{margin-right:0} -------------------------------------------------------------------------------- /al-common/al-common-core/src/main/java/cn/com/axel/common/core/config/ServiceProperties.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.core.config; 2 | 3 | import lombok.Data; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | /** 8 | * @description: 服务属性 9 | * @author: axel 10 | * @date: 2024/1/31 11 | */ 12 | @Data 13 | @Configuration 14 | @ConfigurationProperties(prefix = "axel") 15 | public class ServiceProperties { 16 | private String version; 17 | private String type = "cloud"; 18 | } 19 | -------------------------------------------------------------------------------- /al-scheduler/src/main/java/cn/com/axel/scheduler/execute/GeneralJobExecute.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.scheduler.execute; 2 | 3 | import cn.com.axel.common.scheduler.api.entity.JobLog; 4 | import cn.com.axel.scheduler.invoke.BaseInvoke; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @description: 通用job执行 10 | * @author: axel 11 | * @date: 2023/2/7 11:01 12 | */ 13 | public class GeneralJobExecute extends AbstractJobExecute { 14 | @Override 15 | protected void execute(BaseInvoke baseJob, JobLog jobLog, List params) { 16 | baseJob.run(jobLog, params); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /al-wechat/style/widget/weui-agree/weui-agree.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | .weui-agree{display:block;padding:.5em 15px;font-size:13px}.weui-agree__text{color:rgba(0,0,0,.5)}.weui-agree__link{display:inline;color:#576b95}.weui-agree__checkbox{position:absolute;left:-9999px}.weui-agree__checkbox-icon{position:relative;top:2px;display:inline-block;border:1px solid #d1d1d1;background-color:#fff;border-radius:3px;width:11px;height:11px}.weui-agree__checkbox-icon-check{position:absolute;top:1px;left:1px} -------------------------------------------------------------------------------- /al-common/al-common-core/src/main/java/cn/com/axel/common/core/annotation/InnerUser.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.core.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * @author: axel 10 | * @description: 标记为内部接口 11 | * @date: 2021/12/3 20:16 12 | */ 13 | @Target(ElementType.METHOD) 14 | @Retention(RetentionPolicy.RUNTIME) 15 | public @interface InnerUser { 16 | //内部请求是否校验用户 默认:false不校验 17 | boolean validateUser() default false; 18 | } 19 | -------------------------------------------------------------------------------- /al-business/al-demo/src/main/java/cn/com/axel/demo/entity/Completion.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.demo.entity; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @description: openAi属性 7 | * @author: axel 8 | * @date: 2023/2/8 11:31 9 | */ 10 | @Data 11 | public class Completion { 12 | private String model; 13 | private String prompt; 14 | private double temperature = 1; 15 | private int max_tokens = 16; 16 | private double top_p = 1; 17 | private int n = 1; 18 | private boolean stream = false; 19 | private double frequency_penalty = 0; 20 | private double presence_penalty = 0; 21 | } 22 | -------------------------------------------------------------------------------- /al-business/al-demo/src/main/java/cn/com/axel/demo/req/ReqDemoOrderDetail.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.demo.req; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * @description: 销售订单明细 9 | * @author: axel 10 | * @date: 2024-09-02 11 | * @version: V0.0.1 12 | */ 13 | @Data 14 | @Accessors(chain = true) 15 | @Schema(description = "销售订单明细请求参数") 16 | public class ReqDemoOrderDetail { 17 | @Schema(description = "明细主键") 18 | private String id; 19 | @Schema(description = "订单号") 20 | private String orderId; 21 | } 22 | -------------------------------------------------------------------------------- /al-business/al-sys/src/main/java/cn/com/axel/sys/mapper/xml/DictMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 13 | 14 | -------------------------------------------------------------------------------- /al-common/al-common-file/src/main/java/cn/com/axel/common/file/service/StorageService.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.file.service; 2 | 3 | import cn.com.axel.common.core.web.Result; 4 | import cn.com.axel.common.storage.api.entity.StorageInfo; 5 | import com.baomidou.mybatisplus.extension.service.IService; 6 | 7 | /** 8 | * @description: 文件缓存 9 | * @author: axel 10 | * @date: 2023-01-05 11 | * @version: V0.0.1 12 | */ 13 | public interface StorageService extends IService { 14 | 15 | Result queryByKey(String fileKey); 16 | 17 | Result logicDelete(String id); 18 | } 19 | -------------------------------------------------------------------------------- /al-common/al-common-core/src/main/java/cn/com/axel/common/core/utils/excel/UploadDAO.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.core.utils.excel; 2 | 3 | import org.springframework.stereotype.Repository; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * 上传存储操作 9 | * 10 | * @param 11 | */ 12 | @Repository 13 | public interface UploadDAO { 14 | 15 | /** 16 | * 保存操作 17 | * 如果是mybatis,尽量别直接调用多次insert,自己写一个mapper里面新增一个方法batchInsert,所有数据一次性插入 18 | * 19 | * @param list 数据列表 20 | * @param extraProp 额外属性 21 | */ 22 | void save(List list, UploadDataListener.ExtraProp extraProp); 23 | } 24 | -------------------------------------------------------------------------------- /al-common/al-common-ds/src/main/java/cn/com/axel/common/ds/annotation/Master.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.ds.annotation; 2 | 3 | import com.baomidou.dynamic.datasource.annotation.DS; 4 | 5 | import java.lang.annotation.ElementType; 6 | import java.lang.annotation.Retention; 7 | import java.lang.annotation.RetentionPolicy; 8 | import java.lang.annotation.Target; 9 | 10 | /** 11 | * @author: axel 12 | * @description: 主库数据源配置注解 13 | * @date: 2021/11/30 11:42 14 | */ 15 | @Target({ElementType.TYPE, ElementType.METHOD}) 16 | @Retention(RetentionPolicy.RUNTIME) 17 | @DS("master") 18 | public @interface Master { 19 | } 20 | -------------------------------------------------------------------------------- /al-common/al-common-ds/src/main/java/cn/com/axel/common/ds/annotation/Slave.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.ds.annotation; 2 | 3 | import com.baomidou.dynamic.datasource.annotation.DS; 4 | 5 | import java.lang.annotation.ElementType; 6 | import java.lang.annotation.Retention; 7 | import java.lang.annotation.RetentionPolicy; 8 | import java.lang.annotation.Target; 9 | 10 | /** 11 | * @author: axel 12 | * @description: 从库数据源配置注解 13 | * @date: 2021/11/30 11:54 14 | */ 15 | @Target({ElementType.TYPE, ElementType.METHOD}) 16 | @Retention(RetentionPolicy.RUNTIME) 17 | @DS("slave") 18 | public @interface Slave { 19 | } 20 | -------------------------------------------------------------------------------- /al-business/al-sys/src/main/java/cn/com/axel/sys/req/ReqDictCategory.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.sys.req; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | /** 9 | * @description: 树形分类 10 | * @author: axel 11 | * @date: 2024-03-12 12 | * @version: V0.0.1 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | @Schema(description = "树形分类请求参数") 17 | public class ReqDictCategory { 18 | @Schema(description = "分类名称") 19 | private String categoryName; 20 | @Schema(description = "分类编码") 21 | private String categoryCode; 22 | } 23 | -------------------------------------------------------------------------------- /al-common/al-common-cloud/src/main/java/cn/com/axel/common/cloud/annotation/AutoCloud.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.cloud.annotation; 2 | 3 | import cn.com.axel.common.web.annotation.AutoWeb; 4 | 5 | import java.lang.annotation.ElementType; 6 | import java.lang.annotation.Retention; 7 | import java.lang.annotation.RetentionPolicy; 8 | import java.lang.annotation.Target; 9 | 10 | /** 11 | * @description: web应用微服务自动注解 12 | * @author: axel 13 | * @date: 2024/8/27 14 | */ 15 | @Target(ElementType.TYPE) 16 | @Retention(RetentionPolicy.RUNTIME) 17 | @AutoFeignClients 18 | @AutoWeb 19 | public @interface AutoCloud { 20 | } 21 | -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/req/ReqSsoClientDetails.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.req; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | /** 9 | * @description: 客户端信息 10 | * @author: axel 11 | * @date: 2023-05-12 12 | * @version: V0.0.1 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | @Schema(description = "客户端信息请求参数") 17 | public class ReqSsoClientDetails { 18 | @Schema(description = "客户端名称") 19 | private String clientName; 20 | @Schema(description = "客户端ID") 21 | private String clientId; 22 | } 23 | -------------------------------------------------------------------------------- /al-wechat/style/widget/weui-cell/weui-form/weui-vcode.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | .weui-cell_vcode{padding-top:0;padding-right:0;padding-bottom:0}.weui-vcode-btn,.weui-vcode-img{margin-left:5px;height:3.29411765em;vertical-align:middle}.weui-vcode-btn{display:inline-block;padding:0 .6em 0 .7em;border-left:1rpx solid rgba(0,0,0,.1);line-height:3.29411765em;font-size:17px;color:#576b95;white-space:nowrap}button.weui-vcode-btn{min-height:0;background-color:transparent;border:0;outline:0}.weui-vcode-btn:active{color:#767676} -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/service/SsoClientDetailsService.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.service; 2 | 3 | import cn.com.axel.common.core.web.Result; 4 | import cn.com.axel.oauth.entity.SsoClientDetails; 5 | import com.baomidou.mybatisplus.extension.service.IService; 6 | 7 | /** 8 | * @description: 客户端信息 9 | * @author: axel 10 | * @date: 2023-05-12 11 | * @version: V0.0.1 12 | */ 13 | public interface SsoClientDetailsService extends IService { 14 | 15 | Result updateClient(SsoClientDetails ssoClientDetails); 16 | 17 | void removeClientCache(String clientId); 18 | } 19 | -------------------------------------------------------------------------------- /al-scheduler/src/main/java/cn/com/axel/scheduler/req/ReqJobLog.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.scheduler.req; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | import lombok.experimental.Accessors; 8 | 9 | /** 10 | * @description: 任务日志 11 | * @author: axel 12 | * @date: 2023-02-14 13 | * @version: V0.0.1 14 | */ 15 | @EqualsAndHashCode(callSuper = true) 16 | @Data 17 | @Accessors(chain = true) 18 | @Schema(description = "任务日志请求参数") 19 | public class ReqJobLog extends ReqJob { 20 | @Schema(description = "cron表达式") 21 | private String cron; 22 | } 23 | -------------------------------------------------------------------------------- /al-common/al-common-oauth/src/main/java/cn/com/axel/common/oauth/req/ReqOrgUser.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.oauth.req; 2 | 3 | 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | /** 9 | * @description: 组织用户请求 10 | * @author: axel 11 | * @date: 2024/4/2 12 | */ 13 | @Data 14 | @Accessors(chain = true) 15 | public class ReqOrgUser { 16 | @Schema(description = "账号") 17 | private String account; 18 | @Schema(description = "手机号") 19 | private String phone; 20 | @Schema(description = "昵称--用于显示") 21 | private String nickname; 22 | } 23 | -------------------------------------------------------------------------------- /al-start/al-start-boot/src/main/resources/application-shiro.yml: -------------------------------------------------------------------------------- 1 | # 可匿名访问的路径(不校验白名单) 2 | security: 3 | ignore: 4 | whites: 5 | - "/oauth2/user/revoke" 6 | - "/oauth2/authorize" 7 | - "/oauth2/accessToken" 8 | - "/oauth2/sendMsg" 9 | - "/oauth2/qrCodeLogin/**" 10 | - "/oauth2/wx/bind/**" 11 | - "/oauth2/static/**" 12 | - "/captcha" 13 | - "/storage/file/*.*" 14 | - "/css/**" 15 | - "/img/**" 16 | - "/js/**" 17 | - "/fonts/**" 18 | - "/wx/**" 19 | - "/swagger-ui/**" 20 | - "/swagger-resources/**" 21 | - "/v3/api-docs/**" 22 | - "/404" 23 | -------------------------------------------------------------------------------- /al-common/al-common-redis/src/main/java/cn/com/axel/common/redis/config/CacheProperties.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.redis.config; 2 | 3 | import lombok.Data; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | import org.springframework.cloud.context.config.annotation.RefreshScope; 6 | import org.springframework.context.annotation.Configuration; 7 | 8 | /** 9 | * @description: 缓存配置 10 | * @author: axel 11 | * @date: 2023/1/15 14:37 12 | */ 13 | @Configuration 14 | @ConfigurationProperties(prefix = "cache.temp") 15 | @RefreshScope 16 | @Data 17 | public class CacheProperties { 18 | private long time = 7; 19 | } 20 | -------------------------------------------------------------------------------- /al-common/al-common-code/src/main/java/cn/com/axel/common/code/vo/CodeVo.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.code.vo; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | /** 9 | * @author: axel 10 | * @description: 代码相关信息 11 | * @date: 2022/9/1 15:46 12 | */ 13 | @Data 14 | @Accessors(chain = true) 15 | @Schema(description = "代码相关信息") 16 | public class CodeVo { 17 | @Schema(description = "代码存储路径") 18 | private String path; 19 | @Schema(description = "文件名称") 20 | private String name; 21 | @Schema(description = "生成代码") 22 | private String code; 23 | } 24 | -------------------------------------------------------------------------------- /al-common/al-common-code/src/main/java/cn/com/axel/common/code/entity/FieldExpand.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.code.entity; 2 | 3 | import cn.com.axel.sys.api.entity.FieldInfo; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * @description: 字段拓展 12 | * @author: axel 13 | * @date: 2024/4/19 14 | */ 15 | @Data 16 | @Accessors(chain = true) 17 | public class FieldExpand { 18 | @Schema(description = "字段信息") 19 | private FieldInfo fieldInfo; 20 | @Schema(description = "字典组件") 21 | private List dictComponent; 22 | } 23 | -------------------------------------------------------------------------------- /al-business/al-sys/src/main/java/cn/com/axel/sys/req/ReqDict.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.sys.req; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | /** 9 | * @Description: 字典 10 | * @Author: axel 11 | * @date: 2023-01-03 12 | * @Version: V0.0.1 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | @Schema(description = "字典请求参数") 17 | public class ReqDict { 18 | @Schema(description = "字典名称") 19 | private String dictName; 20 | @Schema(description = "字典编码") 21 | private String dictCode; 22 | @Schema(description = "状态(0正常 1停用)") 23 | private Integer status; 24 | } 25 | -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/entity/QRCode.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.entity; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | 5 | import lombok.Data; 6 | 7 | import java.io.Serializable; 8 | 9 | /** 10 | * @author: axel 11 | * @date: 2020/3/5 14:38 12 | */ 13 | @Schema(description = "二维码属性") 14 | @Data 15 | public class QRCode implements Serializable { 16 | @Schema(description = "二维码值") 17 | private String code; 18 | @Schema(description = "扫码状态") 19 | private String status; 20 | @Schema(description = "账号") 21 | private String account; 22 | @Schema(description = "确认密钥") 23 | private String secret; 24 | } 25 | -------------------------------------------------------------------------------- /al-common/al-common-swagger/src/main/java/cn/com/axel/common/swagger/config/MyContact.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.swagger.config; 2 | 3 | import io.swagger.v3.oas.models.info.Contact; 4 | import lombok.Data; 5 | 6 | /** 7 | * @author: axel 8 | * @description: 联系方式 9 | * @date: 2022/8/18 23:22 10 | */ 11 | @Data 12 | public class MyContact { 13 | private String name; 14 | private String url; 15 | private String email; 16 | 17 | public Contact getContact() { 18 | Contact contact = new Contact(); 19 | contact.setName(name); 20 | contact.setUrl(url); 21 | contact.setEmail(email); 22 | return contact; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /al-scheduler/src/main/java/cn/com/axel/scheduler/service/impl/JobLogServiceImpl.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.scheduler.service.impl; 2 | 3 | import cn.com.axel.common.scheduler.api.entity.JobLog; 4 | import cn.com.axel.scheduler.mapper.JobLogMapper; 5 | import cn.com.axel.scheduler.service.JobLogService; 6 | import org.springframework.stereotype.Service; 7 | 8 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 9 | 10 | /** 11 | * @description: 任务日志 12 | * @author: axel 13 | * @date: 2023-02-14 14 | * @version: V0.0.1 15 | */ 16 | @Service 17 | public class JobLogServiceImpl extends ServiceImpl implements JobLogService { 18 | 19 | } 20 | -------------------------------------------------------------------------------- /al-business/al-demo/src/main/java/cn/com/axel/demo/service/DemoOrderService.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.demo.service; 2 | 3 | import cn.com.axel.common.core.web.Result; 4 | import cn.com.axel.demo.entity.DemoOrder; 5 | import com.baomidou.mybatisplus.extension.service.IService; 6 | 7 | /** 8 | * @description: 销售订单 9 | * @author: axel 10 | * @date: 2024-09-13 11 | * @version: V0.0.1 12 | */ 13 | public interface DemoOrderService extends IService { 14 | Result addOrder(DemoOrder demoOrder); 15 | Result editOrder(DemoOrder demoOrder); 16 | Result deleteOrder(String id); 17 | Result deleteBatchOrder(String ids); 18 | } 19 | -------------------------------------------------------------------------------- /al-common/al-common-code/src/main/java/cn/com/axel/common/code/entity/TableExpand.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.code.entity; 2 | 3 | import cn.com.axel.sys.api.entity.TableInfo; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | import lombok.experimental.Accessors; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * @description: 表拓展 13 | * @author: axel 14 | * @date: 2024/4/19 15 | */ 16 | @EqualsAndHashCode(callSuper = true) 17 | @Data 18 | @Accessors(chain = true) 19 | public class TableExpand extends TableInfo { 20 | @Schema(description = "列信息") 21 | private List fieldExpands; 22 | } 23 | -------------------------------------------------------------------------------- /al-common/al-common-oauth/src/main/java/cn/com/axel/common/oauth/entity/SimpleUserInfo.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.oauth.entity; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | 5 | import lombok.Data; 6 | 7 | /** 8 | * @description: 简单用户信息 9 | * @author: axel 10 | * @date: 2024/4/9 11 | */ 12 | @Data 13 | @Schema(description = "简单用户信息") 14 | public class SimpleUserInfo { 15 | @Schema(description = "唯一id") 16 | private String id; 17 | @Schema(description = "账号") 18 | private String account; 19 | @Schema(description = "昵称--用于显示") 20 | private String nickname; 21 | @Schema(description = "头像") 22 | private String headImgUrl; 23 | } 24 | -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/req/ReqSsoTenant.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.req; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | /** 9 | * @description: 租户信息表 10 | * @author: axel 11 | * @date: 2023-05-31 12 | * @version: V0.0.1 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | @Schema(description = "租户信息表请求参数") 17 | public class ReqSsoTenant { 18 | @Schema(description = "租户类型 0 个人 1 企业") 19 | private Integer tenantType; 20 | @Schema(description = "域名") 21 | private String domain; 22 | @Schema(description = "租户名称") 23 | private String name; 24 | } 25 | -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/validator/ClientIdExistValidator.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.validator; 2 | 3 | import cn.com.axel.common.core.web.Result; 4 | import cn.com.axel.oauth.entity.OAuthClient; 5 | import org.springframework.stereotype.Component; 6 | 7 | import jakarta.servlet.http.HttpServletRequest; 8 | 9 | /** 10 | * @author: axel 11 | * @date: 2020/2/13 13:58 12 | */ 13 | @Component 14 | public class ClientIdExistValidator extends AbstractClientValidator { 15 | 16 | @Override 17 | public Result validate(HttpServletRequest request, Result result) { 18 | return getOAuthClient(request, result); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /al-storage/src/main/java/cn/com/axel/storage/req/ReqSysFile.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.storage.req; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | /** 9 | * @description: 文件存储 10 | * @author: axel 11 | * @date: 2023-03-02 12 | * @version: V0.0.1 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | @Schema(description = "文件存储请求参数") 17 | public class ReqSysFile { 18 | @Schema(description = "文件名") 19 | private String fileName; 20 | @Schema(description = "文件类型") 21 | private String fileType; 22 | @Schema(description = "删除标签 1删除 0未删除") 23 | private String delFlag; 24 | } 25 | -------------------------------------------------------------------------------- /al-business/al-sys/src/main/java/cn/com/axel/sys/service/SysConfigService.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.sys.service; 2 | 3 | import cn.com.axel.common.core.web.Result; 4 | import cn.com.axel.sys.entity.SysConfig; 5 | import com.baomidou.mybatisplus.extension.service.IService; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @description: 界面配置 11 | * @author: axel 12 | * @date: 2023-03-07 13 | * @version: V0.0.1 14 | */ 15 | public interface SysConfigService extends IService { 16 | List querySysConfig(String userId); 17 | 18 | SysConfig querySysConfig(String userId, Integer type); 19 | 20 | Result saveSysConfig(SysConfig sysConfig); 21 | } 22 | -------------------------------------------------------------------------------- /al-common/al-common-cloud/src/main/java/cn/com/axel/common/cloud/config/FeignConfig.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.cloud.config; 2 | 3 | import feign.Contract; 4 | import org.springframework.cloud.openfeign.support.SpringMvcContract; 5 | import org.springframework.context.annotation.Bean; 6 | import org.springframework.context.annotation.Configuration; 7 | 8 | /** 9 | * @description: 定义FeignContract为springMvc方式 10 | * @author: axel 11 | * @date: 2024/4/18 12 | */ 13 | @Configuration 14 | public class FeignConfig { 15 | @Bean 16 | public Contract feignContract() { 17 | // return new feign.Contract.Default(); 18 | return new SpringMvcContract(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /al-business/al-lowcode/src/main/java/cn/com/axel/lowcode/req/ReqLowCodePage.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.lowcode.req; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * @description: 低代码页面 9 | * @author: axel 10 | * @date: 2024-09-13 11 | * @version: V0.0.1 12 | */ 13 | @Data 14 | @Accessors(chain = true) 15 | @Schema(description = "低代码页面请求参数") 16 | public class ReqLowCodePage { 17 | @Schema(description = "页面名称") 18 | private String pageName; 19 | @Schema(description = "页面状态") 20 | private Short pageStatus; 21 | @Schema(description = "页面标识") 22 | private Short pageSlug; 23 | } 24 | -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/config/properties/ShiroWhitesProperties.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.config.properties; 2 | 3 | import lombok.Data; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @description: shiro白名单地址配置,用于配置不需要拦截的 url 11 | * @author: zibo 12 | * @date: 2024/3/22 14:52 13 | */ 14 | @Data 15 | @Configuration 16 | @ConfigurationProperties(prefix = "security.ignore") 17 | public class ShiroWhitesProperties { 18 | 19 | /** 20 | * 不需要拦截的 url 列表 21 | */ 22 | private List whites; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /al-common/al-common-oauth/src/main/java/cn/com/axel/common/oauth/common/DataScopeValue.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.oauth.common; 2 | 3 | import cn.com.axel.common.oauth.scope.DataScopeHandle; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | /** 9 | * @description: 数据范围值 10 | * @author: axel 11 | * @date: 2024/4/29 12 | */ 13 | @Data 14 | @Accessors(chain = true) 15 | public class DataScopeValue { 16 | @Schema(name = "数据处理方式") 17 | private DataScopeHandle dataScopeHandle; 18 | @Schema(name = "字段名称") 19 | private String fieldName; 20 | @Schema(name = "字段值") 21 | private String[] values; 22 | } -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/credentials/QRCodeCredentialsMatcher.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.credentials; 2 | 3 | import org.apache.shiro.authc.AuthenticationInfo; 4 | import org.apache.shiro.authc.AuthenticationToken; 5 | import org.apache.shiro.authc.credential.SimpleCredentialsMatcher; 6 | 7 | /** 8 | * @author: axel 9 | * @date: 2020/2/25 16:49 10 | */ 11 | public class QRCodeCredentialsMatcher extends SimpleCredentialsMatcher { 12 | @Override 13 | public boolean doCredentialsMatch(AuthenticationToken authenticationToken, AuthenticationInfo authenticationInfo) { 14 | return super.doCredentialsMatch(authenticationToken, authenticationInfo); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /al-business/al-lowcode/src/main/java/cn/com/axel/lowcode/req/ReqLowCodePageCategory.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.lowcode.req; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * @description: 低代码页面分类 9 | * @author: axel 10 | * @date: 2024-09-13 11 | * @version: V0.0.1 12 | */ 13 | @Data 14 | @Accessors(chain = true) 15 | @Schema(description = "低代码页面分类请求参数") 16 | public class ReqLowCodePageCategory { 17 | @Schema(description = "分类名称") 18 | private String name; 19 | @Schema(description = "分类状态") 20 | private Short status; 21 | @Schema(description = "分类标识") 22 | private Short slug; 23 | } 24 | -------------------------------------------------------------------------------- /al-scheduler/src/main/java/cn/com/axel/scheduler/execute/DisallowConcurrentJobExecute.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.scheduler.execute; 2 | 3 | import cn.com.axel.common.scheduler.api.entity.JobLog; 4 | import cn.com.axel.scheduler.invoke.BaseInvoke; 5 | import org.quartz.DisallowConcurrentExecution; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @description: 禁止并发job执行 11 | * @author: axel 12 | * @date: 2023/2/7 10:45 13 | */ 14 | @DisallowConcurrentExecution 15 | public class DisallowConcurrentJobExecute extends AbstractJobExecute { 16 | @Override 17 | protected void execute(BaseInvoke baseJob, JobLog jobLog, List params) { 18 | baseJob.run(jobLog, params); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /al-business/al-demo/src/main/java/cn/com/axel/demo/config/OpenAiConfig.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.demo.config; 2 | 3 | import lombok.Data; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | import org.springframework.cloud.context.config.annotation.RefreshScope; 6 | import org.springframework.context.annotation.Configuration; 7 | 8 | /** 9 | * @description: openai配置 10 | * @author: axel 11 | * @date: 2023/2/9 14:46 12 | */ 13 | @Configuration 14 | @RefreshScope 15 | @ConfigurationProperties(prefix = "openai.chat") 16 | @Data 17 | public class OpenAiConfig { 18 | private String token = "***"; 19 | private String url = "https://api.openai.com/v1/completions"; 20 | } 21 | -------------------------------------------------------------------------------- /al-scheduler/src/main/java/cn/com/axel/scheduler/mapper/JobSubscribeMapper.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.scheduler.mapper; 2 | 3 | import cn.com.axel.scheduler.entity.JobSubscribe; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.apache.ibatis.annotations.Param; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @description: 任务订阅表 11 | * @author: axel 12 | * @date: 2023-02-20 13 | * @version: V0.0.1 14 | */ 15 | public interface JobSubscribeMapper extends BaseMapper { 16 | int insertJobSubscribes(@Param("jobSubscribeList") List jobSubscribeList); 17 | 18 | List getSubscribesByJobIds(@Param("jobIds") List jobIds); 19 | } 20 | -------------------------------------------------------------------------------- /al-business/al-demo/src/main/java/cn/com/axel/demo/service/impl/DemoDataScopeServiceImpl.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.demo.service.impl; 2 | 3 | import cn.com.axel.demo.entity.DemoDataScope; 4 | import cn.com.axel.demo.mapper.DemoDataScopeMapper; 5 | import cn.com.axel.demo.service.DemoDataScopeService; 6 | import org.springframework.stereotype.Service; 7 | 8 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 9 | 10 | /** 11 | * @description: demo_data_scope 12 | * @author: axel 13 | * @date: 2024-09-04 14 | * @version: V0.0.1 15 | */ 16 | @Service 17 | public class DemoDataScopeServiceImpl extends ServiceImpl implements DemoDataScopeService { 18 | 19 | } 20 | -------------------------------------------------------------------------------- /al-business/al-lowcode/src/main/java/cn/com/axel/lowcode/service/LowCodePageService.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.lowcode.service; 2 | 3 | import cn.com.axel.common.core.web.Result; 4 | import cn.com.axel.lowcode.entity.LowCodePage; 5 | import com.baomidou.mybatisplus.extension.service.IService; 6 | 7 | /** 8 | * @description: 低代码页面 9 | * @author: axel 10 | * @date: 2024-09-13 11 | * @version: V0.0.1 12 | */ 13 | public interface LowCodePageService extends IService { 14 | Result addPage(LowCodePage lowCodePage); 15 | Result editPage(LowCodePage lowCodePage); 16 | Result deletePage(String id); 17 | Result deleteBatchPage(String ids); 18 | } 19 | -------------------------------------------------------------------------------- /al-common/al-common-code/src/main/java/cn/com/axel/common/code/req/ReqSearch.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.code.req; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @description: 搜索请求 11 | * @author: axel 12 | * @date: 2023/5/9 19:31 13 | */ 14 | @Schema(description = "查询条件") 15 | @Data 16 | @Accessors(chain = true) 17 | public class ReqSearch { 18 | @Schema(description = "字段") 19 | private String field; 20 | @Schema(description = "查询条件") 21 | private String condition; 22 | @Schema(description = "组件 索引0组件名称1字典编码") 23 | private List component; 24 | } 25 | -------------------------------------------------------------------------------- /al-wechat/style/widget/weui-grid/weui-grid.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | .weui-grids{border-top:1rpx solid rgba(0,0,0,.1);border-left:1rpx solid rgba(0,0,0,.1);overflow:hidden}.weui-grid{position:relative;float:left;padding:20px 10px;width:33.33333333%;box-sizing:border-box;border-right:1rpx solid rgba(0,0,0,.1);border-bottom:1rpx solid rgba(0,0,0,.1)}.weui-grid_active{background-color:#ececec}.weui-grid__icon{display:block;width:28px;height:28px;margin:0 auto}.weui-grid__label{margin-top:5px;display:block;text-align:center;color:rgba(0,0,0,.9);font-size:14px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden} -------------------------------------------------------------------------------- /al-business/al-demo/src/main/java/cn/com/axel/demo/service/impl/DemoOrderDetailServiceImpl.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.demo.service.impl; 2 | 3 | import cn.com.axel.demo.entity.DemoOrderDetail; 4 | import cn.com.axel.demo.mapper.DemoOrderDetailMapper; 5 | import cn.com.axel.demo.service.DemoOrderDetailService; 6 | import org.springframework.stereotype.Service; 7 | 8 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 9 | 10 | /** 11 | * @description: 销售订单明细 12 | * @author: axel 13 | * @date: 2024-09-02 14 | * @version: V0.0.1 15 | */ 16 | @Service 17 | public class DemoOrderDetailServiceImpl extends ServiceImpl implements DemoOrderDetailService { 18 | 19 | } 20 | -------------------------------------------------------------------------------- /al-wechat/style/widget/weui-button/weui-btn_plain.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | .weui-btn_plain-primary{color:#07c160;border:1px solid #1aad19}.weui-btn_plain-primary:not(.weui-btn_plain-disabled):active{color:#06ae56;border-color:#179c16;background-color:rgba(0,0,0,.1)}.weui-btn_plain-primary:after{border-width:0}.weui-btn_plain-default{color:#353535;border:1px solid #353535}.weui-btn_plain-default:not(.weui-btn_plain-disabled):active{color:#323232;border-color:#323232;background-color:rgba(0,0,0,.1)}.weui-btn_plain-default:after{border-width:0}.weui-btn_plain-disabled{color:rgba(0,0,0,.2);border-color:rgba(0,0,0,.2)} -------------------------------------------------------------------------------- /al-business/al-sys/src/main/java/cn/com/axel/sys/req/ReqCodeBuild.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.sys.req; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | /** 9 | * @description: 代码构建 10 | * @author: axel 11 | * @date: 2023-04-11 12 | * @version: V0.0.1 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | @Schema(description = "代码构建请求参数") 17 | public class ReqCodeBuild { 18 | private String tableName; 19 | @Schema(description = "接口路径前缀 例如:/oauth2/user接口前缀为oauth2(不传会使用packageName,最底层包名 例如:cn.com.axel.sys包会使用sys)") 20 | private String apiPrefix; 21 | @Schema(description = "实体类名(不传会使用表名驼峰化)") 22 | private String entityName; 23 | } 24 | -------------------------------------------------------------------------------- /al-common/al-common-dblink/src/main/java/cn/com/axel/common/dblink/entity/QueryParam.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.dblink.entity; 2 | 3 | import cn.com.axel.common.core.enums.DataType; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | 6 | import lombok.Data; 7 | import lombok.experimental.Accessors; 8 | 9 | import java.io.Serializable; 10 | 11 | /** 12 | * @description: 查询参数 13 | * @author: axel 14 | * @date: 2023/12/26 15 | */ 16 | @Data 17 | @Schema(description = "查询参数") 18 | @Accessors(chain = true) 19 | public class QueryParam implements Serializable { 20 | @Schema(description = "参数值") 21 | private Object value; 22 | @Schema(description = "参数类型") 23 | private DataType type = DataType.STRING; 24 | } 25 | -------------------------------------------------------------------------------- /al-common/al-common-code/src/main/java/cn/com/axel/common/code/entity/SearchInfo.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.code.entity; 2 | 3 | import cn.com.axel.common.code.req.ReqSearch; 4 | import cn.com.axel.sys.api.entity.FieldInfo; 5 | import io.swagger.v3.oas.annotations.media.Schema; 6 | 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | import lombok.experimental.Accessors; 10 | 11 | /** 12 | * @description: 搜索条件 13 | * @author: axel 14 | * @date: 2023/5/9 22:14 15 | */ 16 | @EqualsAndHashCode(callSuper = true) 17 | @Data 18 | @Accessors(chain = true) 19 | @Schema(description = "搜索条件增加字段信息") 20 | public class SearchInfo extends ReqSearch { 21 | @Schema(description = "字段信息") 22 | private FieldInfo fieldInfo; 23 | } 24 | -------------------------------------------------------------------------------- /al-start/al-start-boot/src/main/resources/application-oauth.yml: -------------------------------------------------------------------------------- 1 | # 验证码配置 2 | security: 3 | # 验证码 4 | captcha: 5 | enabled: true 6 | type: math 7 | # 防止XSS攻击 8 | xss: 9 | enabled: true 10 | excludeUrls: 11 | spring: 12 | thymeleaf: 13 | cache: false 14 | redisCache: 15 | expire: 50400 16 | keyPrefix: sso_cache 17 | redisSession: 18 | expire: 50400 19 | keyPrefix: sso_session 20 | oauth2: 21 | expire: 22 | code: 180 23 | token: 21600 24 | refreshToken: 604800 25 | login: 26 | mutex: false 27 | user: 28 | autoCreate: false 29 | token: 30 | sm4key: 143be1ae6ee10b048f7e441cec2a9803 31 | wechat: 32 | miniapp: 33 | appId: wx*************4a3 34 | secret: a6***************efa227 -------------------------------------------------------------------------------- /al-api/al-oauth-api/src/main/java/cn/com/axel/common/oauth/api/entity/UserRole.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.oauth.api.entity; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | /** 9 | * @author: axel 10 | * @description: 用户角色 11 | * @date: 2022/12/1 20:55 12 | */ 13 | @Data 14 | @Schema(description = "用户角色属性") 15 | @Accessors(chain = true) 16 | public class UserRole { 17 | @Schema(description = "角色ID") 18 | private String id; 19 | @Schema(description = "角色名称") 20 | private String roleName; 21 | @Schema(description = "角色编码") 22 | private String roleCode; 23 | @Schema(description = "角色来源 0用户 1组织") 24 | private int source; 25 | } 26 | -------------------------------------------------------------------------------- /al-business/al-demo/src/main/java/cn/com/axel/demo/req/ReqDemoOrder.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.demo.req; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * @description: 销售订单 9 | * @author: axel 10 | * @date: 2024-09-13 11 | * @version: V0.0.1 12 | */ 13 | @Data 14 | @Accessors(chain = true) 15 | @Schema(description = "销售订单请求参数") 16 | public class ReqDemoOrder { 17 | @Schema(description = "姓名") 18 | private String userName; 19 | @Schema(description = "订单状态") 20 | private Short orderStatus; 21 | @Schema(description = "支付类型") 22 | private Short payType; 23 | @Schema(description = "配送方式") 24 | private Short deliveryType; 25 | } 26 | -------------------------------------------------------------------------------- /al-common/al-common-core/src/main/java/cn/com/axel/common/core/annotation/GlobalException.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.core.annotation; 2 | 3 | import cn.com.axel.common.core.advice.ExceptionHandlerAdvice; 4 | import org.springframework.context.annotation.Import; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * @author: axel 13 | * @description: 全局异常处理注解 14 | * @date: 2021/12/13 18:32 15 | */ 16 | @Target({ElementType.TYPE}) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Import({ExceptionHandlerAdvice.class}) 19 | public @interface GlobalException { 20 | String value() default ""; 21 | } 22 | -------------------------------------------------------------------------------- /al-common/al-common-dataset/src/main/java/cn/com/axel/common/dataset/datatable/MetaHeaderDataTable.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.dataset.datatable; 2 | 3 | import cn.com.axel.common.core.web.PageResult; 4 | import lombok.Data; 5 | 6 | /** 7 | * @description: 带头信息元数据表 8 | * @author: axel 9 | * @date: 2023/4/5 0:01 10 | */ 11 | @Data 12 | public class MetaHeaderDataTable { 13 | /** 14 | * 表格 15 | */ 16 | private PageResult table; 17 | /** 18 | * 头信息 19 | */ 20 | private MetaDataHeaders headers; 21 | 22 | public MetaHeaderDataTable(MetaDataTable metaDataTable) { 23 | this.table = new PageResult<>(metaDataTable); 24 | this.headers = metaDataTable.getColHeaders(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /al-common/al-common-dblink/src/main/java/cn/com/axel/common/dblink/dbpool/PoolWrapper.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.dblink.dbpool; 2 | 3 | import cn.com.axel.common.dblink.entity.DataSourceOptions; 4 | 5 | import javax.sql.DataSource; 6 | import java.sql.Connection; 7 | import java.sql.SQLException; 8 | 9 | /** 10 | * @description: 连接池包装类 11 | * @author: axel 12 | * @date: 2023/3/16 13 | */ 14 | public interface PoolWrapper { 15 | PoolWrapper wrap(DataSourceOptions linkOption); 16 | 17 | void close(); 18 | 19 | DataSource getDataSource(); 20 | 21 | Connection getConnection() throws SQLException; 22 | 23 | Connection getConnection(long maxWaitMillis) throws SQLException; 24 | 25 | boolean isClosed(); 26 | } 27 | -------------------------------------------------------------------------------- /al-common/al-common-oauth/src/main/java/cn/com/axel/common/oauth/common/LoginMutexEntity.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.oauth.common; 2 | 3 | import cn.com.axel.common.core.enums.DeviceType; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | /** 9 | * @description: 登录互斥属性 10 | * @author: axel 11 | * @date: 2023/5/7 1:14 12 | */ 13 | @Data 14 | @Accessors(chain = true) 15 | public class LoginMutexEntity { 16 | @Schema(description = "设备类型") 17 | private DeviceType deviceType; 18 | @Schema(description = "设备ID web端为sessionid app端为认证app的mac地址 微信为openid") 19 | private String deviceId; 20 | @Schema(description = "用户id") 21 | private String userId; 22 | } 23 | -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/cache/redis/RedisCacheManager.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.cache.redis; 2 | 3 | import org.apache.shiro.cache.Cache; 4 | import org.apache.shiro.cache.CacheException; 5 | import org.apache.shiro.cache.CacheManager; 6 | import org.springframework.stereotype.Component; 7 | 8 | import jakarta.annotation.Resource; 9 | 10 | /** 11 | * @author: axel 12 | * @date: 2020/2/11 17:53 13 | */ 14 | @Component 15 | public class RedisCacheManager implements CacheManager { 16 | 17 | @Resource 18 | private RedisCache cache; 19 | 20 | @Override 21 | @SuppressWarnings("unchecked") 22 | public Cache getCache(String name) throws CacheException { 23 | return cache; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /al-common/al-common-core/src/main/java/cn/com/axel/common/core/enums/HttpType.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.core.enums; 2 | 3 | import lombok.Getter; 4 | 5 | /** 6 | * @description: http类型 7 | * @author: axel 8 | * @date: 2023/2/8 16:15 9 | */ 10 | @Getter 11 | public enum HttpType { 12 | HTTP(0), 13 | HTTPS(1); 14 | private final int value; 15 | 16 | HttpType(int value) { 17 | this.value = value; 18 | } 19 | 20 | @Override 21 | public String toString() { 22 | return String.valueOf(value); 23 | } 24 | 25 | public static HttpType getHttpType(String url) { 26 | if (url.startsWith("https:")) { 27 | return HttpType.HTTPS; 28 | } 29 | return HttpType.HTTP; 30 | } 31 | } -------------------------------------------------------------------------------- /al-test/src/main/resources/bootstrap.yml: -------------------------------------------------------------------------------- 1 | axel: 2 | version: 1.3.1 3 | # Tomcat 4 | server: 5 | port: 9219 6 | 7 | # Spring 8 | spring: 9 | application: 10 | # 应用名称 11 | name: al-test 12 | profiles: 13 | # 环境配置 14 | active: dev 15 | cloud: 16 | nacos: 17 | username: @nacos.username@ 18 | password: @nacos.password@ 19 | discovery: 20 | # 服务注册地址 21 | server-addr: @nacos.server-addr@ 22 | config: 23 | # 配置中心地址 24 | server-addr: @nacos.server-addr@ 25 | # 配置文件格式 26 | file-extension: yml 27 | # 共享配置 28 | shared-configs[0]: 29 | data-id: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} 30 | refresh: true -------------------------------------------------------------------------------- /al-wechat/style/widget/weui-cell/weui-access.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | .weui-cell_access{color:inherit;-webkit-tap-highlight-color:rgba(0,0,0,0)}.weui-cell__ft_in-access{padding-right:16px;position:relative}.weui-cell__ft_in-access:after{content:" ";display:inline-block;height:8px;width:8px;border-width:2px 2px 0 0;border-color:#b2b2b2;border-style:solid;-webkit-transform:matrix(.71,.71,-.71,.71,0,0);transform:matrix(.71,.71,-.71,.71,0,0);position:relative;top:-2px;position:absolute;top:50%;margin-top:-5px;right:0}.weui-cell_link{color:#576b95;font-size:17px}.weui-cell_link:active{background-color:#ececec}.weui-cell_link:first-child:before{display:block} -------------------------------------------------------------------------------- /al-common/al-common-app/src/main/java/cn/com/axel/common/app/annotation/AutoApp.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.app.annotation; 2 | 3 | import org.springframework.boot.autoconfigure.SpringBootApplication; 4 | import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * @description: 轻量级应用自动注解(不访问数据库应用) 13 | * @author: axel 14 | * @date: 2023/3/1 17:21 15 | */ 16 | @Target(ElementType.TYPE) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) 19 | public @interface AutoApp { 20 | } 21 | -------------------------------------------------------------------------------- /al-common/al-common-code/src/main/resources/template/src/main/java/${packageName}/service/impl/${entityName}ServiceImpl.java.ftl: -------------------------------------------------------------------------------- 1 | package ${packageName}.service.impl; 2 | 3 | import ${packageName}.entity.${entityName}; 4 | import ${packageName}.mapper.${entityName}Mapper; 5 | import ${packageName}.service.${entityName}Service; 6 | import org.springframework.stereotype.Service; 7 | 8 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 9 | 10 | /** 11 | * @description: ${tableInfo.tableComment} 12 | * @author: axel 13 | * @date: ${.now?string["yyyy-MM-dd"]} 14 | * @version: V0.0.1 15 | */ 16 | @Service 17 | public class ${entityName}ServiceImpl extends ServiceImpl<${entityName}Mapper, ${entityName}> implements ${entityName}Service { 18 | 19 | } 20 | -------------------------------------------------------------------------------- /al-gateway/src/main/java/cn/com/axel/gateway/config/properties/IgnoreWhiteProperties.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.gateway.config.properties; 2 | 3 | import lombok.Data; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | import org.springframework.cloud.context.config.annotation.RefreshScope; 6 | import org.springframework.context.annotation.Configuration; 7 | 8 | import java.util.ArrayList; 9 | import java.util.List; 10 | 11 | /** 12 | * @author: axel 13 | * @description: 忽略地址白名单配置 14 | * @date: 2021/11/18 18:00 15 | */ 16 | @Configuration 17 | @RefreshScope 18 | @ConfigurationProperties(prefix = "security.ignore") 19 | @Data 20 | public class IgnoreWhiteProperties { 21 | private List whites = new ArrayList<>(); 22 | } 23 | -------------------------------------------------------------------------------- /al-business/al-demo/src/main/java/cn/com/axel/demo/req/ReqDemoImportExport.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.demo.req; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * @description: 导入导出Demo 9 | * @author: axel 10 | * @date: 2024-09-02 11 | * @version: V0.0.1 12 | */ 13 | @Data 14 | @Accessors(chain = true) 15 | @Schema(description = "导入导出Demo请求参数") 16 | public class ReqDemoImportExport { 17 | @Schema(description = "姓名") 18 | private String userName; 19 | @Schema(description = "订单状态") 20 | private Short orderStatus; 21 | @Schema(description = "支付类型") 22 | private Short payType; 23 | @Schema(description = "配送方式") 24 | private Short deliveryType; 25 | } 26 | -------------------------------------------------------------------------------- /al-monitor/src/main/resources/bootstrap.yml: -------------------------------------------------------------------------------- 1 | axel: 2 | version: 1.3.1 3 | # Tomcat 4 | server: 5 | port: 9223 6 | 7 | # Spring 8 | spring: 9 | application: 10 | # 应用名称 11 | name: al-monitor 12 | profiles: 13 | # 环境配置 14 | active: dev 15 | cloud: 16 | nacos: 17 | username: @nacos.username@ 18 | password: @nacos.password@ 19 | discovery: 20 | # 服务注册地址 21 | server-addr: @nacos.server-addr@ 22 | config: 23 | # 配置中心地址 24 | server-addr: @nacos.server-addr@ 25 | # 配置文件格式 26 | file-extension: yml 27 | # 共享配置 28 | shared-configs[0]: 29 | data-id: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} 30 | refresh: true 31 | -------------------------------------------------------------------------------- /al-api/al-sys-api/src/main/java/cn/com/axel/sys/api/req/ReqDbConnect.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.sys.api.req; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | /** 9 | * @description: 数据库连接 10 | * @author: axel 11 | * @date: 2023-03-13 12 | * @version: V0.0.1 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | @Schema(description = "数据库连接请求参数") 17 | public class ReqDbConnect { 18 | @Schema(description = "连接名") 19 | private String dbTitle; 20 | @Schema(description = "数据库类型(0 mysql 1 oracle 2 pgsql)") 21 | private Integer dbType; 22 | @Schema(description = "主机") 23 | private String host; 24 | @Schema(description = "数据库名") 25 | private String dbName; 26 | } 27 | -------------------------------------------------------------------------------- /al-common/al-common-captcha/src/main/java/cn/com/axel/common/captcha/service/CheckCodeService.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.captcha.service; 2 | 3 | import cn.com.axel.common.core.exception.CaptchaException; 4 | import cn.com.axel.common.core.web.Result; 5 | 6 | import java.util.Map; 7 | 8 | /** 9 | * @author: axel 10 | * @date: 2021/8/12 11:06 11 | */ 12 | public interface CheckCodeService { 13 | 14 | /** 15 | * 创建验证码 16 | * 17 | * @return Map 18 | */ 19 | Result> createCaptcha(); 20 | 21 | /** 22 | * 校验验证码 23 | * 24 | * @param key key 25 | * @param value 值 26 | * @throws CaptchaException 异常 27 | */ 28 | void checkCaptcha(String key, String value) throws CaptchaException; 29 | } 30 | -------------------------------------------------------------------------------- /al-start/al-start-oauth/src/main/resources/bootstrap.yml: -------------------------------------------------------------------------------- 1 | axel: 2 | version: 1.3.1 3 | # Tomcat 4 | server: 5 | port: 9218 6 | 7 | # Spring 8 | spring: 9 | application: 10 | # 应用名称 11 | name: al-oauth 12 | profiles: 13 | # 环境配置 14 | active: dev 15 | cloud: 16 | nacos: 17 | username: @nacos.username@ 18 | password: @nacos.password@ 19 | discovery: 20 | # 服务注册地址 21 | server-addr: @nacos.server-addr@ 22 | config: 23 | # 配置中心地址 24 | server-addr: @nacos.server-addr@ 25 | # 配置文件格式 26 | file-extension: yml 27 | # 共享配置 28 | shared-configs[0]: 29 | data-id: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} 30 | refresh: true -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/credentials/WxCredentialsMatcher.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.credentials; 2 | 3 | import cn.com.axel.oauth.common.MyUsernamePasswordToken; 4 | import org.apache.shiro.authc.AuthenticationInfo; 5 | import org.apache.shiro.authc.AuthenticationToken; 6 | 7 | /** 8 | * @author: axel 9 | * @date: 2021/10/26 17:00 10 | */ 11 | public class WxCredentialsMatcher extends AutoUserCredentialsMatcher { 12 | @Override 13 | public boolean doCredentialsMatch(AuthenticationToken authenticationToken, AuthenticationInfo authenticationInfo) { 14 | MyUsernamePasswordToken myToken = (MyUsernamePasswordToken) authenticationToken; 15 | insertNewUser(myToken.isNew(), myToken.getUserInfo()); 16 | return true; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /al-start/al-start-boot/src/main/java/cn/com/axel/boot/config/GatewayProperties.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.boot.config; 2 | 3 | import lombok.Data; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | import org.springframework.stereotype.Component; 6 | 7 | import java.io.Serializable; 8 | import java.util.List; 9 | 10 | /** 11 | * @description: 网关属性(路径对应微服务路由路径) 12 | * @author: axel 13 | * @date: 2024/2/20 14 | */ 15 | @Data 16 | @Component 17 | @ConfigurationProperties(prefix = "gateway") 18 | public class GatewayProperties { 19 | private List routes; 20 | 21 | @Data 22 | public static class GatewayInfo implements Serializable { 23 | private String path; 24 | private String packageName; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /al-start/al-start-demo/src/main/resources/bootstrap.yml: -------------------------------------------------------------------------------- 1 | axel: 2 | version: 1.3.1 3 | # Tomcat 4 | server: 5 | port: 9225 6 | 7 | # Spring 8 | spring: 9 | application: 10 | # 应用名称 11 | name: al-demo 12 | profiles: 13 | # 环境配置 14 | active: dev 15 | cloud: 16 | nacos: 17 | username: @nacos.username@ 18 | password: @nacos.password@ 19 | discovery: 20 | # 服务注册地址 21 | server-addr: @nacos.server-addr@ 22 | config: 23 | # 配置中心地址 24 | server-addr: @nacos.server-addr@ 25 | # 配置文件格式 26 | file-extension: yml 27 | # 共享配置 28 | shared-configs[0]: 29 | data-id: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} 30 | refresh: true 31 | -------------------------------------------------------------------------------- /al-start/al-start-sys/src/main/resources/bootstrap.yml: -------------------------------------------------------------------------------- 1 | axel: 2 | version: 1.3.1 3 | # Tomcat 4 | server: 5 | port: 9221 6 | 7 | # Spring 8 | spring: 9 | application: 10 | # 应用名称 11 | name: al-sys 12 | profiles: 13 | # 环境配置 14 | active: dev 15 | cloud: 16 | nacos: 17 | username: @nacos.username@ 18 | password: @nacos.password@ 19 | discovery: 20 | # 服务注册地址 21 | server-addr: @nacos.server-addr@ 22 | config: 23 | # 配置中心地址 24 | server-addr: @nacos.server-addr@ 25 | # 配置文件格式 26 | file-extension: yml 27 | # 共享配置 28 | shared-configs[0]: 29 | data-id: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} 30 | refresh: true 31 | -------------------------------------------------------------------------------- /al-test/src/main/java/cn/com/axel/test/entity/TestParam.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.test.entity; 2 | 3 | import cn.com.axel.common.oauth.api.entity.UserInfo; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | 6 | import lombok.Data; 7 | 8 | import java.util.List; 9 | import java.util.Map; 10 | 11 | /** 12 | * @author: axel 13 | * @description: 测试参数 14 | * @date: 2022/9/7 11:10 15 | */ 16 | @Data 17 | @Schema(description = "测试参数") 18 | public class TestParam { 19 | @Schema(description = "用户信息") 20 | private UserInfo userInfo; 21 | @Schema(description = "字符参数") 22 | private String string1; 23 | @Schema(description = "map参数") 24 | private Map map1; 25 | @Schema(description = "list参数") 26 | private List list1; 27 | } 28 | -------------------------------------------------------------------------------- /al-business/al-consume/src/main/resources/bootstrap.yml: -------------------------------------------------------------------------------- 1 | axel: 2 | version: 1.3.1 3 | # Tomcat 4 | server: 5 | port: 9226 6 | 7 | # Spring 8 | spring: 9 | application: 10 | # 应用名称 11 | name: al-consume 12 | profiles: 13 | # 环境配置 14 | active: dev 15 | cloud: 16 | nacos: 17 | username: @nacos.username@ 18 | password: @nacos.password@ 19 | discovery: 20 | # 服务注册地址 21 | server-addr: @nacos.server-addr@ 22 | config: 23 | # 配置中心地址 24 | server-addr: @nacos.server-addr@ 25 | # 配置文件格式 26 | file-extension: yml 27 | # 共享配置 28 | shared-configs[0]: 29 | data-id: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} 30 | refresh: true 31 | -------------------------------------------------------------------------------- /al-start/al-start-lowcode/src/main/resources/bootstrap.yml: -------------------------------------------------------------------------------- 1 | axel: 2 | version: 1.0.0 3 | # Tomcat 4 | server: 5 | port: 9227 6 | 7 | # Spring 8 | spring: 9 | application: 10 | # 应用名称 11 | name: al-lowcode 12 | profiles: 13 | # 环境配置 14 | active: dev 15 | cloud: 16 | nacos: 17 | username: @nacos.username@ 18 | password: @nacos.password@ 19 | discovery: 20 | # 服务注册地址 21 | server-addr: @nacos.server-addr@ 22 | config: 23 | # 配置中心地址 24 | server-addr: @nacos.server-addr@ 25 | # 配置文件格式 26 | file-extension: yml 27 | # 共享配置 28 | shared-configs[0]: 29 | data-id: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} 30 | refresh: true 31 | -------------------------------------------------------------------------------- /al-start/al-start-storage/src/main/resources/bootstrap.yml: -------------------------------------------------------------------------------- 1 | axel: 2 | version: 1.3.1 3 | # Tomcat 4 | server: 5 | port: 9222 6 | 7 | # Spring 8 | spring: 9 | application: 10 | # 应用名称 11 | name: al-storage 12 | profiles: 13 | # 环境配置 14 | active: dev 15 | cloud: 16 | nacos: 17 | username: @nacos.username@ 18 | password: @nacos.password@ 19 | discovery: 20 | # 服务注册地址 21 | server-addr: @nacos.server-addr@ 22 | config: 23 | # 配置中心地址 24 | server-addr: @nacos.server-addr@ 25 | # 配置文件格式 26 | file-extension: yml 27 | # 共享配置 28 | shared-configs[0]: 29 | data-id: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} 30 | refresh: true 31 | -------------------------------------------------------------------------------- /al-business/al-sys/src/main/java/cn/com/axel/sys/entity/DBTreeNode.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.sys.entity; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | import java.io.Serializable; 9 | 10 | /** 11 | * @description: 数据库树节点 12 | * @author: axel 13 | * @date: 2023/4/12 20:10 14 | */ 15 | @Data 16 | @Accessors(chain = true) 17 | @Schema(description = "数据库树节点") 18 | public class DBTreeNode implements Serializable { 19 | @Schema(description = "编码") 20 | private String code; 21 | @Schema(description = "父编码") 22 | private String parentCode; 23 | @Schema(description = "标签") 24 | private String label; 25 | @Schema(description = "节点类型 0 数据库 1表") 26 | private int type; 27 | } 28 | -------------------------------------------------------------------------------- /al-start/al-start-scheduler/src/main/resources/bootstrap.yml: -------------------------------------------------------------------------------- 1 | axel: 2 | version: 1.3.1 3 | # Tomcat 4 | server: 5 | port: 9224 6 | 7 | # Spring 8 | spring: 9 | application: 10 | # 应用名称 11 | name: al-scheduler 12 | profiles: 13 | # 环境配置 14 | active: dev 15 | cloud: 16 | nacos: 17 | username: @nacos.username@ 18 | password: @nacos.password@ 19 | discovery: 20 | # 服务注册地址 21 | server-addr: @nacos.server-addr@ 22 | config: 23 | # 配置中心地址 24 | server-addr: @nacos.server-addr@ 25 | # 配置文件格式 26 | file-extension: yml 27 | # 共享配置 28 | shared-configs[0]: 29 | data-id: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} 30 | refresh: true 31 | -------------------------------------------------------------------------------- /al-wechat/style/widget/weui-button/weui-btn_cell.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | .weui-btn_cell{position:relative;display:block;margin-left:auto;margin-right:auto;box-sizing:border-box;font-weight:700;font-size:17px;text-align:center;text-decoration:none;color:#fff;line-height:1.41176471;padding:16px;-webkit-tap-highlight-color:rgba(0,0,0,0);overflow:hidden;background-color:#fff}.weui-btn_cell+.weui-btn_cell{margin-top:16px}.weui-btn_cell:active{background-color:#ececec}.weui-btn_cell__icon{display:inline-block;vertical-align:middle;width:24px;height:24px;margin:-.2em .34em 0 0}.weui-btn_cell-default{color:rgba(0,0,0,.9)}.weui-btn_cell-primary{color:#576b95}.weui-btn_cell-warn{color:#fa5151} -------------------------------------------------------------------------------- /al-wechat/style/widget/weui-tips/weui-loadmore.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | .weui-loadmore{width:65%;margin:1.5em auto;line-height:1.6em;font-size:14px;text-align:center}.weui-loadmore__tips{display:inline-block;vertical-align:middle}.weui-loadmore_line{border-top:1px solid rgba(0,0,0,.1);margin-top:2.4em}.weui-loadmore__tips_in-line{position:relative;top:-.9em;padding:0 .55em;background-color:#fff;color:rgba(0,0,0,.5)}.weui-loadmore__tips_in-dot{position:relative;padding:0 .16em;width:4px;height:1.6em}.weui-loadmore__tips_in-dot:before{content:" ";position:absolute;top:50%;left:50%;margin-top:-1px;margin-left:-2px;width:4px;height:4px;border-radius:50%;background-color:rgba(0,0,0,.1)} -------------------------------------------------------------------------------- /al-gateway/src/main/java/cn/com/axel/gateway/common/GatewayUtils.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.gateway.common; 2 | 3 | import cn.com.axel.common.core.utils.StringUtils; 4 | import org.springframework.http.server.reactive.ServerHttpRequest; 5 | 6 | /** 7 | * @description: 网关通用类 8 | * @author: axel 9 | * @date: 2023/1/12 17:41 10 | */ 11 | public class GatewayUtils { 12 | public static void addHeader(ServerHttpRequest.Builder mutate, String name, String value) { 13 | if (StringUtils.isEmpty(value)) { 14 | return; 15 | } 16 | mutate.header(name, value); 17 | } 18 | 19 | public static void removeHeader(ServerHttpRequest.Builder mutate, String name) { 20 | mutate.headers(httpHeaders -> httpHeaders.remove(name)).build(); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /al-api/al-sys-api/src/main/java/cn/com/axel/sys/api/fallback/RemoteLogFallback.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.sys.api.fallback; 2 | 3 | 4 | import cn.com.axel.common.core.web.Result; 5 | import cn.com.axel.sys.api.remote.RemoteLogService; 6 | import lombok.extern.slf4j.Slf4j; 7 | import org.springframework.cloud.openfeign.FallbackFactory; 8 | import org.springframework.stereotype.Component; 9 | 10 | /** 11 | * @author: axel 12 | * @description: 日志远程调用异常回调 13 | * @date: 2022/9/4 11:47 14 | */ 15 | @Slf4j 16 | @Component 17 | public class RemoteLogFallback implements FallbackFactory { 18 | @Override 19 | public RemoteLogService create(Throwable cause) { 20 | log.error("错误:日志服务调用异常", cause); 21 | return (origin, sysLog) -> Result.fail("错误:新增日志失败"); 22 | } 23 | } -------------------------------------------------------------------------------- /al-common/al-common-web/src/main/java/cn/com/axel/common/web/annotation/AutoWeb.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.web.annotation; 2 | 3 | import cn.com.axel.common.swagger.annotation.AutoSwagger; 4 | import org.mybatis.spring.annotation.MapperScan; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | 7 | import java.lang.annotation.ElementType; 8 | import java.lang.annotation.Retention; 9 | import java.lang.annotation.RetentionPolicy; 10 | import java.lang.annotation.Target; 11 | 12 | /** 13 | * @author: axel 14 | * @description: web自动注解 15 | * @date: 2022/9/20 10:57 16 | */ 17 | @Target(ElementType.TYPE) 18 | @Retention(RetentionPolicy.RUNTIME) 19 | @SpringBootApplication 20 | @AutoSwagger 21 | @MapperScan({"cn.com.axel.**.mapper"}) 22 | public @interface AutoWeb { 23 | } 24 | -------------------------------------------------------------------------------- /al-wechat/style/widget/weui-panel/weui-panel.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | .weui-panel{background-color:#fff;margin-top:10px;position:relative;overflow:hidden}.weui-panel:first-child{margin-top:0}.weui-panel:before{top:0;border-top:1rpx solid rgba(0,0,0,.1)}.weui-panel:after,.weui-panel:before{content:" ";position:absolute;left:0;right:0;height:1px;color:rgba(0,0,0,.1)}.weui-panel:after{bottom:0;border-bottom:1rpx solid rgba(0,0,0,.1)}.weui-panel__hd{padding:16px 16px 13px;color:rgba(0,0,0,.9);font-size:15px;font-weight:700;position:relative}.weui-panel__hd:after{content:" ";position:absolute;left:0;bottom:0;right:0;height:1px;border-bottom:1rpx solid rgba(0,0,0,.1);color:rgba(0,0,0,.1);left:16px} -------------------------------------------------------------------------------- /al-common/al-common-core/src/main/java/cn/com/axel/common/core/constants/ServiceConstants.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.core.constants; 2 | 3 | /** 4 | * @author: axel 5 | * @description: RPC服务常量 6 | * @date: 2021/12/1 17:14 7 | */ 8 | public class ServiceConstants { 9 | //单实例类型服务 10 | public static final String SERVER_BOOT = "boot"; 11 | public static final String OAUTH_SERVICE = "al-oauth"; 12 | public static final String CODE_SERVICE = "al-code"; 13 | public static final String SYS_SERVICE = "al-sys"; 14 | public static final String SCHEDULER_SERVICE = "al-scheduler"; 15 | public static final String STORAGE_SERVICE = "al-storage"; 16 | 17 | public static boolean isBoot(String type) { 18 | return ServiceConstants.SERVER_BOOT.equals(type); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /al-api/al-sys-api/src/main/java/cn/com/axel/sys/api/fallback/RemoteDictFallback.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.sys.api.fallback; 2 | 3 | import cn.com.axel.common.core.web.Result; 4 | import cn.com.axel.sys.api.remote.RemoteDictService; 5 | import lombok.extern.slf4j.Slf4j; 6 | import org.springframework.cloud.openfeign.FallbackFactory; 7 | import org.springframework.stereotype.Component; 8 | 9 | /** 10 | * @description: 远程字典失败处理 11 | * @author: axel 12 | * @date: 2023/5/18 18:16 13 | */ 14 | @Slf4j 15 | @Component 16 | public class RemoteDictFallback implements FallbackFactory { 17 | 18 | @Override 19 | public RemoteDictService create(Throwable cause) { 20 | log.error("错误:字典调用异常", cause); 21 | return (origin, dictCode) -> Result.fail("错误:查询字典数据出错"); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/config/properties/WeChatProperties.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.config.properties; 2 | 3 | import lombok.Data; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | import org.springframework.cloud.context.config.annotation.RefreshScope; 6 | import org.springframework.context.annotation.Configuration; 7 | 8 | /** 9 | * @author: axel 10 | * @description: 微信基本属性 11 | * @date: 2021/12/14 9:15 12 | */ 13 | @Data 14 | @Configuration 15 | @ConfigurationProperties(prefix = "wechat.miniapp") 16 | @RefreshScope 17 | public class WeChatProperties { 18 | /** 19 | * 设置微信小程序的appid 20 | */ 21 | private String appId = "****"; 22 | /** 23 | * 设置微信小程序的Secret 24 | */ 25 | private String secret = "****"; 26 | 27 | } 28 | -------------------------------------------------------------------------------- /al-start/al-start-boot/src/main/java/cn/com/axel/AlNoCodeStart.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel; 2 | 3 | import cn.com.axel.common.web.annotation.AutoWeb; 4 | import lombok.extern.slf4j.Slf4j; 5 | import org.springframework.boot.SpringApplication; 6 | 7 | /** 8 | * @description: Axel低代码单应用启动类 9 | * @author: axel 10 | * @date: 2024/1/26 11 | */ 12 | @Slf4j 13 | @AutoWeb 14 | public class AlNoCodeStart { 15 | public static void main(String[] args) { 16 | SpringApplication.run(AlNoCodeStart.class, args); 17 | log.info(""" 18 | 19 | \t---------------------------------------------------------- 20 | \t\ 21 | 22 | \t--------------------Axel低代码平台启动成功----------------------- 23 | \t"""); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/config/OauthMvcConfig.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.config; 2 | 3 | import org.springframework.context.annotation.Configuration; 4 | import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; 5 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 6 | 7 | /** 8 | * @description: 资源配置 9 | * @author: axel 10 | * @date: 2023/1/31 11:42 11 | */ 12 | @Configuration 13 | public class OauthMvcConfig implements WebMvcConfigurer { 14 | @Override 15 | public void addResourceHandlers(ResourceHandlerRegistry registry) { 16 | //微服务和单体服务分别走static/** 和 oauth2/static/** 17 | registry.addResourceHandler("oauth2/static/**", "static/**"). 18 | addResourceLocations("classpath:/static/"); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /al-test/src/main/java/cn/com/axel/test/AlTestApplication.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.test; 2 | 3 | import cn.com.axel.common.app.annotation.AutoApp; 4 | import lombok.extern.slf4j.Slf4j; 5 | import org.springframework.boot.SpringApplication; 6 | 7 | /** 8 | * @author: axel 9 | * @description: Axel测试中心启动 10 | * @date: 2021/12/3 17:22 11 | */ 12 | @Slf4j 13 | @AutoApp 14 | public class AlTestApplication { 15 | public static void main(String[] args) { 16 | SpringApplication.run(AlTestApplication.class, args); 17 | log.info(""" 18 | 19 | \t---------------------------------------------------------- 20 | \t\ 21 | 22 | \t--------------------Axel测试中心启动成功----------------------- 23 | \t"""); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/req/ReqSsoRole.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.req; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | /** 9 | * @Description: 角色信息表 10 | * @Author: axel 11 | * @date: 2022-09-20 12 | * @Version: V0.0.1 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | @Schema(description = "角色信息表请求参数") 17 | public class ReqSsoRole { 18 | @Schema(description = "租户ID") 19 | private String tenantId; 20 | @Schema(description = "组织ID") 21 | private String orgIds; 22 | @Schema(description = "角色名称") 23 | private String roleName; 24 | @Schema(description = "角色编码") 25 | private String roleCode; 26 | @Schema(description = "状态(0正常 1停用)") 27 | private Integer status; 28 | } 29 | -------------------------------------------------------------------------------- /al-start/al-start-demo/src/main/java/cn/com/axel/demo/AlDemoApplication.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.demo; 2 | 3 | import cn.com.axel.common.cloud.annotation.AutoCloud; 4 | import lombok.extern.slf4j.Slf4j; 5 | import org.springframework.boot.SpringApplication; 6 | 7 | /** 8 | * @author: axel 9 | * @description: 其他web业务服务参考类 10 | * @date: 2022/12/16 10:01 11 | */ 12 | @Slf4j 13 | @AutoCloud 14 | public class AlDemoApplication { 15 | public static void main(String[] args) { 16 | SpringApplication.run(AlDemoApplication.class, args); 17 | log.info(""" 18 | 19 | \t------------------------------------------------------------ 20 | \t 21 | \t--------------------Axel样例服务启动成功----------------------- 22 | \t"""); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /al-business/al-lowcode/src/main/java/cn/com/axel/lowcode/service/LowCodePageCategoryService.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.lowcode.service; 2 | 3 | import cn.com.axel.common.core.web.Result; 4 | import cn.com.axel.lowcode.entity.LowCodePageCategory; 5 | import com.baomidou.mybatisplus.extension.service.IService; 6 | 7 | /** 8 | * @description: 低代码页面分类 9 | * @author: axel 10 | * @date: 2024-09-13 11 | * @version: V0.0.1 12 | */ 13 | public interface LowCodePageCategoryService extends IService { 14 | Result addPageCategory(LowCodePageCategory lowCodePageCategory); 15 | Result editPageCategory(LowCodePageCategory lowCodePageCategory); 16 | Result deletePageCategory(String id); 17 | Result deleteBatchPageCategory(String ids); 18 | } 19 | -------------------------------------------------------------------------------- /al-start/al-start-boot/src/main/resources/bootstrap.yml: -------------------------------------------------------------------------------- 1 | # Spring 2 | spring: 3 | application: 4 | # 应用名称 5 | name: axel-nocode 6 | profiles: 7 | # 环境配置 8 | active: dev 9 | cloud: 10 | nacos: 11 | username: @nacos.username@ 12 | password: @nacos.password@ 13 | discovery: 14 | # 服务注册地址 15 | server-addr: @nacos.server-addr@ 16 | #单实例禁用nacos,yml文件 17 | enabled: false 18 | instance-enabled: false 19 | config: 20 | # 配置中心地址 21 | server-addr: @nacos.server-addr@ 22 | # 配置文件格式 23 | file-extension: yml 24 | # 共享配置 25 | shared-configs[0]: 26 | data-id: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} 27 | enabled: false 28 | refresh-enabled: false -------------------------------------------------------------------------------- /al-start/al-start-sys/src/main/java/cn/com/axel/sys/AlSysApplication.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.sys; 2 | 3 | import cn.com.axel.common.cloud.annotation.AutoCloud; 4 | import lombok.extern.slf4j.Slf4j; 5 | import org.springframework.boot.SpringApplication; 6 | 7 | /** 8 | * @author: axel 9 | * @description: 系统业务中心启动类 10 | * @date: 2022/9/2 11 | */ 12 | 13 | @Slf4j 14 | @AutoCloud 15 | public class AlSysApplication { 16 | public static void main(String[] args) { 17 | SpringApplication.run(AlSysApplication.class, args); 18 | log.info(""" 19 | 20 | \t---------------------------------------------------------- 21 | \t\ 22 | 23 | \t--------------------Axel系统业务中心启动成功----------------------- 24 | \t"""); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /al-wechat/style/widget/weui-page/weui-article.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | .weui-article{padding:24px 16px;padding:24px calc(16px + constant(safe-area-inset-right)) calc(24px + constant(safe-area-inset-bottom)) calc(16px + constant(safe-area-inset-left));padding:24px calc(16px + env(safe-area-inset-right)) calc(24px + env(safe-area-inset-bottom)) calc(16px + env(safe-area-inset-left));font-size:17px;color:rgba(0,0,0,.9)}.weui-article__section{margin-bottom:1.5em}.weui-article__h1{font-size:22px;font-weight:700;margin-bottom:.9em;line-height:1.4}.weui-article__h2{font-size:17px}.weui-article__h2,.weui-article__h3{font-weight:700;margin-bottom:.34em;line-height:1.4}.weui-article__h3{font-size:15px}.weui-article__p{margin:0 0 .8em} -------------------------------------------------------------------------------- /al-common/al-common-api/src/main/java/cn/com/axel/common/api/BootLogService.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.api; 2 | 3 | import cn.com.axel.common.core.web.Result; 4 | import cn.com.axel.common.log.service.SysLogService; 5 | import cn.com.axel.sys.api.entity.SysLog; 6 | import cn.com.axel.sys.api.remote.RemoteLogService; 7 | import org.springframework.stereotype.Service; 8 | 9 | import jakarta.annotation.Resource; 10 | 11 | /** 12 | * @description: 日志接口单实例实现 13 | * @author: axel 14 | * @date: 2024/4/16 15 | */ 16 | @Service("remoteLogService") 17 | public class BootLogService implements RemoteLogService { 18 | @Resource 19 | SysLogService sysLogService; 20 | 21 | @Override 22 | public Result insertLog(String origin, SysLog sysLog) { 23 | return sysLogService.insertLog(sysLog); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /al-common/al-common-core/src/main/java/cn/com/axel/common/core/enums/OperateType.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.core.enums; 2 | 3 | /** 4 | * @author: axel 5 | * @description: 操作类型 6 | * @date: 2022/9/1 17:05 7 | */ 8 | public enum OperateType { 9 | //其他操作 10 | OTHER("其他操作"), 11 | //查询 12 | QUERY("查询"), 13 | //新增 14 | INSERT("新增"), 15 | //更新 16 | UPDATE("修改"), 17 | //删除 18 | DELETE("删除"), 19 | //授权 20 | GRANT("授权"), 21 | //导入 22 | IMPORT("导入"), 23 | //导出 24 | EXPORT("导出"), 25 | //登录 26 | LOGIN("登录"), 27 | //登出 28 | LOGOUT("登出"); 29 | private final String value; 30 | 31 | OperateType(String value) { 32 | this.value = value; 33 | } 34 | 35 | @Override 36 | public String toString() { 37 | return value; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /al-start/al-start-lowcode/src/main/java/cn/com/axel/lowcode/AlLowcodeApplication.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.lowcode; 2 | 3 | import cn.com.axel.common.cloud.annotation.AutoCloud; 4 | import lombok.extern.slf4j.Slf4j; 5 | import org.springframework.boot.SpringApplication; 6 | 7 | /** 8 | * @author: axel 9 | * @description: 其他web业务服务参考类 10 | * @date: 2022/12/16 10:01 11 | */ 12 | @Slf4j 13 | @AutoCloud 14 | public class AlLowcodeApplication { 15 | public static void main(String[] args) { 16 | SpringApplication.run(AlLowcodeApplication.class, args); 17 | log.info(""" 18 | 19 | \t------------------------------------------------------------ 20 | \t 21 | \t--------------------Axel低代码服务启动成功----------------------- 22 | \t"""); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /al-start/al-start-oauth/src/main/java/cn/com/axel/oauth/AlOauthApplication.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth; 2 | 3 | import cn.com.axel.common.cloud.annotation.AutoCloud; 4 | import lombok.extern.slf4j.Slf4j; 5 | import org.springframework.boot.SpringApplication; 6 | 7 | /** 8 | * @author: axel 9 | * @description: 统一认证中心 10 | * @date: 2021/11/15 15:05 11 | */ 12 | @Slf4j 13 | @AutoCloud 14 | public class AlOauthApplication { 15 | public static void main(String[] args) { 16 | SpringApplication.run(AlOauthApplication.class, args); 17 | log.info(""" 18 | 19 | \t---------------------------------------------------------- 20 | \t\ 21 | 22 | \t--------------------Axel认证中心启动成功----------------------- 23 | \t"""); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /al-wechat/style/widget/weui-footer/weui-footer.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | .weui-footer{color:rgba(0,0,0,.3);font-size:14px;line-height:1.4;text-align:center}.weui-footer_fixed-bottom{position:fixed;bottom:16px;bottom:calc(16px + constant(safe-area-inset-bottom));bottom:calc(16px + env(safe-area-inset-bottom));left:0;right:0}.weui-footer__links{font-size:0}.weui-footer__link{display:inline-block;vertical-align:top;margin:0 8px;position:relative;font-size:14px;color:#576b95}.weui-footer__link:before{content:" ";position:absolute;left:0;top:0;width:1px;bottom:0;border-left:1rpx solid #c7c7c7;color:#c7c7c7;left:-8px;top:.36em;bottom:.36em}.weui-footer__link:first-child:before{display:none}.weui-footer__text{padding:0 .34em;font-size:12px} -------------------------------------------------------------------------------- /al-business/al-consume/src/main/java/cn/com/axel/consume/AlConsumeApplication.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.consume; 2 | 3 | import cn.com.axel.common.app.annotation.AutoApp; 4 | import lombok.extern.slf4j.Slf4j; 5 | import org.springframework.boot.SpringApplication; 6 | 7 | /** 8 | * @description: 消费端 9 | * @author: axel 10 | * @date: 2023/3/1 16:25 11 | */ 12 | @Slf4j 13 | @AutoApp 14 | public class AlConsumeApplication { 15 | public static void main(String[] args) { 16 | SpringApplication.run(AlConsumeApplication.class, args); 17 | log.info(""" 18 | 19 | \t---------------------------------------------------------- 20 | \t\ 21 | 22 | \t--------------------Axel调度中心消费端测试样例启动成功----------------------- 23 | \t"""); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /al-common/al-common-oauth/src/main/java/cn/com/axel/common/oauth/req/ReqSsoOrg.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.oauth.req; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | /** 9 | * @Description: 组织结构表 10 | * @Author: axel 11 | * @date: 2022-09-20 12 | * @Version: V0.0.1 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | @Schema(description = "组织结构表请求参数") 17 | public class ReqSsoOrg { 18 | @Schema(description = "租户ID") 19 | private String tenantId; 20 | @Schema(description = "组织名称") 21 | private String orgName; 22 | @Schema(description = "负责人") 23 | private String leader; 24 | @Schema(description = "联系电话") 25 | private String phone; 26 | @Schema(description = "状态(0正常 1停用)") 27 | private Integer status; 28 | } 29 | -------------------------------------------------------------------------------- /al-common/al-common-sys/src/main/java/cn/com/axel/common/sys/req/ReqDictItem.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.sys.req; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | /** 9 | * @Description: 字典项 10 | * @Author: axel 11 | * @date: 2023-01-03 12 | * @Version: V0.0.1 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | @Schema(description = "字典项请求参数") 17 | public class ReqDictItem { 18 | @Schema(description = "字典ID") 19 | private String dictId; 20 | @Schema(description = "字典编码") 21 | private String dictCode; 22 | @Schema(description = "字典标签") 23 | private String dictLabel; 24 | @Schema(description = "字典键值") 25 | private String dictValue; 26 | @Schema(description = "状态(0正常 1停用)") 27 | private Integer status; 28 | } 29 | -------------------------------------------------------------------------------- /al-business/al-sys/src/main/java/cn/com/axel/sys/service/DictService.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.sys.service; 2 | 3 | import cn.com.axel.common.core.web.Result; 4 | import cn.com.axel.sys.entity.Dict; 5 | import com.baomidou.mybatisplus.extension.service.IService; 6 | 7 | /** 8 | * @Description: 字典 9 | * @Author: axel 10 | * @date: 2023-01-03 11 | * @Version: V0.0.1 12 | */ 13 | public interface DictService extends IService { 14 | Result updateDict(Dict dict); 15 | 16 | /** 17 | * 字典编码是否存在 18 | * 19 | * @param id id 20 | * @param dictCode 字典编码 21 | * @return 返回是否存在 22 | */ 23 | boolean isDictCodeExist(String id, String dictCode); 24 | 25 | /** 26 | * 删除字典 27 | * 28 | * @param id id 29 | * @return 返回删除结果 30 | */ 31 | Result deleteDict(String id); 32 | } 33 | -------------------------------------------------------------------------------- /al-common/al-common-core/src/main/java/cn/com/axel/common/core/config/XssProperties.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.core.config; 2 | 3 | import lombok.Data; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | import org.springframework.cloud.context.config.annotation.RefreshScope; 6 | import org.springframework.context.annotation.Configuration; 7 | 8 | import java.util.ArrayList; 9 | import java.util.List; 10 | 11 | /** 12 | * @author: axel 13 | * @date: 2021/8/12 10:08 14 | */ 15 | @Configuration 16 | @ConfigurationProperties(prefix = "security.xss") 17 | @RefreshScope 18 | @Data 19 | public class XssProperties { 20 | /** 21 | * Xss开关 22 | */ 23 | private Boolean enabled = true; 24 | 25 | /** 26 | * 排除路径 27 | */ 28 | private List excludeUrls = new ArrayList<>(); 29 | } 30 | -------------------------------------------------------------------------------- /al-common/al-common-file/src/main/java/cn/com/axel/common/file/enums/StorageType.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.file.enums; 2 | 3 | /** 4 | * @description: 缓存类型 5 | * @author: axel 6 | * @date: 2023/1/5 16:47 7 | */ 8 | public enum StorageType { 9 | 本地("local"), 10 | 阿里云("aliyun"), 11 | 七牛云("qiniu"); 12 | private final String value; 13 | 14 | StorageType(String value) { 15 | this.value = value; 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return value; 21 | } 22 | 23 | public static StorageType getStorageType(String value) { 24 | for (StorageType type : StorageType.values()) { 25 | if (type.toString().equalsIgnoreCase(value)) { 26 | return type; 27 | } 28 | } 29 | return StorageType.本地; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /al-scheduler/src/main/java/cn/com/axel/scheduler/req/ReqJob.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.scheduler.req; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | /** 9 | * @description: 定时调度任务 10 | * @author: axel 11 | * @date: 2023-02-03 12 | * @version: V0.0.1 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | @Schema(description = "定时调度任务请求参数") 17 | public class ReqJob { 18 | @Schema(description = "任务名称") 19 | private String jobName; 20 | @Schema(description = "任务组") 21 | private String jobGroup; 22 | @Schema(description = "任务类型(0 本地任务 1 RPC远程调用任务 2 MQ消息任务)") 23 | private Integer jobType; 24 | @Schema(description = "类名称") 25 | private String className; 26 | @Schema(description = "状态(0正常 1停用)") 27 | private Integer status; 28 | } 29 | -------------------------------------------------------------------------------- /al-start/al-start-storage/src/main/java/cn/com/axel/storage/AlStorageApplication.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.storage; 2 | 3 | import cn.com.axel.common.cloud.annotation.AutoCloud; 4 | import lombok.extern.slf4j.Slf4j; 5 | import org.springframework.boot.SpringApplication; 6 | 7 | /** 8 | * @description: Axel文件中心启动类 9 | * @author: axel 10 | * @date: 2023/1/5 16:34 11 | */ 12 | @Slf4j 13 | @AutoCloud 14 | public class AlStorageApplication { 15 | public static void main(String[] args) { 16 | SpringApplication.run(AlStorageApplication.class, args); 17 | log.info(""" 18 | 19 | \t---------------------------------------------------------- 20 | \t\ 21 | 22 | \t--------------------Axel文件中心启动成功----------------------- 23 | \t"""); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /al-common/al-common-core/src/main/java/cn/com/axel/common/core/entity/BaseTreeEntity.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.core.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableField; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | import lombok.experimental.Accessors; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * @author: axel 13 | * @description: 基础树 14 | * @date: 2022/11/11 17:07 15 | */ 16 | @Data 17 | @EqualsAndHashCode(callSuper = true) 18 | @Schema(description = "基础树对象") 19 | public class BaseTreeEntity extends BaseEntity { 20 | @Schema(description = "父节点ID") 21 | @Accessors(chain = true) 22 | private T parentId; 23 | 24 | @Schema(description = "子节点") 25 | @TableField(exist = false) 26 | private List> children; 27 | } 28 | -------------------------------------------------------------------------------- /al-start/al-start-boot/src/main/resources/application-swagger.yml: -------------------------------------------------------------------------------- 1 | swagger: 2 | title: 'Axel低代码平台' 3 | enabled: true 4 | description : Axel框架接口文档 5 | license : Powered By axel 6 | licenseUrl : https://github.com/axel-qf/axel-nocode/blob/main/LICENSE 7 | version : 版本号:V0.0.1 8 | termsOfServiceUrl : http://www.axel.com.cn 9 | contact: 10 | name: axel 11 | email: qiufeng9862@qq.com 12 | url: http://www.axel.com.cn 13 | needAuth : true 14 | springdoc: 15 | api-docs: 16 | #生产设置false 17 | enabled: true 18 | swagger-ui: 19 | #生产设置false 20 | enabled: true 21 | path: /index.html 22 | tags-sorter: alpha 23 | operations-sorter: alpha 24 | default-models-expand-depth: -1 25 | docExpansion: none 26 | group-configs: 27 | - group: axel-nocode 28 | paths-to-match: /** 29 | default-flat-param-object: true -------------------------------------------------------------------------------- /al-common/al-common-oauth/src/main/java/cn/com/axel/common/oauth/entity/SsoUser.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.oauth.entity; 2 | 3 | import cn.com.axel.common.oauth.api.entity.UserInfo; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | 6 | import lombok.Data; 7 | import lombok.EqualsAndHashCode; 8 | import lombok.experimental.Accessors; 9 | 10 | /** 11 | * @author: axel 12 | * @date: 2020/2/13 17:29 13 | */ 14 | @Schema(description = "用户全部信息") 15 | @Data 16 | @EqualsAndHashCode(callSuper = true) 17 | @Accessors(chain = true) 18 | public class SsoUser extends UserInfo { 19 | @Schema(description = "密码加密盐") 20 | private String salt; 21 | @Schema(description = "密码") 22 | private String password; 23 | @Schema(description = "旧密码") 24 | private String oldPassword; 25 | @Schema(description = "微信openid") 26 | private String openid; 27 | } 28 | -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/service/impl/ClientServiceImpl.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.service.impl; 2 | 3 | import cn.com.axel.oauth.cache.temp.ClientTempCache; 4 | import cn.com.axel.oauth.entity.OAuthClient; 5 | import cn.com.axel.oauth.service.ClientService; 6 | import org.springframework.stereotype.Service; 7 | 8 | import jakarta.annotation.Resource; 9 | 10 | /** 11 | * @author: axel 12 | * @date: 2020/2/16 16:11 13 | */ 14 | @Service 15 | public class ClientServiceImpl implements ClientService { 16 | @Resource 17 | ClientTempCache clientTempCache; 18 | 19 | /** 20 | * 根据客户端id从缓存和数据库中获取客户端信息 21 | * 22 | * @param clientId 客户端id 23 | * @return 返回客户端信息 24 | */ 25 | @Override 26 | public OAuthClient getClientById(String clientId) { 27 | return clientTempCache.getFromCacheAndDB(clientId); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/cache/temp/OpenIdTempCache.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.cache.temp; 2 | 3 | import cn.com.axel.common.redis.temp.BaseTempCache; 4 | import cn.com.axel.common.redis.common.RedisPrefix; 5 | import cn.com.axel.oauth.mapper.SsoUserMapper; 6 | import org.springframework.stereotype.Component; 7 | 8 | import jakarta.annotation.Resource; 9 | 10 | /** 11 | * @author: axel 12 | * @date: 2020/2/29 15:07 13 | */ 14 | @Component 15 | public class OpenIdTempCache extends BaseTempCache { 16 | @Resource 17 | SsoUserMapper ssoUserMapper; 18 | 19 | @Override 20 | protected String buildKey(String... key) { 21 | return RedisPrefix.buildOpenId2userIdKey(key[0]); 22 | } 23 | 24 | @Override 25 | protected String getFromDB(String... key) { 26 | return ssoUserMapper.getUserIdByOpenId(key[0]); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /al-common/al-common-core/src/main/java/cn/com/axel/common/core/entity/DefaultField.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.core.entity; 2 | 3 | import java.util.HashSet; 4 | import java.util.Set; 5 | 6 | /** 7 | * @author: axel 8 | * @description: 缺省字段 9 | * @date: 2022/11/12 21:38 10 | */ 11 | public class DefaultField { 12 | public static final String ID = "id"; 13 | public static final String CREATE_BY = "create_by"; 14 | public static final String CREATE_TIME = "create_time"; 15 | public static final String UPDATE_BY = "update_by"; 16 | public static final String UPDATE_TIME = "update_time"; 17 | 18 | public static Set values = new HashSet<>(); 19 | 20 | static { 21 | values.add(ID); 22 | values.add(CREATE_BY); 23 | values.add(CREATE_TIME); 24 | values.add(UPDATE_BY); 25 | values.add(UPDATE_TIME); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /al-wechat/style/widget/weui-tips/weui-toptips.wxss: -------------------------------------------------------------------------------- 1 | /*! 2 | * WeUI v2.0.1 (https://github.com/weui/weui-wxss) 3 | * Copyright 2019 Tencent, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | .weui-toptips{position:fixed;-webkit-transform:translateZ(0) translateY(-108%);transform:translateZ(0) translateY(-108%);text-align:center;top:8px;left:16px;right:16px;border-radius:4px;padding:8px;-webkit-border-radius:4px;color:hsla(0,0%,100%,.9);font-size:17px;line-height:1.4;background:rgba(250,81,81,.9);z-index:5000;word-wrap:break-word;word-break:break-all;-webkit-transition:all .4s ease-in-out;transition:all .4s ease-in-out}.weui-toptips_show{-webkit-transform:translateZ(0) translateY(0);transform:translateZ(0) translateY(0);opacity:1}.weui-toptips_warn{background-color:#fa5151}.weui-toptips_success{background-color:#09bb07}.weui-toptips_error{background-color:#fa5151}.weui-toptips_info{background-color:#10aeff} -------------------------------------------------------------------------------- /al-api/al-scheduler-api/src/main/java/cn/com/axel/common/scheduler/api/fallback/RemoteSchedulerFallBack.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.scheduler.api.fallback; 2 | 3 | import cn.com.axel.common.core.web.Result; 4 | import cn.com.axel.common.scheduler.api.remote.RemoteSchedulerService; 5 | import lombok.extern.slf4j.Slf4j; 6 | import org.springframework.cloud.openfeign.FallbackFactory; 7 | import org.springframework.stereotype.Component; 8 | 9 | /** 10 | * @description: 调度接口降级处理 11 | * @author: axel 12 | * @date: 2023/3/1 21:40 13 | */ 14 | @Component 15 | @Slf4j 16 | public class RemoteSchedulerFallBack implements FallbackFactory { 17 | @Override 18 | public RemoteSchedulerService create(Throwable cause) { 19 | log.error("错误:调度接口调用异常", cause); 20 | return (origin, jobLog) -> Result.fail(false, "错误:回调状态失败" + cause.getMessage()); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /al-common/al-common-scheduler/src/main/java/cn/com/axel/common/scheduler/config/properties/ProductProperties.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.scheduler.config.properties; 2 | 3 | import lombok.Data; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | import org.springframework.cloud.context.config.annotation.RefreshScope; 6 | import org.springframework.context.annotation.Configuration; 7 | 8 | /** 9 | * @description: rocketMq属性配置 10 | * @author: axel 11 | * @date: 2023/3/1 11:44 12 | */ 13 | @Data 14 | @Configuration 15 | @ConfigurationProperties(prefix = "rocketmq.producer") 16 | @RefreshScope 17 | public class ProductProperties { 18 | /** 19 | * 分组 20 | */ 21 | private String group; 22 | /** 23 | * 主题 24 | */ 25 | private String topic; 26 | /** 27 | * 消息超时时间 28 | */ 29 | private Long sendMessageTimeout; 30 | } 31 | -------------------------------------------------------------------------------- /al-common/al-common-oauth/src/main/java/cn/com/axel/common/oauth/req/ReqSsoMenu.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.oauth.req; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | /** 9 | * @Description: 菜单权限表 10 | * @Author: axel 11 | * @date: 2022-09-21 12 | * @Version: V0.0.1 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | @Schema(description = "菜单权限表请求参数") 17 | public class ReqSsoMenu { 18 | @Schema(description = "菜单名称") 19 | private String menuName; 20 | @Schema(description = "菜单类型(0目录 1菜单 2按钮)") 21 | private Integer menuType; 22 | @Schema(description = "菜单状态(1显示 0隐藏)") 23 | private Integer isVisible; 24 | @Schema(description = "权限标识") 25 | private String permission; 26 | @Schema(description = "是否返回按钮 true 不返回按钮 false 返回按钮") 27 | private Boolean noButton = false; 28 | } 29 | -------------------------------------------------------------------------------- /al-common/al-common-cloud/src/main/java/cn/com/axel/common/cloud/annotation/AutoFeignClients.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.cloud.annotation; 2 | 3 | import org.springframework.cloud.openfeign.EnableFeignClients; 4 | 5 | import java.lang.annotation.ElementType; 6 | import java.lang.annotation.Retention; 7 | import java.lang.annotation.RetentionPolicy; 8 | import java.lang.annotation.Target; 9 | 10 | /** 11 | * @author: axel 12 | * @description: Feign注解设置扫描包 13 | * @date: 2021/12/3 15:40 14 | */ 15 | @Target(ElementType.TYPE) 16 | @Retention(RetentionPolicy.RUNTIME) 17 | @EnableFeignClients 18 | public @interface AutoFeignClients { 19 | String[] value() default {}; 20 | 21 | String[] basePackages() default {"cn.com.axel"}; 22 | 23 | Class[] basePackageClasses() default {}; 24 | 25 | Class[] defaultConfiguration() default {}; 26 | 27 | Class[] clients() default {}; 28 | } 29 | -------------------------------------------------------------------------------- /al-scheduler/src/main/java/cn/com/axel/scheduler/common/AlConnectionProvider.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.scheduler.common; 2 | 3 | import cn.com.axel.common.core.utils.SpringBeanFactory; 4 | import org.quartz.utils.ConnectionProvider; 5 | 6 | import javax.sql.DataSource; 7 | import java.sql.Connection; 8 | import java.sql.SQLException; 9 | 10 | /** 11 | * @description: 定义数据库provider 12 | * @author: axel 13 | * @date: 2023/2/7 22:28 14 | */ 15 | public class AlConnectionProvider implements ConnectionProvider { 16 | DataSource dataSource; 17 | 18 | @Override 19 | public Connection getConnection() throws SQLException { 20 | return dataSource.getConnection(); 21 | } 22 | 23 | @Override 24 | public void shutdown() { 25 | 26 | } 27 | 28 | @Override 29 | public void initialize() { 30 | dataSource = SpringBeanFactory.getBean("dataSource"); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /al-scheduler/src/main/java/cn/com/axel/scheduler/service/JobService.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.scheduler.service; 2 | 3 | import cn.com.axel.common.core.web.Result; 4 | import cn.com.axel.scheduler.entity.Job; 5 | import com.baomidou.mybatisplus.extension.service.IService; 6 | import org.quartz.SchedulerException; 7 | 8 | /** 9 | * @description: 定时调度任务 10 | * @author: axel 11 | * @date: 2023-02-03 12 | * @version: V0.0.1 13 | */ 14 | public interface JobService extends IService { 15 | Result insertJob(Job job) throws SchedulerException, ClassNotFoundException; 16 | 17 | Result updateJob(Job job) throws SchedulerException, ClassNotFoundException; 18 | 19 | Result deleteJob(String jobId) throws SchedulerException; 20 | 21 | Result executeJob(Job job); 22 | 23 | Result setStatus(Job job) throws SchedulerException, ClassNotFoundException; 24 | } 25 | -------------------------------------------------------------------------------- /al-common/al-common-oauth/src/main/java/cn/com/axel/common/oauth/req/ReqSsoUser.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.oauth.req; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | /** 9 | * @Description: 用户信息 10 | * @Author: axel 11 | * @date: 2022-11-13 12 | * @Version: V0.0.1 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | @Schema(description = "用户信息请求参数") 17 | public class ReqSsoUser { 18 | @Schema(description = "租户ID") 19 | private String tenantId; 20 | @Schema(description = "组织ID") 21 | private String orgId; 22 | @Schema(description = "账号") 23 | private String account; 24 | @Schema(description = "手机号") 25 | private String phone; 26 | @Schema(description = "昵称--用于显示") 27 | private String nickname; 28 | @Schema(description = "状态(0正常 1停用)") 29 | private Integer status; 30 | } 31 | -------------------------------------------------------------------------------- /al-business/al-demo/src/main/java/cn/com/axel/demo/service/impl/DemoImportExportServiceImpl.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.demo.service.impl; 2 | 3 | import cn.com.axel.demo.entity.DemoImportExport; 4 | import cn.com.axel.demo.mapper.DemoImportExportMapper; 5 | import cn.com.axel.demo.service.DemoImportExportService; 6 | import org.springframework.stereotype.Service; 7 | 8 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * @description: 导入导出Demo 14 | * @author: axel 15 | * @date: 2024-09-02 16 | * @version: V0.0.1 17 | */ 18 | @Service 19 | public class DemoImportExportServiceImpl extends ServiceImpl implements DemoImportExportService { 20 | 21 | @Override 22 | public int insertBatchSomeColumn(List list) { 23 | return baseMapper.insertBatchSomeColumn(list); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /al-common/al-common-log/src/main/java/cn/com/axel/common/log/annotation/Log.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.log.annotation; 2 | 3 | import cn.com.axel.common.core.enums.OperateType; 4 | import cn.com.axel.common.core.enums.ReqSource; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * @author: axel 13 | * @description: 日志记录注解 14 | * @date: 2022/9/1 16:51 15 | */ 16 | @Target({ElementType.METHOD}) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | public @interface Log { 19 | /** 20 | * 标题 21 | */ 22 | String title() default ""; 23 | 24 | /** 25 | * 操作类型 26 | */ 27 | OperateType operateType() default OperateType.OTHER; 28 | 29 | /** 30 | * 请求来源 默认为管理端 31 | */ 32 | ReqSource reqSource() default ReqSource.MANAGER; 33 | } 34 | -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/service/OAuth2Service.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.service; 2 | 3 | import cn.com.axel.common.oauth.entity.AuthorizationCode; 4 | import cn.com.axel.common.oauth.entity.RedisAccessToken; 5 | import cn.com.axel.oauth.oltu.as.request.OAuthAuthzRequest; 6 | import cn.com.axel.oauth.oltu.as.request.OAuthTokenRequest; 7 | 8 | /** 9 | * @author: axel 10 | * @date: 2020/2/13 12:51 11 | */ 12 | public interface OAuth2Service { 13 | AuthorizationCode buildCode(OAuthAuthzRequest request); 14 | 15 | void setCode(AuthorizationCode code); 16 | 17 | void delCode(String code); 18 | 19 | AuthorizationCode getCode(String code); 20 | 21 | RedisAccessToken buildToken(OAuthTokenRequest request); 22 | 23 | RedisAccessToken code2Token(OAuthTokenRequest request, AuthorizationCode code); 24 | 25 | RedisAccessToken refresh2Token(RedisAccessToken token); 26 | 27 | } 28 | -------------------------------------------------------------------------------- /al-business/al-consume/src/main/java/cn/com/axel/consume/job/ConsumerJob.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.consume.job; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | import org.springframework.stereotype.Component; 5 | 6 | import java.text.MessageFormat; 7 | 8 | /** 9 | * @description: 消费端测试任务 10 | * @author: axel 11 | * @date: 2023/3/1 17:35 12 | */ 13 | @Component 14 | @Slf4j 15 | public class ConsumerJob { 16 | public void test() { 17 | log.info("任务执行"); 18 | } 19 | 20 | public void test(String param) { 21 | log.info(MessageFormat.format("任务执行!参数:{0}", param)); 22 | } 23 | 24 | public void test(String param1, Integer param2) { 25 | log.info(MessageFormat.format("任务执行!参数1:{0},参数:{1}", param1, param2)); 26 | } 27 | 28 | public void test(String param1, String param2) { 29 | log.info(MessageFormat.format("任务执行!参数1:{0},参数:{1}", param1, param2)); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/cache/temp/ClientTempCache.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.cache.temp; 2 | 3 | import cn.com.axel.common.redis.temp.BaseTempCache; 4 | import cn.com.axel.common.redis.common.RedisPrefix; 5 | import cn.com.axel.oauth.mapper.ClientMapper; 6 | import cn.com.axel.oauth.entity.OAuthClient; 7 | import org.springframework.stereotype.Component; 8 | 9 | import jakarta.annotation.Resource; 10 | 11 | /** 12 | * @author: axel 13 | * @date: 2020/2/16 15:54 14 | */ 15 | @Component 16 | public class ClientTempCache extends BaseTempCache { 17 | @Resource 18 | ClientMapper clientMapper; 19 | 20 | @Override 21 | protected String buildKey(String... key) { 22 | return RedisPrefix.buildClientKey(key[0]); 23 | } 24 | 25 | @Override 26 | protected OAuthClient getFromDB(String... key) { 27 | return clientMapper.getClientById(key[0]); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /al-wechat/app.wxss: -------------------------------------------------------------------------------- 1 | /**app.wxss**/ 2 | @import 'style/weui.wxss'; 3 | page{ 4 | background-color: #EDEDED; 5 | font-size: 16px; 6 | font-family: -apple-system-font,Helvetica Neue,Helvetica,sans-serif; 7 | } 8 | .page__hd { 9 | padding: 40px; 10 | } 11 | .page__bd { 12 | padding-bottom: 40px; 13 | } 14 | .page__bd_spacing { 15 | padding-left: 15px; 16 | padding-right: 15px; 17 | } 18 | 19 | .page__ft{ 20 | text-align: center; 21 | padding:0 0 10px; 22 | padding:0 0 calc(10px + constant(safe-area-inset-bottom)); 23 | padding:0 0 calc(10px + env(safe-area-inset-bottom)); 24 | } 25 | 26 | 27 | .page__title { 28 | text-align: left; 29 | font-size: 20px; 30 | font-weight: 400; 31 | } 32 | 33 | .page__desc { 34 | margin-top: 5px; 35 | color: #888888; 36 | text-align: left; 37 | font-size: 14px; 38 | } 39 | .weui-cell_example:before{ 40 | left:52px; 41 | } 42 | 43 | -------------------------------------------------------------------------------- /al-common/al-common-api/src/main/java/cn/com/axel/common/api/BootDictService.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.api; 2 | 3 | import cn.com.axel.common.core.web.Result; 4 | import cn.com.axel.common.sys.service.DictItemService; 5 | import cn.com.axel.sys.api.entity.DictItem; 6 | import cn.com.axel.sys.api.remote.RemoteDictService; 7 | import org.springframework.stereotype.Service; 8 | 9 | import jakarta.annotation.Resource; 10 | 11 | import java.util.List; 12 | 13 | /** 14 | * @description: 远程字典服务单实例实现 15 | * @author: axel 16 | * @date: 2024/4/16 17 | */ 18 | @SuppressWarnings("rawtypes") 19 | @Service("remoteDictService") 20 | public class BootDictService implements RemoteDictService { 21 | 22 | @Resource 23 | DictItemService dictItemService; 24 | 25 | @Override 26 | public Result> queryByCode(String origin, String dictCode) { 27 | return dictItemService.queryByCode(dictCode); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/cache/temp/UserTempCache.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.cache.temp; 2 | 3 | import cn.com.axel.common.redis.temp.BaseTempCache; 4 | import cn.com.axel.oauth.mapper.SsoUserMapper; 5 | import cn.com.axel.common.oauth.entity.SsoUser; 6 | import cn.com.axel.common.redis.common.RedisPrefix; 7 | import org.springframework.stereotype.Component; 8 | 9 | import jakarta.annotation.Resource; 10 | 11 | /** 12 | * @author: axel 13 | * @date: 2020/2/14 17:46 14 | */ 15 | @Component 16 | public class UserTempCache extends BaseTempCache { 17 | @Resource 18 | SsoUserMapper ssoUserMapper; 19 | 20 | @Override 21 | protected String buildKey(String... key) { 22 | return RedisPrefix.buildUserDetailKey(key[0]); 23 | } 24 | 25 | @Override 26 | protected SsoUser getFromDB(String... key) { 27 | return ssoUserMapper.getUserById(key[0], null); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /al-common/al-common-code/src/main/java/cn/com/axel/common/code/entity/CodeInfo.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.code.entity; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | import java.io.Serializable; 8 | import java.util.List; 9 | 10 | /** 11 | * @author: axel 12 | * @description: 代码相关属性 13 | * @date: 2022/8/25 16:39 14 | */ 15 | @Data 16 | @Schema(description = "代码相关属性") 17 | @Accessors(chain = true) 18 | public class CodeInfo implements Serializable { 19 | @Schema(description = "包名") 20 | private String packageName; 21 | @Schema(description = "实体名称(会自动转化为首字母大写驼峰)") 22 | private String entityName; 23 | @Schema(description = "表相关信息") 24 | private TableExpand tableInfo; 25 | @Schema(description = "接口前缀") 26 | private String apiPrefix; 27 | @Schema(description = "查询列表") 28 | private List searchList; 29 | } 30 | -------------------------------------------------------------------------------- /al-start/al-start-scheduler/src/main/java/cn/com/axel/scheduler/AlSchedulerApplication.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.scheduler; 2 | 3 | import cn.com.axel.common.cloud.annotation.AutoCloud; 4 | import lombok.extern.slf4j.Slf4j; 5 | import org.springframework.boot.SpringApplication; 6 | import org.springframework.scheduling.annotation.EnableScheduling; 7 | 8 | /** 9 | * @description: 调度中心启动类 10 | * @author: axel 11 | * @date: 2023/2/3 15:15 12 | */ 13 | @AutoCloud 14 | @Slf4j 15 | @EnableScheduling 16 | public class AlSchedulerApplication { 17 | public static void main(String[] args) { 18 | SpringApplication.run(AlSchedulerApplication.class, args); 19 | log.info(""" 20 | 21 | \t---------------------------------------------------------- 22 | \t\ 23 | 24 | \t--------------------Axel调度中心启动成功----------------------- 25 | \t"""); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /al-common/al-common-core/src/main/java/cn/com/axel/common/core/constants/RPCConstants.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.core.constants; 2 | 3 | /** 4 | * @author: axel 5 | * @description: 凭证常量 6 | * @date: 2021/11/18 18:16 7 | */ 8 | public class RPCConstants { 9 | /** 10 | * 请求来源 11 | */ 12 | public static final String REQ_ORIGIN = "req-origin"; 13 | /** 14 | * 内部请求 15 | */ 16 | public static final String INNER = "inner"; 17 | 18 | /** 19 | * 当前请求租户ID 20 | */ 21 | public static final String REQ_TENANT_ID = "req-tenant-id"; 22 | 23 | /** 24 | * 当前请求用户ID 25 | */ 26 | public static final String REQ_USER_ID = "req-user-id"; 27 | 28 | /** 29 | * 当前请求帐号名称 30 | */ 31 | public static final String REQ_ACCOUNT = "req-account"; 32 | 33 | /** 34 | * 验证码校验异常 35 | */ 36 | public static final String REQ_CHECK_CAPTCHA_EXCEPTION = "req-check-captcha-exception"; 37 | } 38 | -------------------------------------------------------------------------------- /al-monitor/src/main/java/cn/com/axel/monitor/AlMonitorApplication.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.monitor; 2 | 3 | import de.codecentric.boot.admin.server.config.EnableAdminServer; 4 | import lombok.extern.slf4j.Slf4j; 5 | import org.springframework.boot.SpringApplication; 6 | import org.springframework.boot.autoconfigure.SpringBootApplication; 7 | 8 | /** 9 | * @description: Axel监控中心启动类 10 | * @author: axel 11 | * @date: 2023/1/26 23:11 12 | */ 13 | @SpringBootApplication 14 | @EnableAdminServer 15 | @Slf4j 16 | public class AlMonitorApplication { 17 | public static void main(String[] args) { 18 | SpringApplication.run(AlMonitorApplication.class, args); 19 | log.info(""" 20 | 21 | \t---------------------------------------------------------- 22 | \t\ 23 | 24 | \t--------------------Axel监控中心启动成功----------------------- 25 | \t"""); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /al-api/al-oauth-api/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | al-api 7 | cn.com.axel 8 | al-0.0.1 9 | 10 | 4.0.0 11 | 12 | al-oauth-api 13 | 14 | 15 | ${java.version} 16 | ${java.version} 17 | 18 | 19 | 20 | cn.com.axel 21 | al-common-core 22 | 23 | 24 | -------------------------------------------------------------------------------- /al-api/al-scheduler-api/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | al-api 7 | cn.com.axel 8 | al-0.0.1 9 | 10 | 4.0.0 11 | 12 | al-scheduler-api 13 | 14 | 15 | ${java.version} 16 | ${java.version} 17 | 18 | 19 | 20 | cn.com.axel 21 | al-common-core 22 | 23 | 24 | -------------------------------------------------------------------------------- /al-common/al-common-code/src/main/java/cn/com/axel/common/code/config/properties/FreemarkerProperties.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.code.config.properties; 2 | 3 | import freemarker.template.Version; 4 | import lombok.Data; 5 | import org.springframework.boot.context.properties.ConfigurationProperties; 6 | import org.springframework.cloud.context.config.annotation.RefreshScope; 7 | import org.springframework.context.annotation.Configuration; 8 | 9 | import java.util.ArrayList; 10 | import java.util.List; 11 | 12 | /** 13 | * @author: axel 14 | * @description: freemarker模版keys配置 15 | * @date: 2022/8/30 16:15 16 | */ 17 | @Configuration 18 | @RefreshScope 19 | @ConfigurationProperties(prefix = "code.template") 20 | @Data 21 | public class FreemarkerProperties { 22 | private final List keys = new ArrayList<>(); 23 | private final String path = "template"; 24 | private final Version version = freemarker.template.Configuration.VERSION_2_3_31; 25 | } 26 | -------------------------------------------------------------------------------- /al-scheduler/src/test/java/cn/com/axel/scheduler/test/BuildParamTest.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.scheduler.test; 2 | 3 | import cn.com.axel.common.scheduler.config.utils.InvokeUtils; 4 | import cn.com.axel.sys.api.entity.SysLog; 5 | import com.alibaba.fastjson2.JSON; 6 | import org.junit.Test; 7 | 8 | import java.util.ArrayList; 9 | import java.util.List; 10 | 11 | /** 12 | * @description: 参数生成测试 13 | * @author: axel 14 | * @date: 2023/2/14 10:57 15 | */ 16 | public class BuildParamTest { 17 | @Test 18 | public void buildParam() { 19 | List list = new ArrayList<>(); 20 | SysLog sysLog = new SysLog(); 21 | sysLog.setTitle("aaaa"); 22 | list.add(new InvokeUtils.InvokeParams().setType(String.class.getName()).setValue("inner")); 23 | list.add(new InvokeUtils.InvokeParams().setType(sysLog.getClass().getName()).setValue(sysLog)); 24 | System.out.println(JSON.toJSONString(list)); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /al-common/al-common-dblink/src/main/java/cn/com/axel/common/dblink/db/DBDialect.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.dblink.db; 2 | 3 | import cn.com.axel.common.dblink.page.BoundSql; 4 | 5 | /** 6 | * @description: 代码构建相关语句 7 | * @author: axel 8 | * @date: 2023/3/23 22:08 9 | */ 10 | public interface DBDialect { 11 | String getJdbc(String host, String port, String dbName); 12 | 13 | /** 14 | * 获取表字段信息 15 | *

16 | * 本方法旨在通过给定的数据库名称和表名称,获取对应表的字段信息 17 | * 用于动态SQL或查询构建前的准备,确保后续操作基于正确的表结构执行 18 | * 19 | * @param dbName 库名,指定要查询表字段信息的数据库 20 | * @param tableName 表名,指定要查询字段信息的具体表 21 | * @return BoundSql 包含指定表字段信息的绑定SQL对象 22 | */ 23 | BoundSql getColumns(String dbName, String tableName); 24 | 25 | /** 26 | * 获取表信息 27 | * 28 | * @param dbName 库名 29 | * @param tableName 表名 30 | * @return BoundSql 对象,包含表的信息 31 | */ 32 | BoundSql getTableInfo(String dbName, String tableName); 33 | } 34 | -------------------------------------------------------------------------------- /al-common/al-common-log/src/main/java/cn/com/axel/common/log/service/impl/SysLogServiceImpl.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.log.service.impl; 2 | 3 | import cn.com.axel.common.core.web.Result; 4 | import cn.com.axel.common.log.mapper.SysLogMapper; 5 | import cn.com.axel.common.log.service.SysLogService; 6 | import cn.com.axel.sys.api.entity.SysLog; 7 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 8 | import org.springframework.stereotype.Service; 9 | 10 | /** 11 | * @description: 系统日志 12 | * @author: axel 13 | * @date: 2023-01-08 14 | * @version: V0.0.1 15 | */ 16 | @Service 17 | public class SysLogServiceImpl extends ServiceImpl implements SysLogService { 18 | 19 | @Override 20 | public Result insertLog(SysLog sysLog) { 21 | if (baseMapper.insert(sysLog) > 0) { 22 | return Result.ok(sysLog, "系统日志-添加成功!"); 23 | } 24 | return Result.fail(sysLog, "错误:系统日志-添加失败!"); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /al-common/al-common-oauth/src/main/java/cn/com/axel/common/oauth/scope/TenantDataScopeHandle.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.oauth.scope; 2 | 3 | import cn.com.axel.common.core.utils.AuthInfoUtils; 4 | import cn.com.axel.common.oauth.common.DataScopeUtils; 5 | import cn.com.axel.common.core.utils.StringUtils; 6 | 7 | /** 8 | * @description: 租户数据处理 9 | * @author: axel 10 | * @date: 2024/4/26 11 | */ 12 | public class TenantDataScopeHandle implements DataScopeHandle { 13 | private static final String DEFAULT_FIELD = "tenant_id"; 14 | 15 | @Override 16 | public String buildCondition(String fieldName, String[] values) { 17 | fieldName = StringUtils.isEmpty(fieldName) ? DEFAULT_FIELD : fieldName; 18 | if (values == null || values.length == 0) { 19 | //未传值时使用当前租户id 20 | values = new String[]{AuthInfoUtils.getCurrentTenantId()}; 21 | } 22 | return DataScopeUtils.buildCondition(fieldName, values); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /al-api/al-sys-api/src/main/java/cn/com/axel/sys/api/entity/TableInfo.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.sys.api.entity; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | import java.io.Serializable; 9 | import java.util.List; 10 | 11 | /** 12 | * @author: axel 13 | * @description: 表信息 14 | * @date: 2022/8/29 16:46 15 | */ 16 | @Data 17 | @Schema(description = "表信息") 18 | @Accessors(chain = true) 19 | public class TableInfo implements Serializable { 20 | @Schema(description = "id类型") 21 | private String idType; 22 | @Schema(description = "表名称") 23 | private String tableName; 24 | @Schema(description = "表描述信息") 25 | private String tableComment; 26 | @Schema(description = "库") 27 | private String tableSchema; 28 | @Schema(description = "表类型 0表 1视图") 29 | private Integer tableType; 30 | @Schema(description = "列信息") 31 | private List columns; 32 | } 33 | -------------------------------------------------------------------------------- /al-common/al-common-dataset/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | al-common 7 | cn.com.axel 8 | al-0.0.1 9 | 10 | 4.0.0 11 | 12 | al-common-dataset 13 | 14 | 15 | ${java.version} 16 | ${java.version} 17 | 18 | 19 | 20 | cn.com.axel 21 | al-common-core 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /al-common/al-common-oauth/src/main/java/cn/com/axel/common/oauth/service/SsoMenuService.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.oauth.service; 2 | 3 | import cn.com.axel.common.core.web.Result; 4 | import cn.com.axel.common.oauth.api.entity.SsoMenu; 5 | import cn.com.axel.common.oauth.req.ReqSsoMenu; 6 | import com.baomidou.mybatisplus.extension.service.IService; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * @Description: 菜单权限表 12 | * @Author: axel 13 | * @date: 2022-09-21 14 | * @Version: V0.0.1 15 | */ 16 | public interface SsoMenuService extends IService { 17 | Result insertMenu(SsoMenu ssoMenu); 18 | 19 | Result> queryMenuTree(ReqSsoMenu reqSsoMenu, String userId); 20 | 21 | List queryMenu(ReqSsoMenu reqSsoMenu, String userId); 22 | 23 | Result updateMenu(SsoMenu ssoMenu); 24 | 25 | Result deleteMenu(String menuId); 26 | 27 | Result routeExist(String routePath, String parentId); 28 | } 29 | -------------------------------------------------------------------------------- /al-business/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | axel-nocode 7 | cn.com.axel 8 | al-0.0.1 9 | 10 | 4.0.0 11 | 12 | al-business 13 | pom 14 | 15 | al-demo 16 | al-lowcode 17 | al-sys 18 | al-consume 19 | 20 | 21 | 22 | ${java.version} 23 | ${java.version} 24 | 25 | 26 | -------------------------------------------------------------------------------- /al-common/al-common-dblink/src/main/java/cn/com/axel/common/dblink/service/DbConnectService.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.dblink.service; 2 | 3 | import cn.com.axel.common.core.web.PageResult; 4 | import cn.com.axel.common.core.web.ReqPage; 5 | import cn.com.axel.common.core.web.Result; 6 | import cn.com.axel.sys.api.entity.DbConnect; 7 | import cn.com.axel.sys.api.req.ReqDbConnect; 8 | import com.baomidou.mybatisplus.extension.service.IService; 9 | 10 | /** 11 | * @description: 数据库连接 12 | * @author: axel 13 | * @date: 2023-03-13 14 | * @version: V0.0.1 15 | */ 16 | public interface DbConnectService extends IService { 17 | Result> queryPageList(ReqDbConnect reqDbConnect, ReqPage reqPage); 18 | 19 | Result insertConnect(DbConnect dbConnect); 20 | 21 | Result updateConnect(DbConnect dbConnect); 22 | 23 | Result testConnect(DbConnect dbConnect); 24 | 25 | Result queryById(String id); 26 | } 27 | -------------------------------------------------------------------------------- /al-common/al-common-oauth/src/main/java/cn/com/axel/common/oauth/entity/AccessToken.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.oauth.entity; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | import java.io.Serializable; 8 | 9 | /** 10 | * @author: axel 11 | * @date: 2020/2/17 15:09 12 | */ 13 | @Schema(description = "返回accessToken信息") 14 | @Data 15 | @Accessors(chain = true) 16 | public class AccessToken implements Serializable { 17 | @Schema(description = "token值") 18 | private String access_token; 19 | @Schema(description = "刷新token用于重新获取token") 20 | private String refresh_token; 21 | @Schema(description = "有效期") 22 | private Long expires_in; 23 | 24 | public AccessToken() { 25 | } 26 | 27 | public AccessToken(String token, String refreshToken, Long expiresIn) { 28 | this.setAccess_token(token).setRefresh_token(refreshToken).setExpires_in(expiresIn); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /al-api/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | axel-nocode 7 | cn.com.axel 8 | al-0.0.1 9 | 10 | 4.0.0 11 | 12 | al-api 13 | pom 14 | 15 | al-sys-api 16 | al-oauth-api 17 | al-scheduler-api 18 | al-storage-api 19 | 20 | 21 | 22 | ${java.version} 23 | ${java.version} 24 | 25 | 26 | -------------------------------------------------------------------------------- /al-api/al-oauth-api/src/main/java/cn/com/axel/common/oauth/api/vo/TenantVo.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.oauth.api.vo; 2 | 3 | import cn.com.axel.common.oauth.api.entity.SsoTenant; 4 | import com.alibaba.excel.annotation.ExcelProperty; 5 | import io.swagger.v3.oas.annotations.media.Schema; 6 | 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | 10 | /** 11 | * @description: 租户返回对象 12 | * @author: axel 13 | * @date: 2023/6/13 19:54 14 | */ 15 | @EqualsAndHashCode(callSuper = true) 16 | @Data 17 | @Schema(description = "租户对象") 18 | public class TenantVo extends SsoTenant { 19 | @ExcelProperty("用户名") 20 | @Schema(description = "用户名") 21 | private String account; 22 | @ExcelProperty("昵称") 23 | @Schema(description = "昵称") 24 | private String nickname; 25 | @ExcelProperty("手机号") 26 | @Schema(description = "手机号") 27 | private String phone; 28 | @ExcelProperty("是否管理员") 29 | @Schema(description = "是否管理员 1是 0否") 30 | private Integer master; 31 | } 32 | -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/cache/temp/UserTenantTempCache.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.cache.temp; 2 | 3 | import cn.com.axel.common.oauth.api.vo.TenantVo; 4 | import cn.com.axel.common.redis.common.RedisPrefix; 5 | import cn.com.axel.common.redis.temp.BaseTempCache; 6 | import cn.com.axel.oauth.mapper.SsoUserMapper; 7 | import org.springframework.stereotype.Component; 8 | 9 | import jakarta.annotation.Resource; 10 | 11 | import java.util.List; 12 | 13 | /** 14 | * @description: 用户租户缓存 15 | * @author: axel 16 | * @date: 2023/6/25 17 | */ 18 | @Component 19 | public class UserTenantTempCache extends BaseTempCache> { 20 | @Resource 21 | SsoUserMapper ssoUserMapper; 22 | 23 | @Override 24 | protected String buildKey(String... key) { 25 | return RedisPrefix.buildUser2TenantsKey(key[0]); 26 | } 27 | 28 | @Override 29 | protected List getFromDB(String... key) { 30 | return ssoUserMapper.getUserTenants(key[0]); 31 | } 32 | 33 | } -------------------------------------------------------------------------------- /al-oauth/src/main/java/cn/com/axel/oauth/realm/UserPasswordRealm.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.oauth.realm; 2 | 3 | import cn.com.axel.common.oauth.entity.SsoUser; 4 | import org.apache.shiro.authc.AuthenticationInfo; 5 | import org.apache.shiro.authc.AuthenticationToken; 6 | import org.apache.shiro.authc.SimpleAuthenticationInfo; 7 | import org.apache.shiro.lang.util.ByteSource; 8 | 9 | /** 10 | * @author: axel 11 | * @date: 2020/2/11 9:33 12 | */ 13 | public class UserPasswordRealm extends BaseRealm { 14 | 15 | @Override 16 | protected AuthenticationInfo buildAuthenticationInfo(SsoUser user, AuthenticationToken authenticationToken, boolean newUser) { 17 | //交给AuthenticatingRealm使用CredentialsMatcher进行密码匹配,如果觉得人家的不好可以自定义实现 18 | return new SimpleAuthenticationInfo( 19 | user.getId(), //用户名 20 | user.getPassword(), //密码 21 | ByteSource.Util.bytes(user.getId() + user.getSalt()), 22 | getName() //调用基类realm 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /al-scheduler/src/main/java/cn/com/axel/scheduler/entity/JobMeta.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.scheduler.entity; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.Map; 6 | 7 | /** 8 | * @description: 任务基础信息 9 | * @author: axel 10 | * @date: 2023/2/6 17:09 11 | */ 12 | @Data 13 | public class JobMeta { 14 | /** 15 | * 名称 16 | */ 17 | private String name; 18 | 19 | /** 20 | * 组别 21 | */ 22 | private String group = "default"; 23 | 24 | /** 25 | * 是否允许同步 26 | */ 27 | private boolean allowConcurrent = false; 28 | 29 | /** 30 | * 描述 31 | */ 32 | private String description = "暂无描述"; 33 | 34 | /** 35 | * 是否可恢复(执行中应用发生故障,需要重新执行) 36 | * 此处暂时设置为false由trigger确定处理 37 | */ 38 | private Boolean recovery = false; 39 | 40 | /** 41 | * 是否持久化(即使没有Trigger关联时,也不需要删除该JobDetail) 42 | */ 43 | private Boolean durability = true; 44 | 45 | /** 46 | * 数据 47 | */ 48 | private Map dataMap; 49 | } 50 | -------------------------------------------------------------------------------- /al-common/al-common-sys/src/main/java/cn/com/axel/common/sys/service/DictItemService.java: -------------------------------------------------------------------------------- 1 | package cn.com.axel.common.sys.service; 2 | 3 | import cn.com.axel.common.core.web.Result; 4 | import cn.com.axel.common.sys.req.ReqDictItem; 5 | import cn.com.axel.sys.api.entity.DictItem; 6 | import com.baomidou.mybatisplus.extension.service.IService; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * @Description: 字典项 12 | * @Author: axel 13 | * @date: 2023-01-03 14 | * @Version: V0.0.1 15 | */ 16 | @SuppressWarnings("rawtypes") 17 | public interface DictItemService extends IService { 18 | /** 19 | * 获取字典项 20 | * 21 | * @param reqDictItem 请求参数 22 | * @return 字典项列表 23 | */ 24 | List getDictItems(ReqDictItem reqDictItem); 25 | 26 | /** 27 | * 通过code删除字典项 28 | * 29 | * @param dictCode 字典编码 30 | * @return 是否删除成功 31 | */ 32 | boolean deleteDictItemsByCode(String dictCode); 33 | 34 | Result> queryByCode(String dictCode); 35 | } 36 | --------------------------------------------------------------------------------