├── .gitattributes ├── .gitignore ├── LICENSE ├── README.md ├── doc ├── sql │ ├── dm │ │ └── dm.rar │ ├── mysql │ │ ├── db_jeelowcode.rar │ │ ├── db_jeelowcodelog.sql │ │ ├── update │ │ │ └── v1.0.0-v1.0.1.sql │ │ ├── 当前版本v1.0.1.txt │ │ └── 说明.txt │ ├── oracle │ │ └── oracle.rar │ └── pgsql │ │ └── pgsql.rar └── ui │ └── jeelowcode-ui-admin-vue3 │ └── README.md ├── jeelowcode-admin ├── Dockerfile ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── jeelowcode │ │ └── server │ │ └── JeeLowCodeApplication.java │ └── resources │ ├── application-local.yaml │ ├── application-prod.yaml │ ├── application.yaml │ └── logback-spring.xml ├── jeelowcode-core ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── jeelowcode │ │ └── core │ │ └── framework │ │ ├── adapter │ │ └── YudaoAdapter.java │ │ ├── config │ │ ├── aspect │ │ │ ├── enhance │ │ │ │ ├── JeeLowCodeAnnoaionAspectjSQL.java │ │ │ │ ├── JeeLowCodeAnnotationAspectjJAVA.java │ │ │ │ ├── criteria │ │ │ │ │ ├── AndCriteriaFilterAdvicePlugin.java │ │ │ │ │ ├── BaseCriterFilterAdvicePlugin.java │ │ │ │ │ ├── DifferenceCriteriaFilterAdvicePlugin.java │ │ │ │ │ ├── IntersectionCriteriaFilterAdvicePlugin.java │ │ │ │ │ ├── OrCriteriaFilterAdvicePlugin.java │ │ │ │ │ └── UnionCriteriaFilterAdvicePlugin.java │ │ │ │ ├── model │ │ │ │ │ ├── BaseEnhanceContext.java │ │ │ │ │ ├── BuildEnhanceContext.java │ │ │ │ │ ├── BuildSqlEnhanceContext.java │ │ │ │ │ ├── EnhanceContext.java │ │ │ │ │ ├── EnhanceParam.java │ │ │ │ │ ├── EnhanceRespModel.java │ │ │ │ │ ├── EnhanceResult.java │ │ │ │ │ ├── JavaEnhanceEnum.java │ │ │ │ │ └── JavaEnhanceEventState.java │ │ │ │ └── plugin │ │ │ │ │ ├── AfterAdvicePlugin.java │ │ │ │ │ ├── AroundAdvicePlugin.java │ │ │ │ │ ├── BaseAdvicePlugin.java │ │ │ │ │ ├── BeforeAdvicePlugin.java │ │ │ │ │ ├── PluginManager.java │ │ │ │ │ └── ThrowAdvicePlugin.java │ │ │ ├── enhancereport │ │ │ │ ├── JeeLowCodeAnnotationAspectjReport.java │ │ │ │ ├── model │ │ │ │ │ ├── BuildEnhanceReportContext.java │ │ │ │ │ ├── EnhanceReportContext.java │ │ │ │ │ └── EnhanceReportParam.java │ │ │ │ └── plugin │ │ │ │ │ ├── ReportAfterAdvicePlugin.java │ │ │ │ │ ├── ReportBaseAdvicePlugin.java │ │ │ │ │ └── ReportPluginManager.java │ │ │ └── nologin │ │ │ │ └── JeeLowCodeNoLoginViewDbFormAspect.java │ │ ├── btncommand │ │ │ ├── ButtonInvoker.java │ │ │ ├── button │ │ │ │ ├── AddBatchButtonCommand.java │ │ │ │ ├── AddButtonCommand.java │ │ │ │ ├── DefinableButtonCommand.java │ │ │ │ ├── DelButtonCommand.java │ │ │ │ ├── DetailsButtonCommand.java │ │ │ │ ├── EditBatchButtonCommand.java │ │ │ │ ├── EditButtonCommand.java │ │ │ │ ├── ExportButtonCommand.java │ │ │ │ ├── ExportTemplateButtonCommand.java │ │ │ │ ├── IButtonCommand.java │ │ │ │ ├── ImportButtonCommand.java │ │ │ │ ├── ListButtonCommand.java │ │ │ │ └── SummaryButtonCommand.java │ │ │ ├── definable │ │ │ │ ├── DefinableButtonPlugin.java │ │ │ │ └── DefinablePluginManager.java │ │ │ ├── param │ │ │ │ ├── ButtonParamAdd.java │ │ │ │ ├── ButtonParamAddBatch.java │ │ │ │ ├── ButtonParamDefinable.java │ │ │ │ ├── ButtonParamDel.java │ │ │ │ ├── ButtonParamDetail.java │ │ │ │ ├── ButtonParamEdit.java │ │ │ │ ├── ButtonParamEditBatch.java │ │ │ │ ├── ButtonParamExport.java │ │ │ │ ├── ButtonParamExportTemplate.java │ │ │ │ ├── ButtonParamImport.java │ │ │ │ ├── ButtonParamList.java │ │ │ │ ├── ButtonParamReportExport.java │ │ │ │ ├── ButtonParamReportList.java │ │ │ │ └── ButtonParamSummary.java │ │ │ └── receiver │ │ │ │ ├── ButtonReceiverAdd.java │ │ │ │ ├── ButtonReceiverAddBatch.java │ │ │ │ ├── ButtonReceiverBase.java │ │ │ │ ├── ButtonReceiverDefinable.java │ │ │ │ ├── ButtonReceiverDel.java │ │ │ │ ├── ButtonReceiverDetail.java │ │ │ │ ├── ButtonReceiverEdit.java │ │ │ │ ├── ButtonReceiverEditBatch.java │ │ │ │ ├── ButtonReceiverExport.java │ │ │ │ ├── ButtonReceiverExportTemplate.java │ │ │ │ ├── ButtonReceiverImport.java │ │ │ │ ├── ButtonReceiverList.java │ │ │ │ ├── ButtonReceiverReportExport.java │ │ │ │ ├── ButtonReceiverReportList.java │ │ │ │ ├── ButtonReceiverSummary.java │ │ │ │ └── IButtonCommandReceiver.java │ │ ├── job │ │ │ ├── ClearExcelDataJob.java │ │ │ └── SaveModelUsageRecordsJob.java │ │ ├── listener │ │ │ └── JeeLowCodeListener.java │ │ ├── log │ │ │ ├── ApiLogAspect.java │ │ │ ├── ApiLogEvent.java │ │ │ └── ApiLogListener.java │ │ ├── validate │ │ │ ├── DbFormCopyValidate.java │ │ │ ├── ReportCopyValidate.java │ │ │ └── TableNameValidate.java │ │ └── virtualization │ │ │ ├── VirtualizationFieldPlugin.java │ │ │ └── VirtualizationFieldPluginManager.java │ │ ├── controller │ │ ├── AdapterController.java │ │ ├── ApiLogController.java │ │ ├── BaseController.java │ │ ├── ButtonController.java │ │ ├── DbFormController.java │ │ ├── DbFormDataController.java │ │ ├── DbFormRoleController.java │ │ ├── DesFormController.java │ │ ├── EnhanceJavaController.java │ │ ├── EnhanceJsController.java │ │ ├── EnhanceSqlController.java │ │ ├── ExcelController.java │ │ ├── GroupDbFormController.java │ │ ├── GroupDesFormController.java │ │ ├── GroupReportController.java │ │ ├── HistoryController.java │ │ ├── OpenController.java │ │ ├── ReportController.java │ │ └── ReportDataController.java │ │ ├── enhance │ │ └── example │ │ │ ├── dbform │ │ │ ├── maindate │ │ │ │ └── ExampleMainDateAroundEnhanceList.java │ │ │ └── student │ │ │ │ ├── ExampleStudentAfterEnhanceDelete.java │ │ │ │ ├── ExampleStudentAfterEnhanceDetail.java │ │ │ │ ├── ExampleStudentAfterEnhancePage.java │ │ │ │ ├── ExampleStudentAroundEnhanceDetail.java │ │ │ │ ├── ExampleStudentAroundEnhancePage.java │ │ │ │ ├── ExampleStudentBeforeEnhanceAdd.java │ │ │ │ ├── ExampleStudentBeforeEnhanceDetail.java │ │ │ │ ├── ExampleStudentBeforeEnhanceEdit.java │ │ │ │ ├── ExampleStudentBeforeEnhanceExport.java │ │ │ │ ├── ExampleStudentBeforeEnhanceImport.java │ │ │ │ ├── ExampleStudentBeforeEnhanceList.java │ │ │ │ ├── ExampleStudentBeforeEnhancePage.java │ │ │ │ ├── ExampleStudentBeforeEnhanceSummary.java │ │ │ │ └── ExampleStudentThrowEnhancePage.java │ │ │ └── report │ │ │ ├── lin │ │ │ └── ExampleLinReportClassEnhance.java │ │ │ └── xtsy │ │ │ ├── ExampleMemberProductPercentageReportEnhance.java │ │ │ ├── ExampleMemberRealtimeVisitsReportEnhance.java │ │ │ ├── ExampleMemberSaleReportEnhance.java │ │ │ ├── ExampleSytjSyzdmkReportEnhance.java │ │ │ ├── ExampleSytjSyzsmkReportEnhance.java │ │ │ ├── ExampleTrafficStatisticsReportEnhance.java │ │ │ ├── ExampleXtsyFormReportEnhance.java │ │ │ └── ExampleXtsyLineReportEnhance.java │ │ ├── entity │ │ ├── DesformEntity.java │ │ ├── EnhanceJavaEntity.java │ │ ├── EnhanceJsEntity.java │ │ ├── EnhanceSqlEntity.java │ │ ├── ExcelFileDataEntity.java │ │ ├── ExcelFileEntity.java │ │ ├── FormButtonEntity.java │ │ ├── FormEntity.java │ │ ├── FormFieldDictEntity.java │ │ ├── FormFieldEntity.java │ │ ├── FormFieldExportEntity.java │ │ ├── FormFieldForeignkeyEntity.java │ │ ├── FormFieldQueryEntity.java │ │ ├── FormFieldWebEntity.java │ │ ├── FormIndexEntity.java │ │ ├── FormRoleButtonEntity.java │ │ ├── FormRoleDataRuleEntity.java │ │ ├── FormRoleDataTenantEntity.java │ │ ├── FormRoleFieldEntity.java │ │ ├── FormSummaryEntity.java │ │ ├── GroupDbFormEntity.java │ │ ├── GroupDesFormEntity.java │ │ ├── GroupReportEntity.java │ │ ├── HistoryDbformEntity.java │ │ ├── HistoryDesformEntity.java │ │ ├── JeeLowCodeConfigEntity.java │ │ ├── LogModuleUsageRecordsEntity.java │ │ ├── LogRequestApiEntity.java │ │ ├── LogRequestErrorApiEntity.java │ │ ├── ReportEntity.java │ │ └── ReportFieldEntity.java │ │ ├── mapper │ │ ├── AdapterMapper.java │ │ ├── DesFormMapper.java │ │ ├── EnhanceJavaMapper.java │ │ ├── EnhanceJsMapper.java │ │ ├── EnhanceSqlMapper.java │ │ ├── ExcelFileDataMapper.java │ │ ├── ExcelFileMapper.java │ │ ├── FormButtonMapper.java │ │ ├── FormFieldDictMapper.java │ │ ├── FormFieldExportMapper.java │ │ ├── FormFieldForeignkeyMapper.java │ │ ├── FormFieldMapper.java │ │ ├── FormFieldQueryMapper.java │ │ ├── FormFieldWebMapper.java │ │ ├── FormIndexMapper.java │ │ ├── FormMapper.java │ │ ├── FormRoleButtonMapper.java │ │ ├── FormRoleDataRuleMapper.java │ │ ├── FormRoleDataTenantMapper.java │ │ ├── FormRoleFieldMapper.java │ │ ├── FormSummaryMapper.java │ │ ├── GroupDbFormMapper.java │ │ ├── GroupDesFormMapper.java │ │ ├── GroupReportMapper.java │ │ ├── HistoryDbFormMapper.java │ │ ├── HistoryDesFormMapper.java │ │ ├── JeeLowCodeConfigMapper.java │ │ ├── JeeLowCodeMapper.java │ │ ├── JeeLowCodeSqlMapper.java │ │ ├── LogApiErrorMapper.java │ │ ├── LogApiMapper.java │ │ ├── LogModuleUsageRecordsMapper.java │ │ ├── ReportFieldMapper.java │ │ ├── ReportMapper.java │ │ └── example │ │ │ ├── ExampleDbFormMapper.java │ │ │ └── ExampleReportMapper.java │ │ ├── params │ │ ├── CopyEnhanceParam.java │ │ ├── DataUniqueParam.java │ │ ├── DbFormAddOrUpdateParam.java │ │ ├── DesFormAddOrUpdateParam.java │ │ ├── DictLabelParam.java │ │ ├── DictTableParam.java │ │ ├── LogRequestApiParam.java │ │ ├── PageDbFormParam.java │ │ ├── PageDesFormParam.java │ │ ├── PageReportParam.java │ │ ├── ReportAddOrUpdateParam.java │ │ ├── ReportPageParam.java │ │ ├── SaveImportDataParam.java │ │ ├── TableDictParam.java │ │ ├── TableLabelParam.java │ │ ├── TreeParentParam.java │ │ ├── UpdateFileDataParam.java │ │ ├── model │ │ │ ├── AllTableFieldModel.java │ │ │ ├── AllTableModel.java │ │ │ ├── DataSourceConfigModel.java │ │ │ ├── DbFieldCodeListModel.java │ │ │ ├── ExcelImportDataDictModel.java │ │ │ ├── ExcelImportResultModel.java │ │ │ ├── ExcelModel.java │ │ │ ├── ExcelTemplateModel.java │ │ │ ├── ExplainDatasourceSqlModel.java │ │ │ ├── ExplainSqlFieldModel.java │ │ │ ├── LogRequestApiModel.java │ │ │ ├── TableModel.java │ │ │ └── WebFormatConfigModel.java │ │ └── vo │ │ │ ├── DbFormButtonVo.java │ │ │ ├── DbFormConfigVo.java │ │ │ ├── DbFormDeletedVo.java │ │ │ ├── DbFormEnhanceJavaVo.java │ │ │ ├── DbFormEnhanceJsVo.java │ │ │ ├── DbFormEnhanceSqlVo.java │ │ │ ├── DbFormFieldDictVo.java │ │ │ ├── DbFormFieldExportVo.java │ │ │ ├── DbFormFieldForeignkeyVo.java │ │ │ ├── DbFormFieldIdVo.java │ │ │ ├── DbFormFieldQueryVo.java │ │ │ ├── DbFormFieldSettingVo.java │ │ │ ├── DbFormFieldVo.java │ │ │ ├── DbFormFieldWebVo.java │ │ │ ├── DbFormIndexVo.java │ │ │ ├── DbFormSummaryVo.java │ │ │ ├── DbFormVo.java │ │ │ ├── DesformEntityVo.java │ │ │ ├── FieldFormattingVo.java │ │ │ ├── FormEntityPageVo.java │ │ │ ├── FormFieldEntityExp.java │ │ │ ├── FormOrderByVo.java │ │ │ ├── NotInDbformTablesVo.java │ │ │ ├── PageVo.java │ │ │ ├── ReportConfigVo.java │ │ │ ├── ReportDeletedVo.java │ │ │ ├── ReportFieldIdVo.java │ │ │ ├── ReportFieldVo.java │ │ │ ├── ReportVo.java │ │ │ ├── SummaryTopModel.java │ │ │ ├── TableFieldModelVo.java │ │ │ ├── TableLabelVo.java │ │ │ ├── history │ │ │ ├── HistoryJavaVo.java │ │ │ ├── HistoryJsVo.java │ │ │ └── HistorySqlVo.java │ │ │ ├── role │ │ │ ├── DbFormRoleButtonVo.java │ │ │ ├── DbFormRoleDataRuleVo.java │ │ │ ├── DbFormRoleDataTenantVo.java │ │ │ └── DbFormRoleFieldVo.java │ │ │ ├── webconfig │ │ │ ├── WebConfigButtonVo.java │ │ │ ├── WebConfigFieldDictVo.java │ │ │ ├── WebConfigFieldExportVo.java │ │ │ ├── WebConfigFieldForeignkeyVo.java │ │ │ ├── WebConfigFieldQueryVo.java │ │ │ ├── WebConfigFieldSettingVo.java │ │ │ ├── WebConfigFieldVo.java │ │ │ ├── WebConfigFieldWebVo.java │ │ │ ├── WebConfigFormVo.java │ │ │ ├── WebConfigJsVo.java │ │ │ ├── WebConfigRoleFieldVo.java │ │ │ └── WebConfigVo.java │ │ │ └── webconfigreport │ │ │ ├── WebConfigReportFieldVo.java │ │ │ ├── WebConfigReportVo.java │ │ │ └── WebConfigVo.java │ │ ├── service │ │ ├── IApiLogService.java │ │ ├── IBatchService.java │ │ ├── IDbFormRoleService.java │ │ ├── IDesFormService.java │ │ ├── IEnhanceJavaService.java │ │ ├── IEnhanceJsService.java │ │ ├── IEnhanceSqlService.java │ │ ├── IExcelFileDataService.java │ │ ├── IExcelFileService.java │ │ ├── IExcelService.java │ │ ├── IFormButtonService.java │ │ ├── IFormService.java │ │ ├── IFrameService.java │ │ ├── IFrameSqlService.java │ │ ├── IGroupDbFormService.java │ │ ├── IGroupDesFormService.java │ │ ├── IGroupReportService.java │ │ ├── IHistoryService.java │ │ ├── IJeeLowCodeConfigService.java │ │ ├── IJeeLowCodeService.java │ │ ├── IReportService.java │ │ └── impl │ │ │ ├── ApiLogServiceImpl.java │ │ │ ├── BatchServiceImpl.java │ │ │ ├── DbFormRoleServiceImpl.java │ │ │ ├── DesFormServiceImpl.java │ │ │ ├── EnhanceJavaServiceImpl.java │ │ │ ├── EnhanceJsServiceImpl.java │ │ │ ├── EnhanceSqlServiceImpl.java │ │ │ ├── ExcelFileDataServiceImpl.java │ │ │ ├── ExcelFileServiceImpl.java │ │ │ ├── ExcelServiceImpl.java │ │ │ ├── FormButtonServiceImpl.java │ │ │ ├── FormServiceImpl.java │ │ │ ├── FrameServiceImpl.java │ │ │ ├── FrameSqlServiceImpl.java │ │ │ ├── GroupDbFormServiceImpl.java │ │ │ ├── GroupDesFormServiceImpl.java │ │ │ ├── GroupReportServiceImpl.java │ │ │ ├── HistoryServiceImpl.java │ │ │ ├── JeeLowCodeConfigServiceImpl.java │ │ │ ├── JeeLowCodeServiceImpl.java │ │ │ └── ReportServiceImpl.java │ │ └── utils │ │ ├── Func.java │ │ └── FuncWeb.java │ └── resources │ └── mapper │ ├── example │ ├── ExampleDbFormMapper.xml │ └── ExampleReportMapper.xml │ └── framework │ ├── AdapterMapper.xml │ ├── JeeLowCodeMapper.xml │ └── LogApiMapper.xml ├── jeelowcode-dependencies └── pom.xml ├── jeelowcode-framework ├── jeelowcode-excel │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── jeelowcode │ │ └── framework │ │ └── excel │ │ ├── JeeLowCodeExcelUtils.java │ │ ├── handler │ │ ├── CustomSheetWriteHandler.java │ │ └── RowFormatSetTextHandler.java │ │ ├── listener │ │ └── JeeLowCodeExcelListener.java │ │ ├── model │ │ └── ExcelTitleModel.java │ │ ├── read │ │ └── ExcelImportUtils.java │ │ └── write │ │ ├── CellStyleUtils.java │ │ ├── CustomColumnWidthStyleStrategy.java │ │ └── ExcelExportUtils.java ├── jeelowcode-exception │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── jeelowcode │ │ └── framework │ │ ├── code │ │ └── JeeLowCodeErrorCode.java │ │ ├── constants │ │ └── FrameErrorCodeConstants.java │ │ └── exception │ │ ├── JeeLowCodeException.java │ │ └── JeeLowCodeMoreException.java ├── jeelowcode-global │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── jeelowcode │ │ └── framework │ │ └── global │ │ └── JeeLowCodeBaseConstant.java ├── jeelowcode-plus │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── jeelowcode │ │ │ └── framework │ │ │ └── plus │ │ │ ├── SqlHelper.java │ │ │ ├── build │ │ │ ├── ISQLExpression.java │ │ │ ├── build │ │ │ │ ├── AndExpression.java │ │ │ │ ├── TestBuild.java │ │ │ │ ├── ddl │ │ │ │ │ ├── BuildAlter.java │ │ │ │ │ ├── BuildComment.java │ │ │ │ │ ├── BuildCreateIndex.java │ │ │ │ │ ├── BuildCreateTable.java │ │ │ │ │ ├── BuildDdl.java │ │ │ │ │ ├── BuildDrop.java │ │ │ │ │ └── BuildPrimaryKey.java │ │ │ │ └── dql │ │ │ │ │ ├── BuildCondition.java │ │ │ │ │ ├── BuildDelete.java │ │ │ │ │ ├── BuildGroupBy.java │ │ │ │ │ ├── BuildHaving.java │ │ │ │ │ ├── BuildInsert.java │ │ │ │ │ ├── BuildJoin.java │ │ │ │ │ ├── BuildOrderBy.java │ │ │ │ │ ├── BuildPublicSql.java │ │ │ │ │ ├── BuildSelect.java │ │ │ │ │ ├── BuildUpdate.java │ │ │ │ │ └── BuildWhere.java │ │ │ └── buildmodel │ │ │ │ ├── ExpressionModel.java │ │ │ │ ├── SQLInterpretContext.java │ │ │ │ ├── SqlInfoBaseModel.java │ │ │ │ ├── ddl │ │ │ │ ├── FieldCommentModel.java │ │ │ │ ├── SqlInfoAlterModel.java │ │ │ │ ├── SqlInfoBaseDdlModel.java │ │ │ │ ├── SqlInfoCommentModel.java │ │ │ │ ├── SqlInfoCreateIndexModel.java │ │ │ │ ├── SqlInfoCreateModel.java │ │ │ │ ├── SqlInfoDdlModel.java │ │ │ │ ├── SqlInfoDropModel.java │ │ │ │ └── SqlInfoPrimaryKeyModel.java │ │ │ │ ├── dql │ │ │ │ ├── SqlInfoConditionModel.java │ │ │ │ ├── SqlInfoDeleteModel.java │ │ │ │ ├── SqlInfoGroupModel.java │ │ │ │ ├── SqlInfoHavingModel.java │ │ │ │ ├── SqlInfoInsertModel.java │ │ │ │ ├── SqlInfoJoinModel.java │ │ │ │ ├── SqlInfoOrderModel.java │ │ │ │ ├── SqlInfoPublicModel.java │ │ │ │ ├── SqlInfoSelectModel.java │ │ │ │ ├── SqlInfoUpdateModel.java │ │ │ │ └── SqlInfoWhereModel.java │ │ │ │ └── wrapper │ │ │ │ ├── BaseWrapper.java │ │ │ │ ├── SqlInfoDeleteWrapper.java │ │ │ │ ├── SqlInfoInsertWrapper.java │ │ │ │ ├── SqlInfoQueryWrapper.java │ │ │ │ └── SqlInfoUpdateWrapper.java │ │ │ ├── chain │ │ │ ├── AbstractSQLParser.java │ │ │ ├── SQLParserChain.java │ │ │ ├── SQLParserChainClient.java │ │ │ ├── entity │ │ │ │ ├── DataPermissionFilterEntity.java │ │ │ │ └── TenantIdFilterEntity.java │ │ │ └── parser │ │ │ │ ├── DataPermissionsSQLParser.java │ │ │ │ ├── StandardSQLParser.java │ │ │ │ └── TenantSQLParser.java │ │ │ ├── component │ │ │ ├── DbManager.java │ │ │ └── JeelowCodePlusInterceptor.java │ │ │ ├── core │ │ │ ├── conditions │ │ │ │ ├── AbstractWrapper.java │ │ │ │ ├── ISqlSegment.java │ │ │ │ ├── SharedString.java │ │ │ │ ├── Wrapper.java │ │ │ │ ├── interfaces │ │ │ │ │ ├── Compare.java │ │ │ │ │ ├── Func.java │ │ │ │ │ ├── Join.java │ │ │ │ │ └── Nested.java │ │ │ │ └── segments │ │ │ │ │ ├── AbstractISegmentList.java │ │ │ │ │ ├── ColumnSegment.java │ │ │ │ │ ├── GroupBySegmentList.java │ │ │ │ │ ├── HavingSegmentList.java │ │ │ │ │ ├── MatchSegment.java │ │ │ │ │ ├── MergeSegments.java │ │ │ │ │ ├── NormalSegmentList.java │ │ │ │ │ └── OrderBySegmentList.java │ │ │ ├── ddl │ │ │ │ ├── alter │ │ │ │ │ └── JeeLowCodeAlterTable.java │ │ │ │ ├── create │ │ │ │ │ └── JeeLowCodeCreateTable.java │ │ │ │ └── drop │ │ │ │ │ └── JeeLowCodeDropTable.java │ │ │ ├── dql │ │ │ │ ├── delete │ │ │ │ │ └── JeeLowCodeDeleteWrapper.java │ │ │ │ ├── insert │ │ │ │ │ └── JeeLowCodeInsertWrapper.java │ │ │ │ ├── select │ │ │ │ │ ├── JeeLowCodeQueryWrapper.java │ │ │ │ │ └── Query.java │ │ │ │ └── update │ │ │ │ │ ├── JeeLowCodeUpdateWrapper.java │ │ │ │ │ └── Update.java │ │ │ ├── enums │ │ │ │ ├── SqlKeyword.java │ │ │ │ ├── SqlLike.java │ │ │ │ └── WrapperKeyword.java │ │ │ ├── exceptions │ │ │ │ └── JeelowcodeSqlException.java │ │ │ ├── model │ │ │ │ ├── OrderByModel.java │ │ │ │ ├── SqlFormatModel.java │ │ │ │ ├── TableFieldModel.java │ │ │ │ └── WhereModel.java │ │ │ └── toolkit │ │ │ │ ├── Assert.java │ │ │ │ ├── CollectionUtils.java │ │ │ │ ├── Constants.java │ │ │ │ ├── ExceptionUtils.java │ │ │ │ ├── SerializationUtils.java │ │ │ │ ├── StringPool.java │ │ │ │ ├── StringUtils.java │ │ │ │ ├── Wrappers.java │ │ │ │ └── sql │ │ │ │ ├── SqlInjectionUtils.java │ │ │ │ ├── SqlScriptUtils.java │ │ │ │ └── SqlUtils.java │ │ │ ├── entity │ │ │ ├── DbColunmTypesEntity.java │ │ │ ├── FieldModel.java │ │ │ ├── SqlInfoEntity.java │ │ │ └── SqlResultEntity.java │ │ │ ├── enums │ │ │ └── DbTypeEnum.java │ │ │ ├── flyweight │ │ │ └── FlyweightDBFactory.java │ │ │ ├── template │ │ │ ├── AbstractDbTemplate.java │ │ │ ├── DbDm.java │ │ │ ├── DbMysql.java │ │ │ ├── DbOracle.java │ │ │ └── DbPostgresql.java │ │ │ └── utils │ │ │ └── PlusUtils.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── jeelowcode-tenant │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── jeelowcode │ │ │ └── framework │ │ │ └── tenant │ │ │ ├── annotation │ │ │ └── JeeLowCodeTenantIgnore.java │ │ │ ├── aspect │ │ │ └── JeeLowCodeTenantAspect.java │ │ │ ├── auto │ │ │ └── JeeLowCodeTenantAutoConfiguration.java │ │ │ ├── parse │ │ │ └── JeeLowCodeTenantParse.java │ │ │ └── utils │ │ │ └── JeeLowCodeTenantUtils.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── jeelowcode-utils │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── jeelowcode │ │ │ └── framework │ │ │ └── utils │ │ │ ├── adapter │ │ │ ├── IJeeLowCodeAdapter.java │ │ │ └── IJeelowCodeValidate.java │ │ │ ├── annotation │ │ │ ├── ApiDecryptAes.java │ │ │ ├── ApiEncryptAes.java │ │ │ ├── JeeLowCodeNoLoginViewDbForm.java │ │ │ ├── JeelowCodeCache.java │ │ │ └── JeelowCodeValidate.java │ │ │ ├── component │ │ │ ├── JeeLowCodeAutoConfiguration.java │ │ │ ├── cache │ │ │ │ └── JeelowCodeCacheAspect.java │ │ │ ├── crypto │ │ │ │ ├── ApiDecryptRequestBodyAdvice.java │ │ │ │ └── ApiDecryptResponseBodyAdvice.java │ │ │ ├── defaultval │ │ │ │ └── DefaultValAspect.java │ │ │ ├── mybatis │ │ │ │ ├── CustomWrapper.java │ │ │ │ └── MapWrapperFactory.java │ │ │ ├── pool │ │ │ │ └── SyncPoolConfiguration.java │ │ │ ├── properties │ │ │ │ └── JeeLowCodeProperties.java │ │ │ ├── redis │ │ │ │ ├── JeeLowCodeRedisConfiguration.java │ │ │ │ ├── JeeLowCodeRedisJsonUtils.java │ │ │ │ └── JeeLowCodeRedisUtils.java │ │ │ └── validate │ │ │ │ └── JeelowCodeValidateAspect.java │ │ │ ├── constant │ │ │ ├── EnhanceConstant.java │ │ │ ├── JeeLowCodeConstant.java │ │ │ └── JeeRedisConstants.java │ │ │ ├── enums │ │ │ ├── AuthTypeEnum.java │ │ │ ├── DbFormTypeEnum.java │ │ │ ├── DefaultDbFieldEnum.java │ │ │ ├── DictTypeEnum.java │ │ │ ├── JeeLowCodeFieldTypeEnum.java │ │ │ ├── ParamEnum.java │ │ │ ├── QueryModelEnum.java │ │ │ ├── SqlParamEnum.java │ │ │ ├── TableClassifyEnum.java │ │ │ ├── TableType2Enum.java │ │ │ ├── TableTypeEnum.java │ │ │ ├── ThemeTemplateEnum.java │ │ │ └── YNEnum.java │ │ │ ├── global │ │ │ ├── body │ │ │ │ ├── GlobalJeeLowCodeResponseBodyHandler.java │ │ │ │ ├── LocalDateTimeDeserializer.java │ │ │ │ ├── LocalDateTimeSerializer.java │ │ │ │ └── NumberSerializer.java │ │ │ └── exeption │ │ │ │ ├── JeeLowCodeGlobalException.java │ │ │ │ └── JeeLowCodeGlobalExceptionHandler.java │ │ │ ├── model │ │ │ ├── ExecFormReqBody.java │ │ │ ├── ExecFormRespBody.java │ │ │ ├── ExecListReqBody.java │ │ │ ├── ExecListRespBody.java │ │ │ ├── ExecuteEnhanceModel.java │ │ │ ├── JeeLowCodeDept.java │ │ │ ├── JeeLowCodeDict.java │ │ │ ├── JeeLowCodeDictTable.java │ │ │ ├── JeeLowCodeRole.java │ │ │ ├── JeeLowCodeUser.java │ │ │ ├── JeeLowTenant.java │ │ │ ├── ResultDataModel.java │ │ │ └── global │ │ │ │ ├── BaseEntity.java │ │ │ │ ├── BaseTenantEntity.java │ │ │ │ └── BaseWebResult.java │ │ │ ├── params │ │ │ ├── JeeLowCodeDeptParam.java │ │ │ ├── JeeLowCodeDictParam.java │ │ │ ├── JeeLowCodeDictTableParam.java │ │ │ └── JeeLowCodeUserParam.java │ │ │ ├── tool │ │ │ ├── AesUtil.java │ │ │ ├── Base64Util.java │ │ │ ├── CharPool.java │ │ │ ├── CollectionUtil.java │ │ │ ├── Holder.java │ │ │ ├── IpUtils.java │ │ │ ├── NumberUtil.java │ │ │ ├── RandomType.java │ │ │ ├── StrSpliter.java │ │ │ ├── StringPool.java │ │ │ ├── StringUtil.java │ │ │ └── spring │ │ │ │ └── SpringUtils.java │ │ │ └── utils │ │ │ ├── FuncBase.java │ │ │ ├── FuncWebBase.java │ │ │ └── JeeLowCodeUtils.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports └── pom.xml ├── jeelowcode-module ├── jeelowcode-module-api │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── jeelowcode │ │ └── module │ │ └── api │ │ └── JeeLowCodeApi.java ├── jeelowcode-module-biz │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── jeelowcode │ │ │ └── module │ │ │ ├── api │ │ │ └── JeeLowCodeApiImpl.java │ │ │ └── biz │ │ │ ├── component │ │ │ ├── btncommand │ │ │ │ ├── ADefinableButtonPlugin.java │ │ │ │ └── BDefinableButtonPlugin.java │ │ │ └── virtualization │ │ │ │ ├── AVirtualizationPlugin.java │ │ │ │ └── BVirtualizationPlugin.java │ │ │ ├── controller │ │ │ └── DemoController.java │ │ │ ├── demo │ │ │ └── test │ │ │ │ ├── DemoAfterAdvicePlugin.java │ │ │ │ ├── DemoAfterAdvicePlugin02.java │ │ │ │ ├── DemoAfterAdvicePlugin03.java │ │ │ │ ├── DemoAroundAdvicePlugin.java │ │ │ │ ├── DemoBeforeAdvicePlugin.java │ │ │ │ ├── TestAfterAdvicePlugin01.java │ │ │ │ ├── TestAfterAdvicePlugin02.java │ │ │ │ ├── TestCriterFilter.java │ │ │ │ ├── TestListAndPageEnhance.java │ │ │ │ ├── TestPageEnhance.java │ │ │ │ └── TestUpdateEnhance.java │ │ │ ├── enhance │ │ │ ├── LinClassEnhance.java │ │ │ └── LinTestEnhance.java │ │ │ ├── mapper │ │ │ └── DemoMapper.java │ │ │ └── service │ │ │ ├── IDemoService.java │ │ │ └── impl │ │ │ └── DemoServiceImpl.java │ │ └── resources │ │ ├── mapper │ │ └── DemoMapper.xml │ │ └── 操作指引.md └── pom.xml ├── lombok.config ├── pom.xml ├── yudao-framework ├── pom.xml ├── yudao-common │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── cn │ │ │ └── iocoder │ │ │ └── yudao │ │ │ └── framework │ │ │ └── common │ │ │ ├── core │ │ │ ├── IntArrayValuable.java │ │ │ └── KeyValue.java │ │ │ ├── enums │ │ │ ├── CommonStatusEnum.java │ │ │ ├── DocumentEnum.java │ │ │ ├── TerminalEnum.java │ │ │ ├── UserTypeEnum.java │ │ │ └── WebFilterOrderEnum.java │ │ │ ├── exception │ │ │ ├── ErrorCode.java │ │ │ ├── ServerException.java │ │ │ ├── ServiceException.java │ │ │ ├── enums │ │ │ │ ├── GlobalErrorCodeConstants.java │ │ │ │ └── ServiceErrorCodeRange.java │ │ │ └── util │ │ │ │ └── ServiceExceptionUtil.java │ │ │ ├── package-info.java │ │ │ ├── pojo │ │ │ ├── CommonResult.java │ │ │ ├── PageParam.java │ │ │ ├── PageResult.java │ │ │ ├── SortablePageParam.java │ │ │ └── SortingField.java │ │ │ ├── util │ │ │ ├── cache │ │ │ │ └── CacheUtils.java │ │ │ ├── collection │ │ │ │ ├── ArrayUtils.java │ │ │ │ ├── CollectionUtils.java │ │ │ │ ├── MapUtils.java │ │ │ │ └── SetUtils.java │ │ │ ├── date │ │ │ │ ├── DateUtils.java │ │ │ │ └── LocalDateTimeUtils.java │ │ │ ├── http │ │ │ │ └── HttpUtils.java │ │ │ ├── io │ │ │ │ ├── FileUtils.java │ │ │ │ └── IoUtils.java │ │ │ ├── json │ │ │ │ └── JsonUtils.java │ │ │ ├── monitor │ │ │ │ └── TracerUtils.java │ │ │ ├── number │ │ │ │ ├── MoneyUtils.java │ │ │ │ └── NumberUtils.java │ │ │ ├── object │ │ │ │ ├── BeanUtils.java │ │ │ │ ├── ObjectUtils.java │ │ │ │ └── PageUtils.java │ │ │ ├── package-info.java │ │ │ ├── servlet │ │ │ │ └── ServletUtils.java │ │ │ ├── spring │ │ │ │ ├── SpringAopUtils.java │ │ │ │ └── SpringExpressionUtils.java │ │ │ ├── string │ │ │ │ └── StrUtils.java │ │ │ └── validation │ │ │ │ └── ValidationUtils.java │ │ │ └── validation │ │ │ ├── InEnum.java │ │ │ ├── InEnumCollectionValidator.java │ │ │ ├── InEnumValidator.java │ │ │ ├── Mobile.java │ │ │ ├── MobileValidator.java │ │ │ ├── Telephone.java │ │ │ ├── TelephoneValidator.java │ │ │ └── package-info.java │ │ └── test │ │ └── java │ │ └── cn │ │ └── iocoder │ │ └── yudao │ │ └── framework │ │ └── common │ │ └── util │ │ └── collection │ │ └── CollectionUtilsTest.java ├── yudao-spring-boot-starter-biz-data-permission │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── cn │ │ │ └── iocoder │ │ │ └── yudao │ │ │ └── framework │ │ │ └── datapermission │ │ │ ├── config │ │ │ ├── YudaoDataPermissionAutoConfiguration.java │ │ │ └── YudaoDeptDataPermissionAutoConfiguration.java │ │ │ ├── core │ │ │ ├── annotation │ │ │ │ └── DataPermission.java │ │ │ ├── aop │ │ │ │ ├── DataPermissionAnnotationAdvisor.java │ │ │ │ ├── DataPermissionAnnotationInterceptor.java │ │ │ │ └── DataPermissionContextHolder.java │ │ │ ├── db │ │ │ │ └── DataPermissionDatabaseInterceptor.java │ │ │ ├── rule │ │ │ │ ├── DataPermissionRule.java │ │ │ │ ├── DataPermissionRuleFactory.java │ │ │ │ ├── DataPermissionRuleFactoryImpl.java │ │ │ │ └── dept │ │ │ │ │ ├── DeptDataPermissionRule.java │ │ │ │ │ ├── DeptDataPermissionRuleCustomizer.java │ │ │ │ │ └── package-info.java │ │ │ └── util │ │ │ │ └── DataPermissionUtils.java │ │ │ └── package-info.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── yudao-spring-boot-starter-biz-dict │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── cn │ │ │ └── iocoder │ │ │ └── yudao │ │ │ └── framework │ │ │ └── dict │ │ │ ├── config │ │ │ └── YudaoDictAutoConfiguration.java │ │ │ ├── core │ │ │ ├── package-info.java │ │ │ └── util │ │ │ │ └── DictFrameworkUtils.java │ │ │ └── package-info.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── yudao-spring-boot-starter-biz-ip │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── cn │ │ │ │ └── iocoder │ │ │ │ └── yudao │ │ │ │ └── framework │ │ │ │ └── ip │ │ │ │ ├── core │ │ │ │ ├── Area.java │ │ │ │ ├── enums │ │ │ │ │ └── AreaTypeEnum.java │ │ │ │ └── utils │ │ │ │ │ ├── AreaUtils.java │ │ │ │ │ └── IPUtils.java │ │ │ │ └── package-info.java │ │ └── resources │ │ │ ├── area.csv │ │ │ └── ip2region.xdb │ │ └── test │ │ └── java │ │ └── cn │ │ └── iocoder │ │ └── yudao │ │ └── framework │ │ └── ip │ │ └── core │ │ └── utils │ │ ├── AreaUtilsTest.java │ │ └── IPUtilsTest.java ├── yudao-spring-boot-starter-biz-operatelog │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── cn │ │ │ └── iocoder │ │ │ └── yudao │ │ │ └── framework │ │ │ └── operatelog │ │ │ ├── config │ │ │ └── YudaoOperateLogAutoConfiguration.java │ │ │ ├── core │ │ │ ├── annotations │ │ │ │ └── OperateLog.java │ │ │ ├── aop │ │ │ │ └── OperateLogAspect.java │ │ │ ├── enums │ │ │ │ └── OperateTypeEnum.java │ │ │ ├── package-info.java │ │ │ ├── service │ │ │ │ ├── OperateLog.java │ │ │ │ ├── OperateLogFrameworkService.java │ │ │ │ └── OperateLogFrameworkServiceImpl.java │ │ │ └── util │ │ │ │ └── OperateLogUtils.java │ │ │ └── package-info.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── yudao-spring-boot-starter-biz-tenant │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ ├── cn │ │ │ └── iocoder │ │ │ │ └── yudao │ │ │ │ └── framework │ │ │ │ └── tenant │ │ │ │ ├── config │ │ │ │ ├── TenantProperties.java │ │ │ │ └── YudaoTenantAutoConfiguration.java │ │ │ │ ├── core │ │ │ │ ├── aop │ │ │ │ │ ├── TenantIgnore.java │ │ │ │ │ └── TenantIgnoreAspect.java │ │ │ │ ├── context │ │ │ │ │ └── TenantContextHolder.java │ │ │ │ ├── db │ │ │ │ │ ├── TenantBaseDO.java │ │ │ │ │ └── TenantDatabaseInterceptor.java │ │ │ │ ├── job │ │ │ │ │ ├── TenantJob.java │ │ │ │ │ └── TenantJobAspect.java │ │ │ │ ├── mq │ │ │ │ │ ├── kafka │ │ │ │ │ │ ├── TenantKafkaEnvironmentPostProcessor.java │ │ │ │ │ │ └── TenantKafkaProducerInterceptor.java │ │ │ │ │ ├── rabbitmq │ │ │ │ │ │ ├── TenantRabbitMQInitializer.java │ │ │ │ │ │ └── TenantRabbitMQMessagePostProcessor.java │ │ │ │ │ ├── redis │ │ │ │ │ │ └── TenantRedisMessageInterceptor.java │ │ │ │ │ └── rocketmq │ │ │ │ │ │ ├── TenantRocketMQConsumeMessageHook.java │ │ │ │ │ │ ├── TenantRocketMQInitializer.java │ │ │ │ │ │ └── TenantRocketMQSendMessageHook.java │ │ │ │ ├── redis │ │ │ │ │ └── TenantRedisCacheManager.java │ │ │ │ ├── security │ │ │ │ │ └── TenantSecurityWebFilter.java │ │ │ │ ├── service │ │ │ │ │ ├── TenantFrameworkService.java │ │ │ │ │ └── TenantFrameworkServiceImpl.java │ │ │ │ ├── util │ │ │ │ │ └── TenantUtils.java │ │ │ │ └── web │ │ │ │ │ └── TenantContextWebFilter.java │ │ │ │ └── package-info.java │ │ └── org │ │ │ └── springframework │ │ │ └── messaging │ │ │ └── handler │ │ │ └── invocation │ │ │ └── InvocableHandlerMethod.java │ │ └── resources │ │ └── META-INF │ │ ├── spring.factories │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── yudao-spring-boot-starter-captcha │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── cn │ │ │ └── iocoder │ │ │ └── yudao │ │ │ └── framework │ │ │ └── captcha │ │ │ ├── config │ │ │ └── YudaoCaptchaConfiguration.java │ │ │ ├── core │ │ │ ├── enums │ │ │ │ └── CaptchaRedisKeyConstants.java │ │ │ └── service │ │ │ │ └── RedisCaptchaServiceImpl.java │ │ │ └── package-info.java │ │ └── resources │ │ ├── META-INF │ │ ├── services │ │ │ └── com.xingyuv.captcha.service.CaptchaCacheService │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── images │ │ ├── jigsaw │ │ ├── original │ │ │ ├── bg1.png │ │ │ ├── bg2.png │ │ │ ├── bg3.png │ │ │ ├── bg4.png │ │ │ ├── bg5.png │ │ │ ├── bg6.png │ │ │ ├── bg7.png │ │ │ ├── bg8.png │ │ │ └── bg9.png │ │ └── slidingBlock │ │ │ ├── 11 │ │ │ ├── 10.png │ │ │ ├── 11.png │ │ │ ├── 12.png │ │ │ ├── 13.png │ │ │ ├── 14.png │ │ │ ├── 15.png │ │ │ ├── 16.png │ │ │ ├── 17.png │ │ │ ├── 18.png │ │ │ ├── 19.png │ │ │ ├── 8.png │ │ │ └── 9.png │ │ │ ├── 1.png │ │ │ ├── 2.png │ │ │ ├── 3.png │ │ │ └── 4.png │ │ └── pic-click │ │ ├── bg1.png │ │ ├── bg10.png │ │ ├── bg2.png │ │ ├── bg3.png │ │ ├── bg4.png │ │ ├── bg5.png │ │ ├── bg6.png │ │ ├── bg7.png │ │ ├── bg8.png │ │ └── bg9.png ├── yudao-spring-boot-starter-excel │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── cn │ │ └── iocoder │ │ └── yudao │ │ └── framework │ │ └── excel │ │ ├── core │ │ ├── annotations │ │ │ └── DictFormat.java │ │ ├── convert │ │ │ ├── DictConvert.java │ │ │ ├── JsonConvert.java │ │ │ └── MoneyConvert.java │ │ └── util │ │ │ └── ExcelUtils.java │ │ └── package-info.java ├── yudao-spring-boot-starter-file │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── cn │ │ │ │ └── iocoder │ │ │ │ └── yudao │ │ │ │ └── framework │ │ │ │ └── file │ │ │ │ ├── config │ │ │ │ └── YudaoFileAutoConfiguration.java │ │ │ │ └── core │ │ │ │ ├── client │ │ │ │ ├── AbstractFileClient.java │ │ │ │ ├── FileClient.java │ │ │ │ ├── FileClientConfig.java │ │ │ │ ├── FileClientFactory.java │ │ │ │ ├── FileClientFactoryImpl.java │ │ │ │ ├── db │ │ │ │ │ ├── DBFileClient.java │ │ │ │ │ ├── DBFileClientConfig.java │ │ │ │ │ └── DBFileContentFrameworkDAO.java │ │ │ │ ├── ftp │ │ │ │ │ ├── FtpFileClient.java │ │ │ │ │ └── FtpFileClientConfig.java │ │ │ │ ├── local │ │ │ │ │ ├── LocalFileClient.java │ │ │ │ │ └── LocalFileClientConfig.java │ │ │ │ ├── s3 │ │ │ │ │ ├── FilePresignedUrlRespDTO.java │ │ │ │ │ ├── S3FileClient.java │ │ │ │ │ └── S3FileClientConfig.java │ │ │ │ └── sftp │ │ │ │ │ ├── SftpFileClient.java │ │ │ │ │ └── SftpFileClientConfig.java │ │ │ │ ├── enums │ │ │ │ └── FileStorageEnum.java │ │ │ │ └── utils │ │ │ │ └── FileTypeUtils.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ ├── java │ │ └── cn │ │ │ └── iocoder │ │ │ └── yudao │ │ │ └── framework │ │ │ └── file │ │ │ ├── config │ │ │ └── package-info.java │ │ │ └── core │ │ │ ├── client │ │ │ ├── ftp │ │ │ │ └── FtpFileClientTest.java │ │ │ ├── local │ │ │ │ └── LocalFileClientTest.java │ │ │ ├── s3 │ │ │ │ └── S3FileClientTest.java │ │ │ └── sftp │ │ │ │ └── SftpFileClientTest.java │ │ │ └── enums │ │ │ └── package-info.java │ │ └── resources │ │ └── file │ │ └── erweima.jpg ├── yudao-spring-boot-starter-flowable │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── cn │ │ │ └── iocoder │ │ │ └── yudao │ │ │ └── framework │ │ │ └── flowable │ │ │ ├── config │ │ │ └── YudaoFlowableConfiguration.java │ │ │ ├── core │ │ │ ├── context │ │ │ │ └── FlowableContextHolder.java │ │ │ ├── enums │ │ │ │ └── BpmnModelConstants.java │ │ │ ├── package-info.java │ │ │ ├── util │ │ │ │ ├── BpmnModelUtils.java │ │ │ │ └── FlowableUtils.java │ │ │ └── web │ │ │ │ └── FlowableWebFilter.java │ │ │ └── package-info.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── yudao-spring-boot-starter-job │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── cn │ │ │ └── iocoder │ │ │ └── yudao │ │ │ └── framework │ │ │ └── quartz │ │ │ ├── config │ │ │ ├── YudaoAsyncAutoConfiguration.java │ │ │ └── YudaoQuartzAutoConfiguration.java │ │ │ ├── core │ │ │ ├── enums │ │ │ │ └── JobDataKeyEnum.java │ │ │ ├── handler │ │ │ │ ├── JobHandler.java │ │ │ │ └── JobHandlerInvoker.java │ │ │ ├── scheduler │ │ │ │ └── SchedulerManager.java │ │ │ ├── service │ │ │ │ └── JobLogFrameworkService.java │ │ │ └── util │ │ │ │ └── CronUtils.java │ │ │ └── package-info.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── yudao-spring-boot-starter-monitor │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── cn │ │ │ └── iocoder │ │ │ └── yudao │ │ │ └── framework │ │ │ └── tracer │ │ │ ├── config │ │ │ ├── TracerProperties.java │ │ │ ├── YudaoMetricsAutoConfiguration.java │ │ │ └── YudaoTracerAutoConfiguration.java │ │ │ ├── core │ │ │ ├── annotation │ │ │ │ └── BizTrace.java │ │ │ ├── aop │ │ │ │ └── BizTraceAspect.java │ │ │ ├── filter │ │ │ │ └── TraceFilter.java │ │ │ └── util │ │ │ │ └── TracerFrameworkUtils.java │ │ │ └── package-info.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── yudao-spring-boot-starter-mq │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── cn │ │ │ └── iocoder │ │ │ └── yudao │ │ │ └── framework │ │ │ └── mq │ │ │ ├── package-info.java │ │ │ ├── rabbitmq │ │ │ ├── config │ │ │ │ └── YudaoRabbitMQAutoConfiguration.java │ │ │ ├── core │ │ │ │ └── package-info.java │ │ │ └── package-info.java │ │ │ └── redis │ │ │ ├── config │ │ │ ├── YudaoRedisMQConsumerAutoConfiguration.java │ │ │ └── YudaoRedisMQProducerAutoConfiguration.java │ │ │ ├── core │ │ │ ├── RedisMQTemplate.java │ │ │ ├── interceptor │ │ │ │ └── RedisMessageInterceptor.java │ │ │ ├── job │ │ │ │ └── RedisPendingMessageResendJob.java │ │ │ ├── message │ │ │ │ └── AbstractRedisMessage.java │ │ │ ├── pubsub │ │ │ │ ├── AbstractRedisChannelMessage.java │ │ │ │ └── AbstractRedisChannelMessageListener.java │ │ │ └── stream │ │ │ │ ├── AbstractRedisStreamMessage.java │ │ │ │ └── AbstractRedisStreamMessageListener.java │ │ │ └── package-info.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── yudao-spring-boot-starter-mybatis │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── cn │ │ │ └── iocoder │ │ │ └── yudao │ │ │ └── framework │ │ │ ├── datasource │ │ │ ├── config │ │ │ │ └── YudaoDataSourceAutoConfiguration.java │ │ │ ├── core │ │ │ │ ├── enums │ │ │ │ │ └── DataSourceEnum.java │ │ │ │ └── filter │ │ │ │ │ └── DruidAdRemoveFilter.java │ │ │ └── package-info.java │ │ │ ├── mybatis │ │ │ ├── config │ │ │ │ ├── IdTypeEnvironmentPostProcessor.java │ │ │ │ └── YudaoMybatisAutoConfiguration.java │ │ │ ├── core │ │ │ │ ├── dataobject │ │ │ │ │ └── BaseDO.java │ │ │ │ ├── enums │ │ │ │ │ └── SqlConstants.java │ │ │ │ ├── handler │ │ │ │ │ └── DefaultDBFieldHandler.java │ │ │ │ ├── mapper │ │ │ │ │ └── BaseMapperX.java │ │ │ │ ├── query │ │ │ │ │ ├── LambdaQueryWrapperX.java │ │ │ │ │ ├── MPJLambdaWrapperX.java │ │ │ │ │ └── QueryWrapperX.java │ │ │ │ ├── type │ │ │ │ │ ├── EncryptTypeHandler.java │ │ │ │ │ ├── IntegerListTypeHandler.java │ │ │ │ │ ├── JsonLongSetTypeHandler.java │ │ │ │ │ ├── LongListTypeHandler.java │ │ │ │ │ └── StringListTypeHandler.java │ │ │ │ └── util │ │ │ │ │ ├── JdbcUtils.java │ │ │ │ │ └── MyBatisUtils.java │ │ │ └── package-info.java │ │ │ └── package-info.java │ │ └── resources │ │ └── META-INF │ │ ├── spring.factories │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── yudao-spring-boot-starter-protection │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── cn │ │ │ └── iocoder │ │ │ └── yudao │ │ │ └── framework │ │ │ ├── idempotent │ │ │ ├── config │ │ │ │ └── YudaoIdempotentConfiguration.java │ │ │ ├── core │ │ │ │ ├── annotation │ │ │ │ │ └── Idempotent.java │ │ │ │ ├── aop │ │ │ │ │ └── IdempotentAspect.java │ │ │ │ ├── keyresolver │ │ │ │ │ ├── IdempotentKeyResolver.java │ │ │ │ │ └── impl │ │ │ │ │ │ ├── DefaultIdempotentKeyResolver.java │ │ │ │ │ │ └── ExpressionIdempotentKeyResolver.java │ │ │ │ └── redis │ │ │ │ │ └── IdempotentRedisDAO.java │ │ │ └── package-info.java │ │ │ ├── lock4j │ │ │ ├── config │ │ │ │ └── YudaoLock4jConfiguration.java │ │ │ ├── core │ │ │ │ ├── DefaultLockFailureStrategy.java │ │ │ │ └── Lock4jRedisKeyConstants.java │ │ │ └── package-info.java │ │ │ └── resilience4j │ │ │ ├── package-info.java │ │ │ └── 《芋道 Spring Boot 服务容错 Resilience4j 入门》.md │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── yudao-spring-boot-starter-redis │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── cn │ │ │ └── iocoder │ │ │ └── yudao │ │ │ └── framework │ │ │ └── redis │ │ │ ├── config │ │ │ ├── YudaoCacheAutoConfiguration.java │ │ │ ├── YudaoCacheProperties.java │ │ │ └── YudaoRedisAutoConfiguration.java │ │ │ ├── core │ │ │ └── TimeoutRedisCacheManager.java │ │ │ └── package-info.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── yudao-spring-boot-starter-security │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── cn │ │ │ └── iocoder │ │ │ └── yudao │ │ │ └── framework │ │ │ ├── operatelog │ │ │ ├── config │ │ │ │ └── YudaoOperateLogV2Configuration.java │ │ │ ├── core │ │ │ │ ├── package-info.java │ │ │ │ └── service │ │ │ │ │ └── LogRecordServiceImpl.java │ │ │ └── package-info.java │ │ │ └── security │ │ │ ├── config │ │ │ ├── AuthorizeRequestsCustomizer.java │ │ │ ├── SecurityProperties.java │ │ │ ├── YudaoSecurityAutoConfiguration.java │ │ │ └── YudaoWebSecurityConfigurerAdapter.java │ │ │ ├── core │ │ │ ├── LoginUser.java │ │ │ ├── annotations │ │ │ │ └── PreAuthenticated.java │ │ │ ├── aop │ │ │ │ └── PreAuthenticatedAspect.java │ │ │ ├── context │ │ │ │ └── TransmittableThreadLocalSecurityContextHolderStrategy.java │ │ │ ├── filter │ │ │ │ └── TokenAuthenticationFilter.java │ │ │ ├── handler │ │ │ │ ├── AccessDeniedHandlerImpl.java │ │ │ │ └── AuthenticationEntryPointImpl.java │ │ │ ├── service │ │ │ │ ├── SecurityFrameworkService.java │ │ │ │ └── SecurityFrameworkServiceImpl.java │ │ │ └── util │ │ │ │ └── SecurityFrameworkUtils.java │ │ │ └── package-info.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── yudao-spring-boot-starter-test │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── cn │ │ └── iocoder │ │ └── yudao │ │ └── framework │ │ └── test │ │ ├── config │ │ ├── RedisTestConfiguration.java │ │ └── SqlInitializationTestConfiguration.java │ │ ├── core │ │ ├── ut │ │ │ ├── BaseDbAndRedisUnitTest.java │ │ │ ├── BaseDbUnitTest.java │ │ │ ├── BaseMockitoUnitTest.java │ │ │ ├── BaseRedisUnitTest.java │ │ │ └── package-info.java │ │ └── util │ │ │ ├── AssertUtils.java │ │ │ └── RandomUtils.java │ │ └── package-info.java ├── yudao-spring-boot-starter-web │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── cn │ │ │ │ └── iocoder │ │ │ │ └── yudao │ │ │ │ └── framework │ │ │ │ ├── apilog │ │ │ │ ├── config │ │ │ │ │ └── YudaoApiLogAutoConfiguration.java │ │ │ │ ├── core │ │ │ │ │ ├── filter │ │ │ │ │ │ └── ApiAccessLogFilter.java │ │ │ │ │ └── service │ │ │ │ │ │ ├── ApiAccessLog.java │ │ │ │ │ │ ├── ApiAccessLogFrameworkService.java │ │ │ │ │ │ ├── ApiAccessLogFrameworkServiceImpl.java │ │ │ │ │ │ ├── ApiErrorLog.java │ │ │ │ │ │ ├── ApiErrorLogFrameworkService.java │ │ │ │ │ │ └── ApiErrorLogFrameworkServiceImpl.java │ │ │ │ └── package-info.java │ │ │ │ ├── banner │ │ │ │ ├── config │ │ │ │ │ └── YudaoBannerAutoConfiguration.java │ │ │ │ ├── core │ │ │ │ │ └── BannerApplicationRunner.java │ │ │ │ └── package-info.java │ │ │ │ ├── desensitize │ │ │ │ ├── core │ │ │ │ │ ├── base │ │ │ │ │ │ ├── annotation │ │ │ │ │ │ │ └── DesensitizeBy.java │ │ │ │ │ │ ├── handler │ │ │ │ │ │ │ └── DesensitizationHandler.java │ │ │ │ │ │ └── serializer │ │ │ │ │ │ │ └── StringDesensitizeSerializer.java │ │ │ │ │ ├── regex │ │ │ │ │ │ ├── annotation │ │ │ │ │ │ │ ├── EmailDesensitize.java │ │ │ │ │ │ │ └── RegexDesensitize.java │ │ │ │ │ │ └── handler │ │ │ │ │ │ │ ├── AbstractRegexDesensitizationHandler.java │ │ │ │ │ │ │ ├── DefaultRegexDesensitizationHandler.java │ │ │ │ │ │ │ └── EmailDesensitizationHandler.java │ │ │ │ │ └── slider │ │ │ │ │ │ ├── annotation │ │ │ │ │ │ ├── BankCardDesensitize.java │ │ │ │ │ │ ├── CarLicenseDesensitize.java │ │ │ │ │ │ ├── ChineseNameDesensitize.java │ │ │ │ │ │ ├── FixedPhoneDesensitize.java │ │ │ │ │ │ ├── IdCardDesensitize.java │ │ │ │ │ │ ├── MobileDesensitize.java │ │ │ │ │ │ ├── PasswordDesensitize.java │ │ │ │ │ │ └── SliderDesensitize.java │ │ │ │ │ │ └── handler │ │ │ │ │ │ ├── AbstractSliderDesensitizationHandler.java │ │ │ │ │ │ ├── BankCardDesensitization.java │ │ │ │ │ │ ├── CarLicenseDesensitization.java │ │ │ │ │ │ ├── ChineseNameDesensitization.java │ │ │ │ │ │ ├── DefaultDesensitizationHandler.java │ │ │ │ │ │ ├── FixedPhoneDesensitization.java │ │ │ │ │ │ ├── IdCardDesensitization.java │ │ │ │ │ │ ├── MobileDesensitization.java │ │ │ │ │ │ └── PasswordDesensitization.java │ │ │ │ └── package-info.java │ │ │ │ ├── errorcode │ │ │ │ ├── config │ │ │ │ │ ├── ErrorCodeProperties.java │ │ │ │ │ └── YudaoErrorCodeAutoConfiguration.java │ │ │ │ ├── core │ │ │ │ │ ├── generator │ │ │ │ │ │ ├── ErrorCodeAutoGenerator.java │ │ │ │ │ │ └── ErrorCodeAutoGeneratorImpl.java │ │ │ │ │ └── loader │ │ │ │ │ │ ├── ErrorCodeLoader.java │ │ │ │ │ │ └── ErrorCodeLoaderImpl.java │ │ │ │ └── package-info.java │ │ │ │ ├── jackson │ │ │ │ ├── config │ │ │ │ │ └── YudaoJacksonAutoConfiguration.java │ │ │ │ └── core │ │ │ │ │ ├── databind │ │ │ │ │ ├── LocalDateTimeDeserializer.java │ │ │ │ │ ├── LocalDateTimeSerializer.java │ │ │ │ │ └── NumberSerializer.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── package-info.java │ │ │ │ ├── swagger │ │ │ │ ├── config │ │ │ │ │ ├── SwaggerProperties.java │ │ │ │ │ └── YudaoSwaggerAutoConfiguration.java │ │ │ │ └── package-info.java │ │ │ │ ├── web │ │ │ │ ├── config │ │ │ │ │ ├── WebProperties.java │ │ │ │ │ └── YudaoWebAutoConfiguration.java │ │ │ │ ├── core │ │ │ │ │ ├── filter │ │ │ │ │ │ ├── ApiRequestFilter.java │ │ │ │ │ │ ├── CacheRequestBodyFilter.java │ │ │ │ │ │ ├── CacheRequestBodyWrapper.java │ │ │ │ │ │ └── DemoFilter.java │ │ │ │ │ ├── handler │ │ │ │ │ │ ├── GlobalExceptionHandler.java │ │ │ │ │ │ └── GlobalResponseBodyHandler.java │ │ │ │ │ └── util │ │ │ │ │ │ └── WebFrameworkUtils.java │ │ │ │ └── package-info.java │ │ │ │ └── xss │ │ │ │ ├── config │ │ │ │ ├── XssProperties.java │ │ │ │ └── YudaoXssAutoConfiguration.java │ │ │ │ ├── core │ │ │ │ ├── clean │ │ │ │ │ ├── JsoupXssCleaner.java │ │ │ │ │ └── XssCleaner.java │ │ │ │ ├── filter │ │ │ │ │ ├── XssFilter.java │ │ │ │ │ └── XssRequestWrapper.java │ │ │ │ └── json │ │ │ │ │ └── XssStringJsonDeserializer.java │ │ │ │ └── package-info.java │ │ └── resources │ │ │ ├── META-INF │ │ │ └── spring │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ └── banner.txt │ │ └── test │ │ └── java │ │ └── cn │ │ └── iocoder │ │ └── yudao │ │ └── framework │ │ └── desensitize │ │ └── core │ │ ├── DesensitizeTest.java │ │ ├── annotation │ │ └── Address.java │ │ └── handler │ │ └── AddressHandler.java └── yudao-spring-boot-starter-websocket │ ├── pom.xml │ └── src │ └── main │ ├── java │ └── cn │ │ └── iocoder │ │ └── yudao │ │ └── framework │ │ └── websocket │ │ ├── config │ │ ├── WebSocketProperties.java │ │ └── YudaoWebSocketAutoConfiguration.java │ │ ├── core │ │ ├── handler │ │ │ └── JsonWebSocketMessageHandler.java │ │ ├── listener │ │ │ └── WebSocketMessageListener.java │ │ ├── message │ │ │ └── JsonWebSocketMessage.java │ │ ├── security │ │ │ ├── LoginUserHandshakeInterceptor.java │ │ │ └── WebSocketAuthorizeRequestsCustomizer.java │ │ ├── sender │ │ │ ├── AbstractWebSocketMessageSender.java │ │ │ ├── WebSocketMessageSender.java │ │ │ ├── kafka │ │ │ │ ├── KafkaWebSocketMessage.java │ │ │ │ ├── KafkaWebSocketMessageConsumer.java │ │ │ │ └── KafkaWebSocketMessageSender.java │ │ │ ├── local │ │ │ │ └── LocalWebSocketMessageSender.java │ │ │ ├── rabbitmq │ │ │ │ ├── RabbitMQWebSocketMessage.java │ │ │ │ ├── RabbitMQWebSocketMessageConsumer.java │ │ │ │ └── RabbitMQWebSocketMessageSender.java │ │ │ ├── redis │ │ │ │ ├── RedisWebSocketMessage.java │ │ │ │ ├── RedisWebSocketMessageConsumer.java │ │ │ │ └── RedisWebSocketMessageSender.java │ │ │ └── rocketmq │ │ │ │ ├── RocketMQWebSocketMessage.java │ │ │ │ ├── RocketMQWebSocketMessageConsumer.java │ │ │ │ └── RocketMQWebSocketMessageSender.java │ │ ├── session │ │ │ ├── WebSocketSessionHandlerDecorator.java │ │ │ ├── WebSocketSessionManager.java │ │ │ └── WebSocketSessionManagerImpl.java │ │ └── util │ │ │ └── WebSocketFrameworkUtils.java │ │ └── package-info.java │ └── resources │ └── META-INF │ └── spring │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports └── yudao-module ├── pom.xml ├── yudao-module-bpm-api ├── pom.xml └── src │ └── main │ └── java │ └── cn │ └── iocoder │ └── yudao │ └── module │ └── bpm │ ├── api │ ├── listener │ │ ├── BpmResultListenerApi.java │ │ └── dto │ │ │ └── BpmResultListenerRespDTO.java │ ├── package-info.java │ └── task │ │ ├── BpmProcessInstanceApi.java │ │ └── dto │ │ └── BpmProcessInstanceCreateReqDTO.java │ └── enums │ ├── DictTypeConstants.java │ ├── ErrorCodeConstants.java │ ├── definition │ ├── BpmModelFormTypeEnum.java │ ├── BpmTaskAssignRuleTypeEnum.java │ └── BpmTaskRuleScriptEnum.java │ ├── message │ └── BpmMessageEnum.java │ └── task │ ├── BpmCommentTypeEnum.java │ ├── BpmProcessInstanceDeleteReasonEnum.java │ ├── BpmProcessInstanceResultEnum.java │ ├── BpmProcessInstanceStatusEnum.java │ └── BpmTaskAddSignTypeEnum.java ├── yudao-module-bpm-biz ├── pom.xml └── src │ └── main │ └── java │ └── cn │ └── iocoder │ └── yudao │ └── module │ └── bpm │ ├── api │ ├── listener │ │ └── BpmResultListenerApiImpl.java │ ├── package-info.java │ └── task │ │ └── BpmProcessInstanceApiImpl.java │ ├── controller │ ├── admin │ │ ├── candidate │ │ │ └── vo │ │ │ │ └── BpmTaskCandidateRuleVO.java │ │ ├── definition │ │ │ ├── BpmFormController.java │ │ │ ├── BpmModelController.java │ │ │ ├── BpmProcessDefinitionController.java │ │ │ ├── BpmTaskAssignRuleController.java │ │ │ ├── BpmUserGroupController.java │ │ │ └── vo │ │ │ │ ├── form │ │ │ │ ├── BpmFormBaseVO.java │ │ │ │ ├── BpmFormCreateReqVO.java │ │ │ │ ├── BpmFormPageReqVO.java │ │ │ │ ├── BpmFormRespVO.java │ │ │ │ ├── BpmFormSimpleRespVO.java │ │ │ │ └── BpmFormUpdateReqVO.java │ │ │ │ ├── group │ │ │ │ ├── BpmUserGroupBaseVO.java │ │ │ │ ├── BpmUserGroupCreateReqVO.java │ │ │ │ ├── BpmUserGroupPageReqVO.java │ │ │ │ ├── BpmUserGroupRespVO.java │ │ │ │ ├── BpmUserGroupSimpleRespVO.java │ │ │ │ └── BpmUserGroupUpdateReqVO.java │ │ │ │ ├── model │ │ │ │ ├── BpmModeImportReqVO.java │ │ │ │ ├── BpmModelBaseVO.java │ │ │ │ ├── BpmModelCreateReqVO.java │ │ │ │ ├── BpmModelPageItemRespVO.java │ │ │ │ ├── BpmModelPageReqVO.java │ │ │ │ ├── BpmModelRespVO.java │ │ │ │ ├── BpmModelUpdateReqVO.java │ │ │ │ └── BpmModelUpdateStateReqVO.java │ │ │ │ ├── process │ │ │ │ ├── BpmProcessDefinitionListReqVO.java │ │ │ │ ├── BpmProcessDefinitionPageItemRespVO.java │ │ │ │ ├── BpmProcessDefinitionPageReqVO.java │ │ │ │ └── BpmProcessDefinitionRespVO.java │ │ │ │ └── rule │ │ │ │ ├── BpmTaskAssignRuleBaseVO.java │ │ │ │ ├── BpmTaskAssignRuleCreateReqVO.java │ │ │ │ ├── BpmTaskAssignRuleRespVO.java │ │ │ │ └── BpmTaskAssignRuleUpdateReqVO.java │ │ ├── oa │ │ │ ├── BpmOALeaveController.http │ │ │ ├── BpmOALeaveController.java │ │ │ ├── package-info.java │ │ │ └── vo │ │ │ │ ├── BpmOALeaveBaseVO.java │ │ │ │ ├── BpmOALeaveCreateReqVO.java │ │ │ │ ├── BpmOALeavePageReqVO.java │ │ │ │ └── BpmOALeaveRespVO.java │ │ └── task │ │ │ ├── BpmActivityController.java │ │ │ ├── BpmProcessInstanceController.java │ │ │ ├── BpmProcessInstanceCopyController.java │ │ │ ├── BpmTaskController.java │ │ │ └── vo │ │ │ ├── activity │ │ │ └── BpmActivityRespVO.java │ │ │ ├── instance │ │ │ ├── BpmProcessInstanceCancelReqVO.java │ │ │ ├── BpmProcessInstanceCopyCreateReqVO.java │ │ │ ├── BpmProcessInstanceCopyMyPageReqVO.java │ │ │ ├── BpmProcessInstanceCopyPageItemRespVO.java │ │ │ ├── BpmProcessInstanceCreateReqVO.java │ │ │ ├── BpmProcessInstanceMyPageReqVO.java │ │ │ ├── BpmProcessInstancePageItemRespVO.java │ │ │ └── BpmProcessInstanceRespVO.java │ │ │ └── task │ │ │ ├── BpmTaskAddSignReqVO.java │ │ │ ├── BpmTaskApproveReqVO.java │ │ │ ├── BpmTaskDelegateReqVO.java │ │ │ ├── BpmTaskDonePageItemRespVO.java │ │ │ ├── BpmTaskDonePageReqVO.java │ │ │ ├── BpmTaskRejectReqVO.java │ │ │ ├── BpmTaskRespVO.java │ │ │ ├── BpmTaskReturnReqVO.java │ │ │ ├── BpmTaskSimpleRespVO.java │ │ │ ├── BpmTaskSubSignReqVO.java │ │ │ ├── BpmTaskSubSignRespVO.java │ │ │ ├── BpmTaskTodoPageItemRespVO.java │ │ │ ├── BpmTaskTodoPageReqVO.java │ │ │ └── BpmTaskUpdateAssigneeReqVO.java │ ├── app │ │ └── package-info.java │ └── package-info.java │ ├── convert │ ├── cc │ │ └── BpmProcessInstanceCopyConvert.java │ ├── definition │ │ ├── BpmFormConvert.java │ │ ├── BpmModelConvert.java │ │ ├── BpmProcessDefinitionConvert.java │ │ ├── BpmTaskAssignRuleConvert.java │ │ └── BpmUserGroupConvert.java │ ├── message │ │ └── BpmMessageConvert.java │ ├── oa │ │ └── BpmOALeaveConvert.java │ ├── package-info.java │ ├── task │ │ ├── BpmActivityConvert.java │ │ ├── BpmProcessInstanceConvert.java │ │ ├── BpmTaskConvert.java │ │ └── package-info.java │ └── 《芋道 Spring Boot 对象转换 MapStruct 入门》.md │ ├── dal │ ├── dataobject │ │ ├── cc │ │ │ └── BpmProcessInstanceCopyDO.java │ │ ├── definition │ │ │ ├── BpmFormDO.java │ │ │ ├── BpmProcessDefinitionExtDO.java │ │ │ ├── BpmTaskAssignRuleDO.java │ │ │ ├── BpmTaskMessageRuleDO.java │ │ │ └── BpmUserGroupDO.java │ │ ├── oa │ │ │ └── BpmOALeaveDO.java │ │ └── task │ │ │ ├── BpmProcessInstanceExtDO.java │ │ │ └── BpmTaskExtDO.java │ └── mysql │ │ ├── cc │ │ └── BpmProcessInstanceCopyMapper.java │ │ ├── definition │ │ ├── BpmFormMapper.java │ │ ├── BpmProcessDefinitionExtMapper.java │ │ ├── BpmTaskAssignRuleMapper.java │ │ └── BpmUserGroupMapper.java │ │ ├── oa │ │ └── BpmOALeaveMapper.java │ │ └── task │ │ ├── BpmProcessInstanceExtMapper.java │ │ └── BpmTaskExtMapper.java │ ├── framework │ ├── bpm │ │ ├── config │ │ │ ├── BpmCandidateProcessorConfiguration.java │ │ │ └── BpmCommonConfiguration.java │ │ ├── core │ │ │ ├── event │ │ │ │ ├── BpmProcessInstanceResultEvent.java │ │ │ │ ├── BpmProcessInstanceResultEventListener.java │ │ │ │ ├── BpmProcessInstanceResultEventPublisher.java │ │ │ │ └── package-info.java │ │ │ └── package-info.java │ │ ├── listener │ │ │ └── BpmServiceResultListener.java │ │ └── package-info.java │ ├── flowable │ │ ├── config │ │ │ └── BpmFlowableConfiguration.java │ │ └── core │ │ │ ├── behavior │ │ │ ├── BpmActivityBehaviorFactory.java │ │ │ ├── BpmParallelMultiInstanceBehavior.java │ │ │ ├── BpmUserTaskActivityBehavior.java │ │ │ └── script │ │ │ │ ├── BpmTaskAssignScript.java │ │ │ │ └── impl │ │ │ │ ├── BpmTaskAssignLeaderAbstractScript.java │ │ │ │ ├── BpmTaskAssignLeaderX1Script.java │ │ │ │ ├── BpmTaskAssignLeaderX2Script.java │ │ │ │ └── BpmTaskAssignStartUserScript.java │ │ │ ├── handler │ │ │ └── MultiInstanceHandler.java │ │ │ └── listener │ │ │ ├── BpmProcessInstanceEventListener.java │ │ │ └── BpmTaskEventListener.java │ ├── package-info.java │ └── web │ │ ├── config │ │ └── BpmWebConfiguration.java │ │ └── package-info.java │ ├── package-info.java │ └── service │ ├── candidate │ ├── BpmCandidateSourceInfo.java │ ├── BpmCandidateSourceInfoProcessor.java │ ├── BpmCandidateSourceInfoProcessorChain.java │ └── sourceInfoProcessor │ │ ├── BpmCandidateAdminUserApiSourceInfoProcessor.java │ │ ├── BpmCandidateDeptApiSourceInfoProcessor.java │ │ ├── BpmCandidatePostApiSourceInfoProcessor.java │ │ ├── BpmCandidateRoleApiSourceInfoProcessor.java │ │ ├── BpmCandidateScriptApiSourceInfoProcessor.java │ │ └── BpmCandidateUserGroupApiSourceInfoProcessor.java │ ├── definition │ ├── BpmFormService.java │ ├── BpmFormServiceImpl.java │ ├── BpmModelService.java │ ├── BpmModelServiceImpl.java │ ├── BpmProcessDefinitionService.java │ ├── BpmProcessDefinitionServiceImpl.java │ ├── BpmTaskAssignRuleService.java │ ├── BpmTaskAssignRuleServiceImpl.java │ ├── BpmUserGroupService.java │ ├── BpmUserGroupServiceImpl.java │ └── dto │ │ ├── BpmFormFieldRespDTO.java │ │ ├── BpmModelMetaInfoRespDTO.java │ │ └── BpmProcessDefinitionCreateReqDTO.java │ ├── message │ ├── BpmMessageService.java │ ├── BpmMessageServiceImpl.java │ └── dto │ │ ├── BpmMessageSendWhenProcessInstanceApproveReqDTO.java │ │ ├── BpmMessageSendWhenProcessInstanceRejectReqDTO.java │ │ └── BpmMessageSendWhenTaskCreatedReqDTO.java │ ├── oa │ ├── BpmOALeaveService.java │ ├── BpmOALeaveServiceImpl.java │ └── listener │ │ └── BpmOALeaveResultListener.java │ └── task │ ├── BpmActivityService.java │ ├── BpmActivityServiceImpl.java │ ├── BpmProcessInstanceService.java │ ├── BpmProcessInstanceServiceImpl.java │ ├── BpmTaskService.java │ ├── BpmTaskServiceImpl.java │ └── cc │ ├── BpmProcessInstanceCopyService.java │ ├── BpmProcessInstanceCopyServiceImpl.java │ └── dto │ └── BpmDelegateExecutionDTO.java ├── yudao-module-infra-api ├── pom.xml └── src │ └── main │ └── java │ └── cn │ └── iocoder │ └── yudao │ └── module │ └── infra │ ├── api │ ├── file │ │ └── FileApi.java │ ├── logger │ │ ├── ApiAccessLogApi.java │ │ ├── ApiErrorLogApi.java │ │ └── dto │ │ │ ├── ApiAccessLogCreateReqDTO.java │ │ │ └── ApiErrorLogCreateReqDTO.java │ ├── package-info.java │ └── websocket │ │ └── WebSocketSenderApi.java │ └── enums │ ├── DictTypeConstants.java │ └── ErrorCodeConstants.java ├── yudao-module-infra-biz ├── pom.xml └── src │ └── main │ ├── java │ └── cn │ │ └── iocoder │ │ └── yudao │ │ └── module │ │ └── infra │ │ ├── api │ │ ├── file │ │ │ └── FileApiImpl.java │ │ ├── logger │ │ │ ├── ApiAccessLogApiImpl.java │ │ │ └── ApiErrorLogApiImpl.java │ │ ├── package-info.java │ │ └── websocket │ │ │ └── WebSocketSenderApiImpl.java │ │ ├── controller │ │ ├── admin │ │ │ ├── codegen │ │ │ │ ├── CodegenController.java │ │ │ │ └── vo │ │ │ │ │ ├── CodegenCreateListReqVO.java │ │ │ │ │ ├── CodegenDetailRespVO.java │ │ │ │ │ ├── CodegenPreviewRespVO.java │ │ │ │ │ ├── CodegenUpdateReqVO.java │ │ │ │ │ ├── column │ │ │ │ │ ├── CodegenColumnRespVO.java │ │ │ │ │ └── CodegenColumnSaveReqVO.java │ │ │ │ │ └── table │ │ │ │ │ ├── CodegenTablePageReqVO.java │ │ │ │ │ ├── CodegenTableRespVO.java │ │ │ │ │ ├── CodegenTableSaveReqVO.java │ │ │ │ │ └── DatabaseTableRespVO.java │ │ │ ├── config │ │ │ │ ├── ConfigController.java │ │ │ │ └── vo │ │ │ │ │ ├── ConfigPageReqVO.java │ │ │ │ │ ├── ConfigRespVO.java │ │ │ │ │ └── ConfigSaveReqVO.java │ │ │ ├── db │ │ │ │ ├── DataSourceConfigController.java │ │ │ │ ├── DatabaseDocController.java │ │ │ │ └── vo │ │ │ │ │ ├── DataSourceConfigRespVO.java │ │ │ │ │ └── DataSourceConfigSaveReqVO.java │ │ │ ├── demo │ │ │ │ ├── demo01 │ │ │ │ │ ├── Demo01ContactController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── Demo01ContactPageReqVO.java │ │ │ │ │ │ ├── Demo01ContactRespVO.java │ │ │ │ │ │ └── Demo01ContactSaveReqVO.java │ │ │ │ ├── demo02 │ │ │ │ │ ├── Demo02CategoryController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── Demo02CategoryListReqVO.java │ │ │ │ │ │ ├── Demo02CategoryRespVO.java │ │ │ │ │ │ └── Demo02CategorySaveReqVO.java │ │ │ │ ├── demo03 │ │ │ │ │ ├── Demo03StudentController.java │ │ │ │ │ ├── package-info.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── Demo03StudentPageReqVO.java │ │ │ │ │ │ ├── Demo03StudentRespVO.java │ │ │ │ │ │ └── Demo03StudentSaveReqVO.java │ │ │ │ └── package-info.java │ │ │ ├── file │ │ │ │ ├── FileConfigController.http │ │ │ │ ├── FileConfigController.java │ │ │ │ ├── FileController.java │ │ │ │ └── vo │ │ │ │ │ ├── config │ │ │ │ │ ├── FileConfigPageReqVO.java │ │ │ │ │ ├── FileConfigRespVO.java │ │ │ │ │ └── FileConfigSaveReqVO.java │ │ │ │ │ └── file │ │ │ │ │ ├── FileCreateReqVO.java │ │ │ │ │ ├── FilePageReqVO.java │ │ │ │ │ ├── FilePresignedUrlRespVO.java │ │ │ │ │ ├── FileRespVO.java │ │ │ │ │ └── FileUploadReqVO.java │ │ │ ├── job │ │ │ │ ├── JobController.java │ │ │ │ ├── JobLogController.java │ │ │ │ └── vo │ │ │ │ │ ├── job │ │ │ │ │ ├── JobPageReqVO.java │ │ │ │ │ ├── JobRespVO.java │ │ │ │ │ └── JobSaveReqVO.java │ │ │ │ │ └── log │ │ │ │ │ ├── JobLogPageReqVO.java │ │ │ │ │ └── JobLogRespVO.java │ │ │ ├── logger │ │ │ │ ├── ApiAccessLogController.java │ │ │ │ ├── ApiErrorLogController.java │ │ │ │ └── vo │ │ │ │ │ ├── apiaccesslog │ │ │ │ │ ├── ApiAccessLogPageReqVO.java │ │ │ │ │ └── ApiAccessLogRespVO.java │ │ │ │ │ └── apierrorlog │ │ │ │ │ ├── ApiErrorLogPageReqVO.java │ │ │ │ │ └── ApiErrorLogRespVO.java │ │ │ └── redis │ │ │ │ ├── RedisController.http │ │ │ │ ├── RedisController.java │ │ │ │ └── vo │ │ │ │ └── RedisMonitorRespVO.java │ │ ├── app │ │ │ ├── file │ │ │ │ ├── AppFileController.java │ │ │ │ └── vo │ │ │ │ │ └── AppFileUploadReqVO.java │ │ │ └── package-info.java │ │ └── package-info.java │ │ ├── convert │ │ ├── codegen │ │ │ └── CodegenConvert.java │ │ ├── config │ │ │ └── ConfigConvert.java │ │ ├── file │ │ │ └── FileConfigConvert.java │ │ ├── package-info.java │ │ ├── redis │ │ │ └── RedisConvert.java │ │ └── 《芋道 Spring Boot 对象转换 MapStruct 入门》.md │ │ ├── dal │ │ ├── dataobject │ │ │ ├── codegen │ │ │ │ ├── CodegenColumnDO.java │ │ │ │ └── CodegenTableDO.java │ │ │ ├── config │ │ │ │ └── ConfigDO.java │ │ │ ├── db │ │ │ │ └── DataSourceConfigDO.java │ │ │ ├── demo │ │ │ │ ├── demo01 │ │ │ │ │ └── Demo01ContactDO.java │ │ │ │ ├── demo02 │ │ │ │ │ └── Demo02CategoryDO.java │ │ │ │ └── demo03 │ │ │ │ │ ├── Demo03CourseDO.java │ │ │ │ │ ├── Demo03GradeDO.java │ │ │ │ │ └── Demo03StudentDO.java │ │ │ ├── file │ │ │ │ ├── FileConfigDO.java │ │ │ │ ├── FileContentDO.java │ │ │ │ └── FileDO.java │ │ │ ├── job │ │ │ │ ├── JobDO.java │ │ │ │ └── JobLogDO.java │ │ │ └── logger │ │ │ │ ├── ApiAccessLogDO.java │ │ │ │ └── ApiErrorLogDO.java │ │ └── mysql │ │ │ ├── codegen │ │ │ ├── CodegenColumnMapper.java │ │ │ └── CodegenTableMapper.java │ │ │ ├── config │ │ │ └── ConfigMapper.java │ │ │ ├── db │ │ │ └── DataSourceConfigMapper.java │ │ │ ├── demo │ │ │ ├── demo01 │ │ │ │ └── Demo01ContactMapper.java │ │ │ ├── demo02 │ │ │ │ └── Demo02CategoryMapper.java │ │ │ └── demo03 │ │ │ │ ├── Demo03CourseMapper.java │ │ │ │ ├── Demo03GradeMapper.java │ │ │ │ └── Demo03StudentMapper.java │ │ │ ├── file │ │ │ ├── FileConfigMapper.java │ │ │ ├── FileContentDAOImpl.java │ │ │ ├── FileContentMapper.java │ │ │ └── FileMapper.java │ │ │ ├── job │ │ │ ├── JobLogMapper.java │ │ │ └── JobMapper.java │ │ │ └── logger │ │ │ ├── ApiAccessLogMapper.java │ │ │ └── ApiErrorLogMapper.java │ │ ├── enums │ │ ├── codegen │ │ │ ├── CodegenColumnHtmlTypeEnum.java │ │ │ ├── CodegenColumnListConditionEnum.java │ │ │ ├── CodegenFrontTypeEnum.java │ │ │ ├── CodegenSceneEnum.java │ │ │ └── CodegenTemplateTypeEnum.java │ │ ├── config │ │ │ └── ConfigTypeEnum.java │ │ ├── job │ │ │ ├── JobLogStatusEnum.java │ │ │ └── JobStatusEnum.java │ │ ├── logger │ │ │ └── ApiErrorLogProcessStatusEnum.java │ │ └── package-info.java │ │ ├── framework │ │ ├── codegen │ │ │ ├── config │ │ │ │ ├── CodegenConfiguration.java │ │ │ │ └── CodegenProperties.java │ │ │ └── package-info.java │ │ ├── monitor │ │ │ ├── config │ │ │ │ └── AdminServerConfiguration.java │ │ │ ├── package-info.java │ │ │ └── 《芋道 Spring Boot 监控工具 Admin 入门》.md │ │ ├── package-info.java │ │ ├── security │ │ │ ├── config │ │ │ │ └── SecurityConfiguration.java │ │ │ └── core │ │ │ │ └── package-info.java │ │ └── web │ │ │ ├── config │ │ │ └── InfraWebConfiguration.java │ │ │ └── package-info.java │ │ ├── job │ │ ├── job │ │ │ └── JobLogCleanJob.java │ │ └── logger │ │ │ ├── AccessLogCleanJob.java │ │ │ └── ErrorLogCleanJob.java │ │ ├── mq │ │ ├── consumer │ │ │ └── package-info.java │ │ ├── message │ │ │ └── package-info.java │ │ └── producer │ │ │ └── package-info.java │ │ ├── package-info.java │ │ ├── service │ │ ├── codegen │ │ │ ├── CodegenService.java │ │ │ ├── CodegenServiceImpl.java │ │ │ └── inner │ │ │ │ ├── CodegenBuilder.java │ │ │ │ └── CodegenEngine.java │ │ ├── config │ │ │ ├── ConfigService.java │ │ │ └── ConfigServiceImpl.java │ │ ├── db │ │ │ ├── DataSourceConfigService.java │ │ │ ├── DataSourceConfigServiceImpl.java │ │ │ ├── DatabaseTableService.java │ │ │ └── DatabaseTableServiceImpl.java │ │ ├── demo │ │ │ ├── demo01 │ │ │ │ ├── Demo01ContactService.java │ │ │ │ └── Demo01ContactServiceImpl.java │ │ │ ├── demo02 │ │ │ │ ├── Demo02CategoryService.java │ │ │ │ └── Demo02CategoryServiceImpl.java │ │ │ └── demo03 │ │ │ │ ├── Demo03StudentService.java │ │ │ │ └── Demo03StudentServiceImpl.java │ │ ├── file │ │ │ ├── FileConfigService.java │ │ │ ├── FileConfigServiceImpl.java │ │ │ ├── FileService.java │ │ │ └── FileServiceImpl.java │ │ ├── job │ │ │ ├── JobLogService.java │ │ │ ├── JobLogServiceImpl.java │ │ │ ├── JobService.java │ │ │ └── JobServiceImpl.java │ │ └── logger │ │ │ ├── ApiAccessLogService.java │ │ │ ├── ApiAccessLogServiceImpl.java │ │ │ ├── ApiErrorLogService.java │ │ │ └── ApiErrorLogServiceImpl.java │ │ └── websocket │ │ ├── DemoWebSocketMessageListener.java │ │ └── message │ │ ├── DemoReceiveMessage.java │ │ └── DemoSendMessage.java │ └── resources │ ├── codegen │ ├── java │ │ ├── controller │ │ │ ├── controller.vm │ │ │ └── vo │ │ │ │ ├── listReqVO.vm │ │ │ │ ├── pageReqVO.vm │ │ │ │ ├── respVO.vm │ │ │ │ └── saveReqVO.vm │ │ ├── dal │ │ │ ├── do.vm │ │ │ ├── do_sub.vm │ │ │ ├── mapper.vm │ │ │ ├── mapper.xml.vm │ │ │ └── mapper_sub.vm │ │ ├── enums │ │ │ └── errorcode.vm │ │ ├── service │ │ │ ├── service.vm │ │ │ └── serviceImpl.vm │ │ └── test │ │ │ └── serviceTest.vm │ ├── sql │ │ ├── h2.vm │ │ └── sql.vm │ ├── vue │ │ ├── api │ │ │ └── api.js.vm │ │ └── views │ │ │ ├── components │ │ │ ├── form_sub_erp.vue.vm │ │ │ ├── form_sub_inner.vue.vm │ │ │ ├── form_sub_normal.vue.vm │ │ │ ├── list_sub_erp.vue.vm │ │ │ └── list_sub_inner.vue.vm │ │ │ ├── form.vue.vm │ │ │ └── index.vue.vm │ ├── vue3 │ │ ├── api │ │ │ └── api.ts.vm │ │ └── views │ │ │ ├── components │ │ │ ├── form_sub_erp.vue.vm │ │ │ ├── form_sub_inner.vue.vm │ │ │ ├── form_sub_normal.vue.vm │ │ │ ├── list_sub_erp.vue.vm │ │ │ └── list_sub_inner.vue.vm │ │ │ ├── form.vue.vm │ │ │ └── index.vue.vm │ ├── vue3_schema │ │ ├── api │ │ │ └── api.ts.vm │ │ └── views │ │ │ ├── data.ts.vm │ │ │ ├── form.vue.vm │ │ │ └── index.vue.vm │ └── vue3_vben │ │ ├── api │ │ └── api.ts.vm │ │ └── views │ │ ├── data.ts.vm │ │ ├── form.vue.vm │ │ └── index.vue.vm │ └── file │ └── erweima.jpg ├── yudao-module-system-api ├── pom.xml └── src │ └── main │ └── java │ └── cn │ └── iocoder │ └── yudao │ └── module │ └── system │ ├── api │ ├── dept │ │ ├── DeptApi.java │ │ ├── PostApi.java │ │ └── dto │ │ │ ├── DeptRespDTO.java │ │ │ └── PostRespDTO.java │ ├── dict │ │ ├── DictDataApi.java │ │ └── dto │ │ │ └── DictDataRespDTO.java │ ├── errorcode │ │ ├── ErrorCodeApi.java │ │ └── dto │ │ │ ├── ErrorCodeAutoGenerateReqDTO.java │ │ │ └── ErrorCodeRespDTO.java │ ├── logger │ │ ├── LoginLogApi.java │ │ ├── OperateLogApi.java │ │ └── dto │ │ │ ├── LoginLogCreateReqDTO.java │ │ │ ├── OperateLogCreateReqDTO.java │ │ │ ├── OperateLogV2CreateReqDTO.java │ │ │ ├── OperateLogV2PageReqDTO.java │ │ │ └── OperateLogV2RespDTO.java │ ├── mail │ │ ├── MailSendApi.java │ │ └── dto │ │ │ └── MailSendSingleToUserReqDTO.java │ ├── notify │ │ ├── NotifyMessageSendApi.java │ │ └── dto │ │ │ ├── NotifySendSingleToUserReqDTO.java │ │ │ └── NotifyTemplateReqDTO.java │ ├── oauth2 │ │ ├── OAuth2TokenApi.java │ │ └── dto │ │ │ ├── OAuth2AccessTokenCheckRespDTO.java │ │ │ ├── OAuth2AccessTokenCreateReqDTO.java │ │ │ └── OAuth2AccessTokenRespDTO.java │ ├── package-info.java │ ├── permission │ │ ├── PermissionApi.java │ │ ├── RoleApi.java │ │ └── dto │ │ │ └── DeptDataPermissionRespDTO.java │ ├── sensitiveword │ │ └── SensitiveWordApi.java │ ├── sms │ │ ├── SmsCodeApi.java │ │ ├── SmsSendApi.java │ │ └── dto │ │ │ ├── code │ │ │ ├── SmsCodeSendReqDTO.java │ │ │ ├── SmsCodeUseReqDTO.java │ │ │ └── SmsCodeValidateReqDTO.java │ │ │ └── send │ │ │ └── SmsSendSingleToUserReqDTO.java │ ├── social │ │ ├── SocialClientApi.java │ │ ├── SocialUserApi.java │ │ └── dto │ │ │ ├── SocialUserBindReqDTO.java │ │ │ ├── SocialUserRespDTO.java │ │ │ ├── SocialUserUnbindReqDTO.java │ │ │ ├── SocialWxJsapiSignatureRespDTO.java │ │ │ └── SocialWxPhoneNumberInfoRespDTO.java │ ├── tenant │ │ └── TenantApi.java │ └── user │ │ ├── AdminUserApi.java │ │ └── dto │ │ └── AdminUserRespDTO.java │ └── enums │ ├── DictTypeConstants.java │ ├── ErrorCodeConstants.java │ ├── common │ └── SexEnum.java │ ├── errorcode │ └── ErrorCodeTypeEnum.java │ ├── logger │ ├── LoginLogTypeEnum.java │ └── LoginResultEnum.java │ ├── mail │ └── MailSendStatusEnum.java │ ├── notice │ └── NoticeTypeEnum.java │ ├── notify │ └── NotifyTemplateTypeEnum.java │ ├── oauth2 │ ├── OAuth2ClientConstants.java │ └── OAuth2GrantTypeEnum.java │ ├── permission │ ├── DataScopeEnum.java │ ├── MenuTypeEnum.java │ ├── RoleCodeEnum.java │ └── RoleTypeEnum.java │ ├── sms │ ├── SmsReceiveStatusEnum.java │ ├── SmsSceneEnum.java │ ├── SmsSendStatusEnum.java │ └── SmsTemplateTypeEnum.java │ └── social │ └── SocialTypeEnum.java └── yudao-module-system-biz ├── pom.xml └── src └── main └── java └── cn └── iocoder └── yudao └── module └── system ├── api ├── dept │ ├── DeptApiImpl.java │ └── PostApiImpl.java ├── dict │ └── DictDataApiImpl.java ├── errorcode │ └── ErrorCodeApiImpl.java ├── logger │ ├── LoginLogApiImpl.java │ └── OperateLogApiImpl.java ├── mail │ └── MailSendApiImpl.java ├── notify │ └── NotifyMessageSendApiImpl.java ├── oauth2 │ └── OAuth2TokenApiImpl.java ├── permission │ ├── PermissionApiImpl.java │ └── RoleApiImpl.java ├── sensitiveword │ └── SensitiveWordApiImpl.java ├── sms │ ├── SmsCodeApiImpl.java │ └── SmsSendApiImpl.java ├── social │ ├── SocialClientApiImpl.java │ └── SocialUserApiImpl.java ├── tenant │ └── TenantApiImpl.java └── user │ └── AdminUserApiImpl.java ├── controller ├── admin │ ├── auth │ │ ├── AuthController.http │ │ ├── AuthController.java │ │ └── vo │ │ │ ├── AuthLoginReqVO.java │ │ │ ├── AuthLoginRespVO.java │ │ │ ├── AuthMenuRespVO.java │ │ │ ├── AuthPermissionInfoRespVO.java │ │ │ ├── AuthSmsLoginReqVO.java │ │ │ ├── AuthSmsSendReqVO.java │ │ │ └── AuthSocialLoginReqVO.java │ ├── captcha │ │ └── CaptchaController.java │ ├── dept │ │ ├── DeptController.java │ │ ├── PostController.java │ │ └── vo │ │ │ ├── dept │ │ │ ├── DeptListReqVO.java │ │ │ ├── DeptRespVO.java │ │ │ ├── DeptSaveReqVO.java │ │ │ └── DeptSimpleRespVO.java │ │ │ └── post │ │ │ ├── PostPageReqVO.java │ │ │ ├── PostRespVO.java │ │ │ ├── PostSaveReqVO.java │ │ │ └── PostSimpleRespVO.java │ ├── dict │ │ ├── DictDataController.http │ │ ├── DictDataController.java │ │ ├── DictTypeController.java │ │ └── vo │ │ │ ├── data │ │ │ ├── DictDataPageReqVO.java │ │ │ ├── DictDataRespVO.java │ │ │ ├── DictDataSaveReqVO.java │ │ │ └── DictDataSimpleRespVO.java │ │ │ └── type │ │ │ ├── DictTypePageReqVO.java │ │ │ ├── DictTypeRespVO.java │ │ │ ├── DictTypeSaveReqVO.java │ │ │ └── DictTypeSimpleRespVO.java │ ├── errorcode │ │ ├── ErrorCodeController.http │ │ ├── ErrorCodeController.java │ │ └── vo │ │ │ ├── ErrorCodePageReqVO.java │ │ │ ├── ErrorCodeRespVO.java │ │ │ └── ErrorCodeSaveReqVO.java │ ├── ip │ │ ├── AreaController.http │ │ ├── AreaController.java │ │ └── vo │ │ │ └── AreaNodeRespVO.java │ ├── logger │ │ ├── LoginLogController.java │ │ ├── OperateLogController.http │ │ ├── OperateLogController.java │ │ └── vo │ │ │ ├── loginlog │ │ │ ├── LoginLogPageReqVO.java │ │ │ └── LoginLogRespVO.java │ │ │ └── operatelog │ │ │ ├── OperateLogPageReqVO.java │ │ │ └── OperateLogRespVO.java │ ├── mail │ │ ├── MailAccountController.java │ │ ├── MailLogController.java │ │ ├── MailTemplateController.http │ │ ├── MailTemplateController.java │ │ └── vo │ │ │ ├── account │ │ │ ├── MailAccountPageReqVO.java │ │ │ ├── MailAccountRespVO.java │ │ │ ├── MailAccountSaveReqVO.java │ │ │ └── MailAccountSimpleRespVO.java │ │ │ ├── log │ │ │ ├── MailLogPageReqVO.java │ │ │ └── MailLogRespVO.java │ │ │ └── template │ │ │ ├── MailTemplatePageReqVO.java │ │ │ ├── MailTemplateRespVO.java │ │ │ ├── MailTemplateSaveReqVO.java │ │ │ ├── MailTemplateSendReqVO.java │ │ │ └── MailTemplateSimpleRespVO.java │ ├── notice │ │ ├── NoticeController.java │ │ └── vo │ │ │ ├── NoticePageReqVO.java │ │ │ ├── NoticeRespVO.java │ │ │ └── NoticeSaveReqVO.java │ ├── notify │ │ ├── NotifyMessageController.java │ │ ├── NotifyTemplateController.java │ │ └── vo │ │ │ ├── message │ │ │ ├── NotifyMessageMyPageReqVO.java │ │ │ ├── NotifyMessagePageReqVO.java │ │ │ └── NotifyMessageRespVO.java │ │ │ └── template │ │ │ ├── NotifyTemplatePageReqVO.java │ │ │ ├── NotifyTemplateRespVO.java │ │ │ ├── NotifyTemplateSaveReqVO.java │ │ │ └── NotifyTemplateSendReqVO.java │ ├── oauth2 │ │ ├── OAuth2ClientController.http │ │ ├── OAuth2ClientController.java │ │ ├── OAuth2OpenController.http │ │ ├── OAuth2OpenController.java │ │ ├── OAuth2TokenController.java │ │ ├── OAuth2UserController.http │ │ ├── OAuth2UserController.java │ │ └── vo │ │ │ ├── client │ │ │ ├── OAuth2ClientPageReqVO.java │ │ │ ├── OAuth2ClientRespVO.java │ │ │ └── OAuth2ClientSaveReqVO.java │ │ │ ├── open │ │ │ ├── OAuth2OpenAccessTokenRespVO.java │ │ │ ├── OAuth2OpenAuthorizeInfoRespVO.java │ │ │ └── OAuth2OpenCheckTokenRespVO.java │ │ │ ├── token │ │ │ ├── OAuth2AccessTokenPageReqVO.java │ │ │ └── OAuth2AccessTokenRespVO.java │ │ │ └── user │ │ │ ├── OAuth2UserInfoRespVO.java │ │ │ └── OAuth2UserUpdateReqVO.java │ ├── permission │ │ ├── MenuController.http │ │ ├── MenuController.java │ │ ├── PermissionController.java │ │ ├── RoleController.http │ │ ├── RoleController.java │ │ └── vo │ │ │ ├── menu │ │ │ ├── MenuListReqVO.java │ │ │ ├── MenuRespVO.java │ │ │ ├── MenuSaveVO.java │ │ │ └── MenuSimpleRespVO.java │ │ │ ├── permission │ │ │ ├── PermissionAssignRoleDataScopeReqVO.java │ │ │ ├── PermissionAssignRoleMenuReqVO.java │ │ │ └── PermissionAssignUserRoleReqVO.java │ │ │ └── role │ │ │ ├── CopyRoleRespVO.java │ │ │ ├── RolePageReqVO.java │ │ │ ├── RoleRespVO.java │ │ │ ├── RoleSaveReqVO.java │ │ │ ├── RoleSimpleRespVO.java │ │ │ └── RoleUpdateStatusReqVO.java │ ├── sensitiveword │ │ ├── SensitiveWordController.http │ │ ├── SensitiveWordController.java │ │ └── vo │ │ │ ├── SensitiveWordPageReqVO.java │ │ │ ├── SensitiveWordRespVO.java │ │ │ └── SensitiveWordSaveVO.java │ ├── sms │ │ ├── SmsCallbackController.java │ │ ├── SmsChannelController.java │ │ ├── SmsLogController.java │ │ ├── SmsTemplateController.http │ │ ├── SmsTemplateController.java │ │ └── vo │ │ │ ├── channel │ │ │ ├── SmsChannelPageReqVO.java │ │ │ ├── SmsChannelRespVO.java │ │ │ ├── SmsChannelSaveReqVO.java │ │ │ └── SmsChannelSimpleRespVO.java │ │ │ ├── log │ │ │ ├── SmsLogPageReqVO.java │ │ │ └── SmsLogRespVO.java │ │ │ └── template │ │ │ ├── SmsTemplatePageReqVO.java │ │ │ ├── SmsTemplateRespVO.java │ │ │ ├── SmsTemplateSaveReqVO.java │ │ │ └── SmsTemplateSendReqVO.java │ ├── socail │ │ ├── SocialClientController.java │ │ ├── SocialUserController.java │ │ └── vo │ │ │ ├── client │ │ │ ├── SocialClientPageReqVO.java │ │ │ ├── SocialClientRespVO.java │ │ │ └── SocialClientSaveReqVO.java │ │ │ └── user │ │ │ ├── SocialUserBindReqVO.java │ │ │ ├── SocialUserPageReqVO.java │ │ │ ├── SocialUserRespVO.java │ │ │ └── SocialUserUnbindReqVO.java │ ├── tenant │ │ ├── TenantController.http │ │ ├── TenantController.java │ │ ├── TenantPackageController.java │ │ └── vo │ │ │ ├── packages │ │ │ ├── TenantPackagePageReqVO.java │ │ │ ├── TenantPackageRespVO.java │ │ │ ├── TenantPackageSaveReqVO.java │ │ │ └── TenantPackageSimpleRespVO.java │ │ │ └── tenant │ │ │ ├── TenantPageReqVO.java │ │ │ ├── TenantRespVO.java │ │ │ ├── TenantSaveReqVO.java │ │ │ └── TenantSimpleRespVO.java │ └── user │ │ ├── UserController.http │ │ ├── UserController.java │ │ ├── UserProfileController.http │ │ ├── UserProfileController.java │ │ └── vo │ │ ├── profile │ │ ├── UserProfileRespVO.java │ │ ├── UserProfileUpdatePasswordReqVO.java │ │ └── UserProfileUpdateReqVO.java │ │ └── user │ │ ├── UserImportExcelVO.java │ │ ├── UserImportRespVO.java │ │ ├── UserPageReqVO.java │ │ ├── UserRespVO.java │ │ ├── UserSaveReqVO.java │ │ ├── UserSimpleRespVO.java │ │ ├── UserUpdatePasswordReqVO.java │ │ └── UserUpdateStatusReqVO.java ├── app │ ├── dict │ │ ├── AppDictDataController.java │ │ └── vo │ │ │ └── AppDictDataRespVO.java │ └── ip │ │ ├── AppAreaController.java │ │ └── vo │ │ └── AppAreaNodeRespVO.java └── package-info.java ├── convert ├── auth │ └── AuthConvert.java ├── logger │ └── OperateLogConvert.java ├── mail │ └── MailAccountConvert.java ├── oauth2 │ └── OAuth2OpenConvert.java ├── package-info.java ├── social │ └── SocialUserConvert.java ├── tenant │ └── TenantConvert.java ├── user │ └── UserConvert.java └── 《芋道 Spring Boot 对象转换 MapStruct 入门》.md ├── dal ├── dataobject │ ├── dept │ │ ├── DeptDO.java │ │ ├── PostDO.java │ │ └── UserPostDO.java │ ├── dict │ │ ├── DictDataDO.java │ │ └── DictTypeDO.java │ ├── errorcode │ │ └── ErrorCodeDO.java │ ├── logger │ │ ├── LoginLogDO.java │ │ ├── OperateLogDO.java │ │ └── OperateLogV2DO.java │ ├── mail │ │ ├── MailAccountDO.java │ │ ├── MailLogDO.java │ │ └── MailTemplateDO.java │ ├── notice │ │ └── NoticeDO.java │ ├── notify │ │ ├── NotifyMessageDO.java │ │ └── NotifyTemplateDO.java │ ├── oauth2 │ │ ├── OAuth2AccessTokenDO.java │ │ ├── OAuth2ApproveDO.java │ │ ├── OAuth2ClientDO.java │ │ ├── OAuth2CodeDO.java │ │ └── OAuth2RefreshTokenDO.java │ ├── permission │ │ ├── MenuDO.java │ │ ├── RoleDO.java │ │ ├── RoleMenuDO.java │ │ └── UserRoleDO.java │ ├── sensitiveword │ │ └── SensitiveWordDO.java │ ├── sms │ │ ├── SmsChannelDO.java │ │ ├── SmsCodeDO.java │ │ ├── SmsLogDO.java │ │ └── SmsTemplateDO.java │ ├── social │ │ ├── SocialClientDO.java │ │ ├── SocialUserBindDO.java │ │ └── SocialUserDO.java │ ├── tenant │ │ ├── TenantDO.java │ │ └── TenantPackageDO.java │ └── user │ │ └── AdminUserDO.java ├── mysql │ ├── dept │ │ ├── DeptMapper.java │ │ ├── PostMapper.java │ │ └── UserPostMapper.java │ ├── dict │ │ ├── DictDataMapper.java │ │ └── DictTypeMapper.java │ ├── errorcode │ │ └── ErrorCodeMapper.java │ ├── jeelowcode │ │ └── JeeLowCodePermissionMapper.java │ ├── logger │ │ ├── LoginLogMapper.java │ │ ├── OperateLogMapper.java │ │ └── OperateLogV2Mapper.java │ ├── mail │ │ ├── MailAccountMapper.java │ │ ├── MailLogMapper.java │ │ └── MailTemplateMapper.java │ ├── notice │ │ └── NoticeMapper.java │ ├── notify │ │ ├── NotifyMessageMapper.java │ │ └── NotifyTemplateMapper.java │ ├── oauth2 │ │ ├── OAuth2AccessTokenMapper.java │ │ ├── OAuth2ApproveMapper.java │ │ ├── OAuth2ClientMapper.java │ │ ├── OAuth2CodeMapper.java │ │ └── OAuth2RefreshTokenMapper.java │ ├── package-info.java │ ├── permission │ │ ├── MenuMapper.java │ │ ├── RoleMapper.java │ │ ├── RoleMenuMapper.java │ │ └── UserRoleMapper.java │ ├── sensitiveword │ │ └── SensitiveWordMapper.java │ ├── sms │ │ ├── SmsChannelMapper.java │ │ ├── SmsCodeMapper.java │ │ ├── SmsLogMapper.java │ │ └── SmsTemplateMapper.java │ ├── social │ │ ├── SocialClientMapper.java │ │ ├── SocialUserBindMapper.java │ │ └── SocialUserMapper.java │ ├── tenant │ │ ├── TenantMapper.java │ │ └── TenantPackageMapper.java │ └── user │ │ └── AdminUserMapper.java └── redis │ ├── RedisKeyConstants.java │ └── oauth2 │ └── OAuth2AccessTokenRedisDAO.java ├── framework ├── datapermission │ ├── config │ │ └── DataPermissionConfiguration.java │ └── package-info.java ├── operatelog │ ├── core │ │ ├── AdminUserParseFunction.java │ │ ├── AreaParseFunction.java │ │ ├── BooleanParseFunction.java │ │ ├── DeptParseFunction.java │ │ └── SexParseFunction.java │ └── package-info.java ├── package-info.java ├── sms │ ├── config │ │ ├── SmsCodeProperties.java │ │ └── SmsConfiguration.java │ └── core │ │ ├── client │ │ ├── SmsClient.java │ │ ├── SmsClientFactory.java │ │ ├── dto │ │ │ ├── SmsReceiveRespDTO.java │ │ │ ├── SmsSendRespDTO.java │ │ │ └── SmsTemplateRespDTO.java │ │ └── impl │ │ │ ├── AbstractSmsClient.java │ │ │ ├── AliyunSmsClient.java │ │ │ ├── DebugDingTalkSmsClient.java │ │ │ ├── SmsClientFactoryImpl.java │ │ │ └── TencentSmsClient.java │ │ ├── enums │ │ ├── SmsChannelEnum.java │ │ └── SmsTemplateAuditStatusEnum.java │ │ └── property │ │ └── SmsChannelProperties.java └── web │ ├── config │ └── SystemWebConfiguration.java │ └── package-info.java ├── job ├── DemoJob.java └── package-info.java ├── mq ├── consumer │ ├── mail │ │ └── MailSendConsumer.java │ └── sms │ │ └── SmsSendConsumer.java ├── message │ ├── mail │ │ └── MailSendMessage.java │ └── sms │ │ └── SmsSendMessage.java └── producer │ ├── mail │ └── MailProducer.java │ └── sms │ └── SmsProducer.java ├── package-info.java ├── service ├── auth │ ├── AdminAuthService.java │ └── AdminAuthServiceImpl.java ├── dept │ ├── DeptService.java │ ├── DeptServiceImpl.java │ ├── PostService.java │ └── PostServiceImpl.java ├── dict │ ├── DictDataService.java │ ├── DictDataServiceImpl.java │ ├── DictTypeService.java │ └── DictTypeServiceImpl.java ├── errorcode │ ├── ErrorCodeService.java │ └── ErrorCodeServiceImpl.java ├── jeelowcode │ ├── IJeeLowCodePermissionService.java │ └── JeeLowCodePermissionServiceImpl.java ├── logger │ ├── LoginLogService.java │ ├── LoginLogServiceImpl.java │ ├── OperateLogService.java │ └── OperateLogServiceImpl.java ├── mail │ ├── MailAccountService.java │ ├── MailAccountServiceImpl.java │ ├── MailLogService.java │ ├── MailLogServiceImpl.java │ ├── MailSendService.java │ ├── MailSendServiceImpl.java │ ├── MailTemplateService.java │ └── MailTemplateServiceImpl.java ├── notice │ ├── NoticeService.java │ └── NoticeServiceImpl.java ├── notify │ ├── NotifyMessageService.java │ ├── NotifyMessageServiceImpl.java │ ├── NotifySendService.java │ ├── NotifySendServiceImpl.java │ ├── NotifyTemplateService.java │ └── NotifyTemplateServiceImpl.java ├── oauth2 │ ├── OAuth2ApproveService.java │ ├── OAuth2ApproveServiceImpl.java │ ├── OAuth2ClientService.java │ ├── OAuth2ClientServiceImpl.java │ ├── OAuth2CodeService.java │ ├── OAuth2CodeServiceImpl.java │ ├── OAuth2GrantService.java │ ├── OAuth2GrantServiceImpl.java │ ├── OAuth2TokenService.java │ └── OAuth2TokenServiceImpl.java ├── permission │ ├── MenuService.java │ ├── MenuServiceImpl.java │ ├── PermissionService.java │ ├── PermissionServiceImpl.java │ ├── RoleService.java │ └── RoleServiceImpl.java ├── sensitiveword │ ├── SensitiveWordService.java │ └── SensitiveWordServiceImpl.java ├── sms │ ├── SmsChannelService.java │ ├── SmsChannelServiceImpl.java │ ├── SmsCodeService.java │ ├── SmsCodeServiceImpl.java │ ├── SmsLogService.java │ ├── SmsLogServiceImpl.java │ ├── SmsSendService.java │ ├── SmsSendServiceImpl.java │ ├── SmsTemplateService.java │ └── SmsTemplateServiceImpl.java ├── social │ ├── SocialClientService.java │ ├── SocialClientServiceImpl.java │ ├── SocialUserService.java │ └── SocialUserServiceImpl.java ├── tenant │ ├── TenantPackageService.java │ ├── TenantPackageServiceImpl.java │ ├── TenantService.java │ ├── TenantServiceImpl.java │ └── handler │ │ ├── TenantInfoHandler.java │ │ └── TenantMenuHandler.java └── user │ ├── AdminUserService.java │ └── AdminUserServiceImpl.java └── util ├── collection └── SimpleTrie.java ├── oauth2 └── OAuth2Utils.java └── package-info.java /.gitattributes: -------------------------------------------------------------------------------- 1 | *.html linguist-language=java 2 | *.css linguist-language=java 3 | *.js linguist-language=java -------------------------------------------------------------------------------- /doc/sql/dm/dm.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/doc/sql/dm/dm.rar -------------------------------------------------------------------------------- /doc/sql/mysql/db_jeelowcode.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/doc/sql/mysql/db_jeelowcode.rar -------------------------------------------------------------------------------- /doc/sql/mysql/当前版本v1.0.1.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/doc/sql/mysql/当前版本v1.0.1.txt -------------------------------------------------------------------------------- /doc/sql/mysql/说明.txt: -------------------------------------------------------------------------------- 1 | db_jeelowcode.sql ->主数据库 2 | db_jeelowcodelog.sql -> 日志数据库 -------------------------------------------------------------------------------- /doc/sql/oracle/oracle.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/doc/sql/oracle/oracle.rar -------------------------------------------------------------------------------- /doc/sql/pgsql/pgsql.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/doc/sql/pgsql/pgsql.rar -------------------------------------------------------------------------------- /doc/ui/jeelowcode-ui-admin-vue3/README.md: -------------------------------------------------------------------------------- 1 | 基于 Vue3 + element-plus +Avue 实现的管理后台。仓库地址: 2 | 3 | * Gitee: 4 | * GitHub: 5 | * GitCode: -------------------------------------------------------------------------------- /jeelowcode-admin/Dockerfile: -------------------------------------------------------------------------------- 1 | ## AdoptOpenJDK 停止发布 OpenJDK 二进制,而 Eclipse Temurin 是它的延伸,提供更好的稳定性 2 | ## 感谢复旦核博士的建议!灰子哥,牛皮! 3 | FROM eclipse-temurin:8-jre 4 | 5 | ## 创建目录,并使用它作为工作目录 6 | RUN mkdir -p /yudao-server 7 | WORKDIR /yudao-server 8 | ## 将后端项目的 Jar 文件,复制到镜像中 9 | COPY ./target/yudao-server.jar app.jar 10 | 11 | ## 设置 TZ 时区 12 | ENV TZ=Asia/Shanghai 13 | ## 设置 JAVA_OPTS 环境变量,可通过 docker run -e "JAVA_OPTS=" 进行覆盖 14 | ENV JAVA_OPTS="-Xms512m -Xmx512m -Djava.security.egd=file:/dev/./urandom" 15 | 16 | ## 应用参数 17 | ENV ARGS="" 18 | 19 | ## 暴露后端项目的 48080 端口 20 | EXPOSE 48080 21 | 22 | ## 启动后端项目 23 | CMD java ${JAVA_OPTS} -jar app.jar $ARGS 24 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/btncommand/button/IButtonCommand.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.config.btncommand.button; 15 | 16 | /** 17 | * 命令-所有具体命令都要实现该接口 18 | * @param 19 | */ 20 | public interface IButtonCommand { 21 | //统一执行方法 22 | T execute(); 23 | } 24 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/btncommand/definable/DefinableButtonPlugin.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.config.btncommand.definable; 15 | 16 | /** 17 | * 自定义按钮 18 | * @param 返回值 19 | * @param 参数 20 | */ 21 | public interface DefinableButtonPlugin { 22 | T execute(S param); 23 | } 24 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/btncommand/param/ButtonParamAdd.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.config.btncommand.param; 15 | 16 | import lombok.Data; 17 | 18 | import java.util.Map; 19 | 20 | /** 21 | * 新增按钮参数 22 | */ 23 | @Data 24 | public class ButtonParamAdd { 25 | private Long dbFormId;//表单id 26 | private Map params;//参数 27 | } 28 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/btncommand/param/ButtonParamAddBatch.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.config.btncommand.param; 15 | 16 | import cn.hutool.json.JSONObject; 17 | import lombok.Data; 18 | 19 | import java.util.List; 20 | 21 | /** 22 | * 新增按钮参数 23 | */ 24 | @Data 25 | public class ButtonParamAddBatch { 26 | private Long dbFormId;//表单id 27 | private List dataMapList;//批量参数 28 | } 29 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/btncommand/param/ButtonParamDefinable.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.config.btncommand.param; 15 | 16 | import lombok.Data; 17 | 18 | /** 19 | * 自定义按钮参数 20 | */ 21 | @Data 22 | public class ButtonParamDefinable { 23 | 24 | } 25 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/btncommand/param/ButtonParamDel.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.config.btncommand.param; 15 | 16 | import lombok.Data; 17 | 18 | import java.util.List; 19 | 20 | /** 21 | * 删除按钮参数 22 | */ 23 | @Data 24 | public class ButtonParamDel { 25 | private Long dbFormId; 26 | private List dataIdList; 27 | } 28 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/btncommand/param/ButtonParamDetail.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.config.btncommand.param; 15 | 16 | import lombok.Data; 17 | 18 | import java.util.Map; 19 | 20 | /** 21 | * 新增按钮参数 22 | */ 23 | @Data 24 | public class ButtonParamDetail { 25 | private Long dbFormId;//表单id 26 | private Long dataId; 27 | private Map params; 28 | } 29 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/btncommand/param/ButtonParamEdit.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.config.btncommand.param; 15 | 16 | import lombok.Data; 17 | 18 | import java.util.Map; 19 | 20 | /** 21 | * 编辑按钮参数 22 | */ 23 | @Data 24 | public class ButtonParamEdit { 25 | private Long dbFormId; 26 | private Long dataId; 27 | private Map params; 28 | } 29 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/btncommand/param/ButtonParamEditBatch.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.config.btncommand.param; 15 | 16 | import cn.hutool.json.JSONObject; 17 | import lombok.Data; 18 | 19 | import java.util.List; 20 | 21 | /** 22 | * 编辑按钮参数 23 | */ 24 | @Data 25 | public class ButtonParamEditBatch { 26 | private Long dbFormId; 27 | private List jsonObjectList; 28 | } 29 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/btncommand/param/ButtonParamExport.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.config.btncommand.param; 15 | 16 | import lombok.Data; 17 | 18 | import java.util.Map; 19 | 20 | /** 21 | * 导入按钮参数 22 | */ 23 | @Data 24 | public class ButtonParamExport { 25 | private Long dbFormId;//表单id 26 | private Map params ;//文参数 27 | } 28 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/btncommand/param/ButtonParamExportTemplate.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.config.btncommand.param; 15 | 16 | import lombok.Data; 17 | 18 | /** 19 | * 导入按钮参数 20 | */ 21 | @Data 22 | public class ButtonParamExportTemplate { 23 | private Long dbFormId;//表单id 24 | } 25 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/btncommand/param/ButtonParamReportExport.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.config.btncommand.param; 15 | 16 | import lombok.Data; 17 | 18 | import java.util.Map; 19 | 20 | /** 21 | * 导入按钮参数 22 | */ 23 | @Data 24 | public class ButtonParamReportExport { 25 | private String reportCode;//报表编码 26 | private Map params ;//文参数 27 | } 28 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/btncommand/param/ButtonParamSummary.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.config.btncommand.param; 15 | 16 | import lombok.Data; 17 | 18 | import java.util.Map; 19 | 20 | /** 21 | * 统计按钮参数 22 | */ 23 | @Data 24 | public class ButtonParamSummary { 25 | private Long dbFormId;//表单id 26 | private Map params; 27 | } 28 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/btncommand/receiver/IButtonCommandReceiver.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.config.btncommand.receiver; 15 | 16 | /** 17 | * 按钮执行者 18 | * @param 返回值 19 | */ 20 | public interface IButtonCommandReceiver { 21 | 22 | /** 23 | * 执行 24 | * @return 25 | */ 26 | T receiver(); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/log/ApiLogEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.config.log; 15 | 16 | import com.jeelowcode.core.framework.params.model.LogRequestApiModel; 17 | import org.springframework.context.ApplicationEvent; 18 | 19 | public class ApiLogEvent extends ApplicationEvent { 20 | 21 | public ApiLogEvent(LogRequestApiModel model) { 22 | super(model); 23 | } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/virtualization/VirtualizationFieldPlugin.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.config.virtualization; 15 | 16 | import java.util.Map; 17 | 18 | /** 19 | * 虚拟化字段相关-JAVA函数处理 20 | */ 21 | public interface VirtualizationFieldPlugin { 22 | 23 | String execute(Map dataMap); 24 | } 25 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/mapper/DesFormMapper.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.mapper; 15 | 16 | 17 | import com.jeelowcode.core.framework.entity.DesformEntity; 18 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 19 | 20 | /** 21 | * @author JX 22 | * @create 2024-03-05 11:27 23 | * @dedescription: 24 | */ 25 | public interface DesFormMapper extends BaseMapper { 26 | 27 | 28 | } 29 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/mapper/ExcelFileDataMapper.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.mapper; 15 | 16 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 17 | import com.jeelowcode.core.framework.entity.ExcelFileDataEntity; 18 | 19 | 20 | public interface ExcelFileDataMapper extends BaseMapper { 21 | 22 | } 23 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/mapper/ExcelFileMapper.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.mapper; 15 | 16 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 17 | import com.jeelowcode.core.framework.entity.ExcelFileEntity; 18 | 19 | 20 | public interface ExcelFileMapper extends BaseMapper { 21 | 22 | } 23 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/mapper/FormButtonMapper.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.mapper; 15 | 16 | 17 | import com.jeelowcode.core.framework.entity.FormButtonEntity; 18 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 19 | 20 | /** 21 | * @author JX 22 | * @create 2024-03-05 11:27 23 | * @dedescription: 24 | */ 25 | public interface FormButtonMapper extends BaseMapper { 26 | 27 | 28 | } 29 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/mapper/FormRoleButtonMapper.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.mapper; 15 | 16 | import com.jeelowcode.core.framework.entity.FormRoleButtonEntity; 17 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 18 | 19 | /** 20 | * 表单开发-租户权限-按钮权限(存关) 21 | */ 22 | public interface FormRoleButtonMapper extends BaseMapper { 23 | 24 | 25 | } 26 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/mapper/FormRoleDataRuleMapper.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.mapper; 15 | 16 | import com.jeelowcode.core.framework.entity.FormRoleDataRuleEntity; 17 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 18 | 19 | /** 20 | * 表单开发-租户权限-数据权限规则(存关) 21 | */ 22 | public interface FormRoleDataRuleMapper extends BaseMapper { 23 | 24 | 25 | } 26 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/mapper/FormRoleDataTenantMapper.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.mapper; 15 | 16 | import com.jeelowcode.core.framework.entity.FormRoleDataTenantEntity; 17 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 18 | 19 | /** 20 | * 表单开发-租户权限-数据权限租户(存关) 21 | */ 22 | public interface FormRoleDataTenantMapper extends BaseMapper { 23 | 24 | 25 | } 26 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/mapper/FormRoleFieldMapper.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.mapper; 15 | 16 | import com.jeelowcode.core.framework.entity.FormRoleFieldEntity; 17 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 18 | 19 | /** 20 | * 表单开发-租户权限-字段权限(存关) 21 | */ 22 | public interface FormRoleFieldMapper extends BaseMapper { 23 | 24 | 25 | } 26 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/mapper/GroupDbFormMapper.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.mapper; 15 | 16 | 17 | import com.jeelowcode.core.framework.entity.GroupDbFormEntity; 18 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 19 | 20 | /** 21 | * 表单开发分组 22 | */ 23 | public interface GroupDbFormMapper extends BaseMapper { 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/mapper/GroupDesFormMapper.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.mapper; 15 | 16 | 17 | import com.jeelowcode.core.framework.entity.GroupDesFormEntity; 18 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 19 | 20 | /** 21 | * 表单设计分组 22 | */ 23 | public interface GroupDesFormMapper extends BaseMapper { 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/mapper/GroupReportMapper.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.mapper; 15 | 16 | 17 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 18 | import com.jeelowcode.core.framework.entity.GroupReportEntity; 19 | 20 | /** 21 | * 数据报表分组 22 | */ 23 | public interface GroupReportMapper extends BaseMapper { 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/mapper/HistoryDbFormMapper.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.mapper; 15 | 16 | 17 | import com.jeelowcode.core.framework.entity.HistoryDbformEntity; 18 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 19 | 20 | /** 21 | * 历史数据-表单开发 22 | */ 23 | public interface HistoryDbFormMapper extends BaseMapper { 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/mapper/HistoryDesFormMapper.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.mapper; 15 | 16 | 17 | import com.jeelowcode.core.framework.entity.HistoryDesformEntity; 18 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 19 | 20 | /** 21 | * 历史数据 22 | */ 23 | public interface HistoryDesFormMapper extends BaseMapper { 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/mapper/JeeLowCodeConfigMapper.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.mapper; 15 | 16 | import com.jeelowcode.core.framework.entity.JeeLowCodeConfigEntity; 17 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 18 | 19 | /** 20 | * 低代码平台-框架配置 21 | */ 22 | public interface JeeLowCodeConfigMapper extends BaseMapper{ 23 | 24 | 25 | } 26 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/mapper/LogModuleUsageRecordsMapper.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.mapper; 15 | 16 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 17 | import com.jeelowcode.core.framework.entity.LogModuleUsageRecordsEntity; 18 | 19 | /** 20 | * 模块使用记录 21 | */ 22 | public interface LogModuleUsageRecordsMapper extends BaseMapper { 23 | } 24 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/params/CopyEnhanceParam.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.params; 15 | 16 | import lombok.Data; 17 | 18 | @Data 19 | public class CopyEnhanceParam { 20 | 21 | /** 22 | * 引用
23 | * class方式 24 | */ 25 | private String reference; 26 | 27 | /** 28 | * bean名称
29 | * spring方式 30 | */ 31 | private String beanName; 32 | } 33 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/params/DataUniqueParam.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.params; 15 | 16 | import lombok.Data; 17 | 18 | /** 19 | * 校验数据是否唯一 20 | */ 21 | @Data 22 | public class DataUniqueParam { 23 | private String fieldCode; 24 | private String fieldVal; 25 | private Long dataId; 26 | } 27 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/params/UpdateFileDataParam.java: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | Apache License 4 | Version 2.0, January 2004 5 | http://www.apache.org/licenses/ 6 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 7 | 8 | 开源协议中文释意如下: 9 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 10 | 2.允许基于本平台软件开展业务系统开发。 11 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 12 | 13 | 最终解释权归:http://www.jeelowcode.com 14 | */ 15 | package com.jeelowcode.core.framework.params; 16 | 17 | import lombok.Data; 18 | 19 | @Data 20 | public class UpdateFileDataParam { 21 | private Long id; 22 | private String jsonStr; 23 | } 24 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/params/model/AllTableFieldModel.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.params.model; 15 | 16 | import lombok.Data; 17 | 18 | @Data 19 | public class AllTableFieldModel { 20 | String fieldCode; 21 | String fieldName; 22 | String fieldType; 23 | } 24 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/params/model/DataSourceConfigModel.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.params.model; 15 | 16 | import lombok.Data; 17 | 18 | @Data 19 | public class DataSourceConfigModel { 20 | private String executeSql; 21 | } 22 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/params/model/DbFieldCodeListModel.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.params.model; 15 | 16 | import lombok.Data; 17 | 18 | import java.util.List; 19 | 20 | @Data 21 | public class DbFieldCodeListModel { 22 | List selectList;//查询语句 select 后面,有可能是子查询 23 | List asList;//as 也就是查询字段 如果是子查询的话是as 后面 24 | } 25 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/params/model/ExcelImportDataDictModel.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.params.model; 15 | 16 | import lombok.Data; 17 | 18 | import java.util.List; 19 | import java.util.Map; 20 | 21 | @Data 22 | public class ExcelImportDataDictModel { 23 | private Map> dictMaps; 24 | private List keyList; 25 | } 26 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/params/model/ExcelImportResultModel.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.params.model; 15 | 16 | import lombok.Data; 17 | 18 | @Data 19 | public class ExcelImportResultModel { 20 | private Long fileId; 21 | private Long dbFormId; 22 | private String batchCode; 23 | private Integer totalCou;//总数 24 | } 25 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/params/model/ExcelTemplateModel.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.params.model; 15 | 16 | import lombok.Data; 17 | 18 | import java.util.List; 19 | import java.util.Map; 20 | 21 | @Data 22 | public class ExcelTemplateModel extends ExcelModel { 23 | List> dataList;//内容 24 | } 25 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/params/model/ExplainDatasourceSqlModel.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.params.model; 15 | 16 | import lombok.Data; 17 | 18 | @Data 19 | public class ExplainDatasourceSqlModel { 20 | private String explainSql; 21 | } 22 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/params/model/TableModel.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.params.model; 15 | 16 | import lombok.Data; 17 | 18 | @Data 19 | public class TableModel { 20 | String tableName;//表名 21 | String tableDescribe;//表描述 22 | 23 | public TableModel(String tableName, String tableDescribe) { 24 | this.tableName = tableName; 25 | this.tableDescribe = tableDescribe; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/params/vo/DbFormFieldIdVo.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.params.vo; 15 | 16 | 17 | import io.swagger.v3.oas.annotations.media.Schema; 18 | import lombok.Data; 19 | 20 | 21 | @Schema(description = "表单开发-外键配置表") 22 | @Data 23 | public class DbFormFieldIdVo { 24 | 25 | @Schema(description = "id 修改时候用到") 26 | private Long id;; 27 | 28 | } 29 | 30 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/params/vo/NotInDbformTablesVo.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.params.vo; 15 | 16 | import io.swagger.v3.oas.annotations.media.Schema; 17 | import lombok.Data; 18 | 19 | @Data 20 | public class NotInDbformTablesVo { 21 | @Schema(description = "表名") 22 | private String tableName; 23 | 24 | @Schema(description = "表描述") 25 | private String tableDescribe; 26 | } 27 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/params/vo/PageVo.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.params.vo; 15 | 16 | import lombok.Data; 17 | 18 | @Data 19 | public class PageVo { 20 | Integer pageNo ; 21 | Integer pageSize ; 22 | } 23 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/params/vo/ReportDeletedVo.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.params.vo; 15 | 16 | 17 | import io.swagger.v3.oas.annotations.media.Schema; 18 | import lombok.Data; 19 | 20 | import java.util.List; 21 | 22 | @Schema(description = "数据报表-需要删除的idlist") 23 | @Data 24 | public class ReportDeletedVo { 25 | 26 | /** 27 | * 字段属性 28 | */ 29 | private List fieldList; 30 | 31 | } 32 | 33 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/params/vo/ReportFieldIdVo.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.params.vo; 15 | 16 | 17 | import io.swagger.v3.oas.annotations.media.Schema; 18 | import lombok.Data; 19 | 20 | 21 | @Schema(description = "数据报表-外键配置表") 22 | @Data 23 | public class ReportFieldIdVo { 24 | 25 | @Schema(description = "id 修改时候用到") 26 | private Long id;; 27 | 28 | } 29 | 30 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/params/vo/SummaryTopModel.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.params.vo; 15 | 16 | import lombok.Data; 17 | 18 | import java.util.List; 19 | import java.util.Map; 20 | 21 | @Data 22 | public class SummaryTopModel { 23 | private String summaryLabel; 24 | private String summaryJson; 25 | private List> dataMapList; 26 | } 27 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/params/vo/webconfig/WebConfigFieldExportVo.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.params.vo.webconfig; 15 | 16 | import lombok.Data; 17 | 18 | @Data 19 | public class WebConfigFieldExportVo { 20 | 21 | /** 22 | * 字段 23 | */ 24 | private String fieldCode; 25 | 26 | 27 | /** 28 | * 是否导出;N=否 Y=是 29 | */ 30 | private String isExport; 31 | 32 | 33 | } 34 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/params/vo/webconfig/WebConfigJsVo.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.params.vo.webconfig; 15 | 16 | 17 | import lombok.Data; 18 | 19 | @Data 20 | public class WebConfigJsVo { 21 | 22 | /** 23 | * js增强类型;list form 24 | */ 25 | private String jsType; 26 | 27 | /** 28 | * js增强内容 29 | */ 30 | private String jsJson; 31 | } 32 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/service/IGroupDbFormService.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.service; 15 | 16 | import com.jeelowcode.core.framework.entity.GroupDbFormEntity; 17 | import com.baomidou.mybatisplus.extension.service.IService; 18 | 19 | /** 20 | * 表单开发分组 21 | */ 22 | public interface IGroupDbFormService extends IService { 23 | 24 | 25 | } 26 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/service/IGroupDesFormService.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.service; 15 | 16 | import com.jeelowcode.core.framework.entity.GroupDesFormEntity; 17 | import com.baomidou.mybatisplus.extension.service.IService; 18 | 19 | /** 20 | * 表单设计分组 21 | */ 22 | public interface IGroupDesFormService extends IService { 23 | 24 | 25 | } 26 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/service/IGroupReportService.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.service; 15 | 16 | import com.baomidou.mybatisplus.extension.service.IService; 17 | import com.jeelowcode.core.framework.entity.GroupReportEntity; 18 | 19 | /** 20 | * 数据报表分组 21 | */ 22 | public interface IGroupReportService extends IService { 23 | 24 | 25 | } 26 | -------------------------------------------------------------------------------- /jeelowcode-core/src/main/java/com/jeelowcode/core/framework/service/IJeeLowCodeService.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.core.framework.service; 15 | 16 | import java.util.Date; 17 | 18 | /** 19 | * 自己业务相关 20 | */ 21 | public interface IJeeLowCodeService { 22 | //清除ExcelData日志 23 | Integer clearExcelData(Date clearDate); 24 | 25 | // 保存模块使用记录 26 | Integer saveModelUsageRecords(); 27 | } 28 | -------------------------------------------------------------------------------- /jeelowcode-framework/jeelowcode-exception/src/main/java/com/jeelowcode/framework/exception/JeeLowCodeException.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.framework.exception; 15 | 16 | /** 17 | * 自定义异常 18 | */ 19 | public class JeeLowCodeException extends RuntimeException { 20 | public JeeLowCodeException(String message) { 21 | super(message); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /jeelowcode-framework/jeelowcode-plus/src/main/java/com/jeelowcode/framework/plus/build/buildmodel/dql/SqlInfoHavingModel.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.framework.plus.build.buildmodel.dql; 15 | 16 | 17 | /** 18 | * @author JX 19 | * @create 2024-07-04 9:14 20 | * @dedescription: 21 | */ 22 | public class SqlInfoHavingModel extends SqlInfoConditionModel { 23 | 24 | 25 | 26 | 27 | } 28 | -------------------------------------------------------------------------------- /jeelowcode-framework/jeelowcode-plus/src/main/java/com/jeelowcode/framework/plus/build/buildmodel/dql/SqlInfoWhereModel.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.framework.plus.build.buildmodel.dql; 15 | 16 | /** 17 | * @author JX 18 | * @create 2024-07-03 10:12 19 | * @dedescription: 20 | */ 21 | public class SqlInfoWhereModel extends SqlInfoConditionModel { 22 | } 23 | -------------------------------------------------------------------------------- /jeelowcode-framework/jeelowcode-plus/src/main/java/com/jeelowcode/framework/plus/core/conditions/segments/ColumnSegment.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.framework.plus.core.conditions.segments; 15 | 16 | 17 | import com.jeelowcode.framework.plus.core.conditions.ISqlSegment; 18 | 19 | /** 20 | * @author JX 21 | * @create 2024-03-26 10:03 22 | * @dedescription: 23 | */ 24 | @FunctionalInterface 25 | public interface ColumnSegment extends ISqlSegment { 26 | } 27 | -------------------------------------------------------------------------------- /jeelowcode-framework/jeelowcode-plus/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | com.jeelowcode.framework.plus.component.JeelowCodePlusInterceptor 2 | com.jeelowcode.framework.plus.component.DbManager -------------------------------------------------------------------------------- /jeelowcode-framework/jeelowcode-tenant/src/main/java/com/jeelowcode/framework/tenant/annotation/JeeLowCodeTenantIgnore.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.framework.tenant.annotation; 15 | 16 | import java.lang.annotation.*; 17 | 18 | /** 19 | * 自定义租户过滤 20 | */ 21 | @Documented 22 | @Retention(RetentionPolicy.RUNTIME) 23 | @Target({ ElementType.TYPE,ElementType.METHOD}) 24 | public @interface JeeLowCodeTenantIgnore { 25 | 26 | 27 | } 28 | -------------------------------------------------------------------------------- /jeelowcode-framework/jeelowcode-tenant/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | com.jeelowcode.framework.tenant.auto.JeeLowCodeTenantAutoConfiguration -------------------------------------------------------------------------------- /jeelowcode-framework/jeelowcode-utils/src/main/java/com/jeelowcode/framework/utils/annotation/ApiDecryptAes.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.framework.utils.annotation; 15 | 16 | import java.lang.annotation.*; 17 | 18 | /** 19 | * Api 20 | * Aes参数解密 21 | */ 22 | @Target({ElementType.METHOD}) 23 | @Retention(RetentionPolicy.RUNTIME) 24 | @Documented 25 | public @interface ApiDecryptAes { 26 | 27 | } 28 | -------------------------------------------------------------------------------- /jeelowcode-framework/jeelowcode-utils/src/main/java/com/jeelowcode/framework/utils/annotation/ApiEncryptAes.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.framework.utils.annotation; 15 | 16 | import java.lang.annotation.*; 17 | 18 | /** 19 | * Api 20 | * Aes 返回body 加密 21 | */ 22 | @Target({ElementType.METHOD}) 23 | @Retention(RetentionPolicy.RUNTIME) 24 | @Documented 25 | public @interface ApiEncryptAes { 26 | 27 | } 28 | -------------------------------------------------------------------------------- /jeelowcode-framework/jeelowcode-utils/src/main/java/com/jeelowcode/framework/utils/annotation/JeeLowCodeNoLoginViewDbForm.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.framework.utils.annotation; 15 | 16 | import java.lang.annotation.*; 17 | 18 | /** 19 | * 不登录可以查看dbform配置 20 | */ 21 | @Target({ElementType.METHOD}) 22 | @Retention(RetentionPolicy.RUNTIME) 23 | @Documented 24 | public @interface JeeLowCodeNoLoginViewDbForm { 25 | 26 | 27 | } 28 | -------------------------------------------------------------------------------- /jeelowcode-framework/jeelowcode-utils/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | com.jeelowcode.framework.utils.component.JeeLowCodeAutoConfiguration 2 | com.jeelowcode.framework.utils.component.redis.JeeLowCodeRedisConfiguration 3 | com.jeelowcode.framework.utils.component.redis.JeeLowCodeRedisUtils 4 | com.jeelowcode.framework.utils.component.pool.SyncPoolConfiguration 5 | com.jeelowcode.framework.utils.global.exeption.JeeLowCodeGlobalExceptionHandler 6 | com.jeelowcode.framework.utils.global.body.GlobalJeeLowCodeResponseBodyHandler -------------------------------------------------------------------------------- /jeelowcode-module/jeelowcode-module-api/src/main/java/com/jeelowcode/module/api/JeeLowCodeApi.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.module.api; 15 | 16 | import java.util.List; 17 | 18 | /** 19 | * 低代码 API 接口 20 | */ 21 | public interface JeeLowCodeApi { 22 | 23 | //获取表单设置的授权类型 24 | String getDbformAuthType(Long dbFormid); 25 | 26 | String getReportAuthType(String reportCode); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/mapper/DemoMapper.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.module.biz.mapper; 15 | 16 | 17 | /** 18 | * demo相关 19 | */ 20 | public interface DemoMapper { 21 | 22 | void getDemoData(Long id); 23 | } 24 | -------------------------------------------------------------------------------- /jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/service/IDemoService.java: -------------------------------------------------------------------------------- 1 | /* 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。 6 | 7 | 开源协议中文释意如下: 8 | 1.JeeLowCode开源版本无任何限制,在遵循本开源协议(Apache2.0)条款下,【允许商用】使用,不会造成侵权行为。 9 | 2.允许基于本平台软件开展业务系统开发。 10 | 3.在任何情况下,您不得使用本软件开发可能被认为与【本软件竞争】的软件。 11 | 12 | 最终解释权归:http://www.jeelowcode.com 13 | */ 14 | package com.jeelowcode.module.biz.service; 15 | 16 | import java.util.List; 17 | import java.util.Map; 18 | 19 | /** 20 | * Demo相关 21 | */ 22 | public interface IDemoService { 23 | 24 | List> getDemoData(); 25 | 26 | void testAsync(); 27 | } 28 | -------------------------------------------------------------------------------- /jeelowcode-module/jeelowcode-module-biz/src/main/resources/mapper/DemoMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | update test_lin set name=1 where id=#{id} 7 | 8 | 9 | -------------------------------------------------------------------------------- /lombok.config: -------------------------------------------------------------------------------- 1 | config.stopBubbling = true 2 | lombok.tostring.callsuper=CALL 3 | lombok.equalsandhashcode.callsuper=CALL 4 | lombok.accessors.chain=true 5 | -------------------------------------------------------------------------------- /yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/core/IntArrayValuable.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.common.core; 2 | 3 | /** 4 | * 可生成 Int 数组的接口 5 | * 6 | * @author 芋道源码 7 | */ 8 | public interface IntArrayValuable { 9 | 10 | /** 11 | * @return int 数组 12 | */ 13 | int[] array(); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/core/KeyValue.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.common.core; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import java.io.Serializable; 8 | 9 | /** 10 | * Key Value 的键值对 11 | * 12 | * @author 芋道源码 13 | */ 14 | @Data 15 | @NoArgsConstructor 16 | @AllArgsConstructor 17 | public class KeyValue implements Serializable { 18 | 19 | private K key; 20 | private V value; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/enums/DocumentEnum.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.common.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 文档地址 8 | * 9 | * @author 芋道源码 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum DocumentEnum { 14 | 15 | REDIS_INSTALL("https://gitee.com/zhijiantianya/ruoyi-vue-pro/issues/I4VCSJ", "Redis 安装文档"), 16 | TENANT("https://doc.iocoder.cn", "SaaS 多租户文档"); 17 | 18 | private final String url; 19 | private final String memo; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 基础的通用类,和框架无关 3 | * 4 | * 例如说,CommonResult 为通用返回 5 | */ 6 | package cn.iocoder.yudao.framework.common; 7 | -------------------------------------------------------------------------------- /yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/pojo/SortablePageParam.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.common.pojo; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | import lombok.ToString; 7 | 8 | import java.util.List; 9 | 10 | @Schema(description = "可排序的分页参数") 11 | @Data 12 | @EqualsAndHashCode(callSuper = true) 13 | @ToString(callSuper = true) 14 | public class SortablePageParam extends PageParam { 15 | 16 | @Schema(description = "排序字段") 17 | private List sortingFields; 18 | 19 | } -------------------------------------------------------------------------------- /yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/collection/SetUtils.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.common.util.collection; 2 | 3 | import cn.hutool.core.collection.CollUtil; 4 | 5 | import java.util.Set; 6 | 7 | /** 8 | * Set 工具类 9 | * 10 | * @author 芋道源码 11 | */ 12 | public class SetUtils { 13 | 14 | @SafeVarargs 15 | public static Set asSet(T... objs) { 16 | return CollUtil.newHashSet(objs); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/monitor/TracerUtils.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.common.util.monitor; 2 | 3 | import org.apache.skywalking.apm.toolkit.trace.TraceContext; 4 | 5 | /** 6 | * 链路追踪工具类 7 | * 8 | * 考虑到每个 starter 都需要用到该工具类,所以放到 common 模块下的 util 包下 9 | * 10 | * @author 芋道源码 11 | */ 12 | public class TracerUtils { 13 | 14 | /** 15 | * 私有化构造方法 16 | */ 17 | private TracerUtils() { 18 | } 19 | 20 | /** 21 | * 获得链路追踪编号,直接返回 SkyWalking 的 TraceId。 22 | * 如果不存在的话为空字符串!!! 23 | * 24 | * @return 链路追踪编号 25 | */ 26 | public static String getTraceId() { 27 | return TraceContext.traceId(); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 对于工具类的选择,优先查找 Hutool 中有没对应的方法 3 | * 如果没有,则自己封装对应的工具类,以 Utils 结尾,用于区分 4 | * 5 | * ps:如果担心 Hutool 存在坑的问题,可以阅读 Hutool 的实现源码,以确保可靠性。并且,可以补充相关的单元测试。 6 | */ 7 | package cn.iocoder.yudao.framework.common.util; 8 | -------------------------------------------------------------------------------- /yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/validation/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 使用 Hibernate Validator 实现参数校验 3 | */ 4 | package cn.iocoder.yudao.framework.common.validation; 5 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/rule/dept/DeptDataPermissionRuleCustomizer.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.datapermission.core.rule.dept; 2 | 3 | /** 4 | * {@link DeptDataPermissionRule} 的自定义配置接口 5 | * 6 | * @author 芋道源码 7 | */ 8 | @FunctionalInterface 9 | public interface DeptDataPermissionRuleCustomizer { 10 | 11 | /** 12 | * 自定义该权限规则 13 | * 1. 调用 {@link DeptDataPermissionRule#addDeptColumn(Class, String)} 方法,配置基于 dept_id 的过滤规则 14 | * 2. 调用 {@link DeptDataPermissionRule#addUserColumn(Class, String)} 方法,配置基于 user_id 的过滤规则 15 | * 16 | * @param rule 权限规则 17 | */ 18 | void customize(DeptDataPermissionRule rule); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/rule/dept/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 基于部门的数据权限规则 3 | * 4 | * @author 芋道源码 5 | */ 6 | package cn.iocoder.yudao.framework.datapermission.core.rule.dept; 7 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 基于 JSqlParser 解析 SQL,增加数据权限的 WHERE 条件 3 | */ 4 | package cn.iocoder.yudao.framework.datapermission; 5 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.iocoder.yudao.framework.datapermission.config.YudaoDataPermissionAutoConfiguration 2 | cn.iocoder.yudao.framework.datapermission.config.YudaoDeptDataPermissionAutoConfiguration -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-biz-dict/src/main/java/cn/iocoder/yudao/framework/dict/config/YudaoDictAutoConfiguration.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.dict.config; 2 | 3 | import cn.iocoder.yudao.framework.dict.core.util.DictFrameworkUtils; 4 | import cn.iocoder.yudao.module.system.api.dict.DictDataApi; 5 | import org.springframework.boot.autoconfigure.AutoConfiguration; 6 | import org.springframework.context.annotation.Bean; 7 | 8 | @AutoConfiguration 9 | public class YudaoDictAutoConfiguration { 10 | 11 | @Bean 12 | @SuppressWarnings("InstantiationOfUtilityClass") 13 | public DictFrameworkUtils dictUtils(DictDataApi dictDataApi) { 14 | DictFrameworkUtils.init(dictDataApi); 15 | return new DictFrameworkUtils(); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-biz-dict/src/main/java/cn/iocoder/yudao/framework/dict/core/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 占位 3 | */ 4 | package cn.iocoder.yudao.framework.dict.core; 5 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-biz-dict/src/main/java/cn/iocoder/yudao/framework/dict/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 字典数据模块,提供 {@link cn.iocoder.yudao.framework.dict.core.util.DictFrameworkUtils} 工具类 3 | * 4 | * 通过将字典缓存在内存中,保证性能 5 | */ 6 | package cn.iocoder.yudao.framework.dict; 7 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-biz-dict/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.iocoder.yudao.framework.dict.config.YudaoDictAutoConfiguration -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-biz-ip/src/main/java/cn/iocoder/yudao/framework/ip/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * IP 拓展,支持如下功能: 3 | * 4 | * 1. IP 功能:查询 IP 对应的城市信息 5 | * 基于 https://gitee.com/lionsoul/ip2region 实现 6 | * 2. 城市功能:查询城市编码对应的城市信息 7 | * 基于 https://github.com/modood/Administrative-divisions-of-China 实现 8 | * 9 | * @author 芋道源码 10 | */ 11 | package cn.iocoder.yudao.framework.ip; 12 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-biz-ip/src/main/resources/ip2region.xdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-biz-ip/src/main/resources/ip2region.xdb -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelog/core/package-info.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.operatelog.core; 2 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelog/core/service/OperateLogFrameworkService.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.operatelog.core.service; 2 | 3 | /** 4 | * 操作日志 Framework Service 接口 5 | * 6 | * @author 芋道源码 7 | */ 8 | public interface OperateLogFrameworkService { 9 | 10 | /** 11 | * 记录操作日志 12 | * 13 | * @param operateLog 操作日志请求 14 | */ 15 | void createOperateLog(OperateLog operateLog); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelog/core/util/OperateLogUtils.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.operatelog.core.util; 2 | 3 | import cn.iocoder.yudao.framework.operatelog.core.aop.OperateLogAspect; 4 | 5 | /** 6 | * 操作日志工具类 7 | * 目前主要的作用,是提供给业务代码,记录操作明细和拓展字段 8 | * 9 | * @author 芋道源码 10 | */ 11 | public class OperateLogUtils { 12 | 13 | public static void setContent(String content) { 14 | OperateLogAspect.setContent(content); 15 | } 16 | 17 | public static void addExt(String key, Object value) { 18 | OperateLogAspect.addExt(key, value); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelog/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 用户操作日志:记录用户的操作,用于对用户的操作的审计与追溯,永久保存。 3 | * 4 | * @author 芋道源码 5 | */ 6 | package cn.iocoder.yudao.framework.operatelog; 7 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.iocoder.yudao.framework.operatelog.config.YudaoOperateLogAutoConfiguration -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-biz-tenant/src/main/java/cn/iocoder/yudao/framework/tenant/core/aop/TenantIgnore.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.tenant.core.aop; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 忽略租户,标记指定方法不进行租户的自动过滤 7 | * 可用于类和方法 8 | */ 9 | @Target({ElementType.TYPE,ElementType.METHOD}) 10 | @Retention(RetentionPolicy.RUNTIME) 11 | @Inherited 12 | public @interface TenantIgnore { 13 | } 14 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-biz-tenant/src/main/java/cn/iocoder/yudao/framework/tenant/core/db/TenantBaseDO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.tenant.core.db; 2 | 3 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | /** 8 | * 拓展多租户的 BaseDO 基类 9 | * 10 | * @author 芋道源码 11 | */ 12 | @Data 13 | @EqualsAndHashCode(callSuper = true) 14 | public abstract class TenantBaseDO extends BaseDO { 15 | 16 | /** 17 | * 多租户编号 18 | */ 19 | private Long tenantId; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-biz-tenant/src/main/java/cn/iocoder/yudao/framework/tenant/core/job/TenantJob.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.tenant.core.job; 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 | * 多租户 Job 注解 10 | */ 11 | @Target({ElementType.METHOD}) 12 | @Retention(RetentionPolicy.RUNTIME) 13 | public @interface TenantJob { 14 | } 15 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-biz-tenant/src/main/java/cn/iocoder/yudao/framework/tenant/core/service/TenantFrameworkService.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.tenant.core.service; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * Tenant 框架 Service 接口,定义获取租户信息 7 | * 8 | * @author 芋道源码 9 | */ 10 | public interface TenantFrameworkService { 11 | 12 | /** 13 | * 获得所有租户 14 | * 15 | * @return 租户编号数组 16 | */ 17 | List getTenantIds(); 18 | 19 | /** 20 | * 校验租户是否合法 21 | * 22 | * @param id 租户编号 23 | */ 24 | void validTenant(Long id); 25 | 26 | } 27 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-biz-tenant/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.env.EnvironmentPostProcessor=\ 2 | cn.iocoder.yudao.framework.tenant.core.mq.kafka.TenantKafkaEnvironmentPostProcessor 3 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-biz-tenant/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.iocoder.yudao.framework.tenant.config.YudaoTenantAutoConfiguration -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/java/cn/iocoder/yudao/framework/captcha/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 验证码拓展 3 | * 1. 基于 aj-captcha 实现滑块验证码,文档:https://ajcaptcha.beliefteam.cn/captcha-doc/ 4 | * 5 | * @author 星语 6 | */ 7 | package cn.iocoder.yudao.framework.captcha; 8 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/META-INF/services/com.xingyuv.captcha.service.CaptchaCacheService: -------------------------------------------------------------------------------- 1 | cn.iocoder.yudao.framework.captcha.core.service.RedisCaptchaServiceImpl 2 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.iocoder.yudao.framework.captcha.config.YudaoCaptchaConfiguration -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg1.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg2.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg3.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg4.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg5.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg6.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg7.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg8.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg9.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/1.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/10.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/11.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/12.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/13.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/14.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/15.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/16.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/17.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/18.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/19.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/8.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/9.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/2.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/3.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/4.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg1.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg10.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg2.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg3.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg4.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg5.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg6.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg7.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg8.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg9.png -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/core/annotations/DictFormat.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.excel.core.annotations; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 字典格式化 7 | * 8 | * 实现将字典数据的值,格式化成字典数据的标签 9 | */ 10 | @Target({ElementType.FIELD}) 11 | @Retention(RetentionPolicy.RUNTIME) 12 | @Inherited 13 | public @interface DictFormat { 14 | 15 | /** 16 | * 例如说,SysDictTypeConstants、InfDictTypeConstants 17 | * 18 | * @return 字典类型 19 | */ 20 | String value(); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 基于 EasyExcel 实现 Excel 相关的操作 3 | */ 4 | package cn.iocoder.yudao.framework.excel; 5 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/config/YudaoFileAutoConfiguration.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.file.config; 2 | 3 | import cn.iocoder.yudao.framework.file.core.client.FileClientFactory; 4 | import cn.iocoder.yudao.framework.file.core.client.FileClientFactoryImpl; 5 | import org.springframework.boot.autoconfigure.AutoConfiguration; 6 | import org.springframework.context.annotation.Bean; 7 | 8 | /** 9 | * 文件配置类 10 | * 11 | * @author 芋道源码 12 | */ 13 | @AutoConfiguration 14 | public class YudaoFileAutoConfiguration { 15 | 16 | @Bean 17 | public FileClientFactory fileClientFactory() { 18 | return new FileClientFactoryImpl(); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/FileClientConfig.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.file.core.client; 2 | 3 | import com.fasterxml.jackson.annotation.JsonTypeInfo; 4 | 5 | /** 6 | * 文件客户端的配置 7 | * 不同实现的客户端,需要不同的配置,通过子类来定义 8 | * 9 | * @author 芋道源码 10 | */ 11 | @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS) 12 | // @JsonTypeInfo 注解的作用,Jackson 多态 13 | // 1. 序列化到时数据库时,增加 @class 属性。 14 | // 2. 反序列化到内存对象时,通过 @class 属性,可以创建出正确的类型 15 | public interface FileClientConfig { 16 | } 17 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/FileClientFactory.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.file.core.client; 2 | 3 | public interface FileClientFactory { 4 | 5 | /** 6 | * 获得文件客户端 7 | * 8 | * @param configId 配置编号 9 | * @return 文件客户端 10 | */ 11 | FileClient getFileClient(Long configId); 12 | 13 | /** 14 | * 创建文件客户端 15 | * 16 | * @param configId 配置编号 17 | * @param storage 存储器的枚举 {@link cn.iocoder.yudao.framework.file.core.enums.FileStorageEnum} 18 | * @param config 文件配置 19 | */ 20 | void createOrUpdateFileClient(Long configId, Integer storage, Config config); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/db/DBFileClientConfig.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.file.core.client.db; 2 | 3 | import cn.iocoder.yudao.framework.file.core.client.FileClientConfig; 4 | import lombok.Data; 5 | import org.hibernate.validator.constraints.URL; 6 | 7 | import javax.validation.constraints.NotEmpty; 8 | 9 | /** 10 | * 基于 DB 存储的文件客户端的配置类 11 | * 12 | * @author 芋道源码 13 | */ 14 | @Data 15 | public class DBFileClientConfig implements FileClientConfig { 16 | 17 | /** 18 | * 自定义域名 19 | */ 20 | @NotEmpty(message = "domain 不能为空") 21 | @URL(message = "domain 必须是 URL 格式") 22 | private String domain; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/s3/FilePresignedUrlRespDTO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.file.core.client.s3; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * 文件预签名地址 Response DTO 9 | * 10 | * @author owen 11 | */ 12 | @Data 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | public class FilePresignedUrlRespDTO { 16 | 17 | /** 18 | * 文件上传 URL(用于上传) 19 | * 20 | * 例如说: 21 | */ 22 | private String uploadUrl; 23 | 24 | /** 25 | * 文件 URL(用于读取、下载等) 26 | */ 27 | private String url; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-file/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.iocoder.yudao.framework.file.config.YudaoFileAutoConfiguration -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-file/src/test/java/cn/iocoder/yudao/framework/file/config/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 占位,避免 package 无法提交到 Git 仓库 3 | */ 4 | package cn.iocoder.yudao.framework.file.config; 5 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-file/src/test/java/cn/iocoder/yudao/framework/file/core/enums/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 占位,避免 package 无法提交到 Git 仓库 3 | */ 4 | package cn.iocoder.yudao.framework.file.core.enums; 5 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-file/src/test/resources/file/erweima.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-framework/yudao-spring-boot-starter-file/src/test/resources/file/erweima.jpg -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-flowable/src/main/java/cn/iocoder/yudao/framework/flowable/core/enums/BpmnModelConstants.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.flowable.core.enums; 2 | 3 | /** 4 | * 流程常量信息 5 | */ 6 | public interface BpmnModelConstants { 7 | 8 | String BPMN_FILE_SUFFIX = ".bpmn"; 9 | 10 | /** 11 | * BPMN 中的命名空间 12 | * 13 | * 这个东西有可能导致无法切换工作流程的实现 14 | */ 15 | String NAMESPACE = "http://flowable.org/bpmn"; 16 | 17 | /** 18 | * 自定义属性 dataType 19 | */ 20 | String PROCESS_CUSTOM_DATA_TYPE = "dataType"; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-flowable/src/main/java/cn/iocoder/yudao/framework/flowable/core/package-info.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.flowable.core; 2 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-flowable/src/main/java/cn/iocoder/yudao/framework/flowable/package-info.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.flowable; 2 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-flowable/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.iocoder.yudao.framework.flowable.config.YudaoFlowableConfiguration -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-job/src/main/java/cn/iocoder/yudao/framework/quartz/core/enums/JobDataKeyEnum.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.quartz.core.enums; 2 | 3 | /** 4 | * Quartz Job Data 的 key 枚举 5 | */ 6 | public enum JobDataKeyEnum { 7 | 8 | JOB_ID, 9 | JOB_HANDLER_NAME, 10 | JOB_HANDLER_PARAM, 11 | JOB_RETRY_COUNT, // 最大重试次数 12 | JOB_RETRY_INTERVAL, // 每次重试间隔 13 | 14 | } 15 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-job/src/main/java/cn/iocoder/yudao/framework/quartz/core/handler/JobHandler.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.quartz.core.handler; 2 | 3 | /** 4 | * 任务处理器 5 | * 6 | * @author 芋道源码 7 | */ 8 | public interface JobHandler { 9 | 10 | /** 11 | * 执行任务 12 | * 13 | * @param param 参数 14 | * @return 结果 15 | * @throws Exception 异常 16 | */ 17 | String execute(String param) throws Exception; 18 | 19 | } 20 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-job/src/main/java/cn/iocoder/yudao/framework/quartz/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 1. 定时任务,采用 Quartz 实现进程内的任务执行。 3 | * 考虑到高可用,使用 Quartz 自带的 MySQL 集群方案。 4 | * 5 | * 2. 异步任务,采用 Spring Async 异步执行。 6 | */ 7 | package cn.iocoder.yudao.framework.quartz; 8 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-job/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.iocoder.yudao.framework.quartz.config.YudaoQuartzAutoConfiguration 2 | cn.iocoder.yudao.framework.quartz.config.YudaoAsyncAutoConfiguration -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-monitor/src/main/java/cn/iocoder/yudao/framework/tracer/config/TracerProperties.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.tracer.config; 2 | 3 | import lombok.Data; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | 6 | /** 7 | * BizTracer配置类 8 | * 9 | * @author 麻薯 10 | */ 11 | @ConfigurationProperties("yudao.tracer") 12 | @Data 13 | public class TracerProperties { 14 | } 15 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-monitor/src/main/java/cn/iocoder/yudao/framework/tracer/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 使用 SkyWalking 组件,作为链路追踪、日志中心。 3 | * 4 | * @author 芋道源码 5 | */ 6 | package cn.iocoder.yudao.framework.tracer; 7 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-monitor/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.iocoder.yudao.framework.tracer.config.YudaoTracerAutoConfiguration 2 | cn.iocoder.yudao.framework.tracer.config.YudaoMetricsAutoConfiguration -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-mq/src/main/java/cn/iocoder/yudao/framework/mq/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 消息队列,支持 Redis、RocketMQ、RabbitMQ、Kafka 四种 3 | */ 4 | package cn.iocoder.yudao.framework.mq; 5 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-mq/src/main/java/cn/iocoder/yudao/framework/mq/rabbitmq/core/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 占位符,无特殊逻辑 3 | */ 4 | package cn.iocoder.yudao.framework.mq.rabbitmq.core; -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-mq/src/main/java/cn/iocoder/yudao/framework/mq/rabbitmq/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 消息队列,基于 RabbitMQ 提供 3 | */ 4 | package cn.iocoder.yudao.framework.mq.rabbitmq; 5 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-mq/src/main/java/cn/iocoder/yudao/framework/mq/redis/core/message/AbstractRedisMessage.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.mq.redis.core.message; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.HashMap; 6 | import java.util.Map; 7 | 8 | /** 9 | * Redis 消息抽象基类 10 | * 11 | * @author 芋道源码 12 | */ 13 | @Data 14 | public abstract class AbstractRedisMessage { 15 | 16 | /** 17 | * 头 18 | */ 19 | private Map headers = new HashMap<>(); 20 | 21 | public String getHeader(String key) { 22 | return headers.get(key); 23 | } 24 | 25 | public void addHeader(String key, String value) { 26 | headers.put(key, value); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-mq/src/main/java/cn/iocoder/yudao/framework/mq/redis/core/pubsub/AbstractRedisChannelMessage.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.mq.redis.core.pubsub; 2 | 3 | import cn.iocoder.yudao.framework.mq.redis.core.message.AbstractRedisMessage; 4 | import com.fasterxml.jackson.annotation.JsonIgnore; 5 | 6 | /** 7 | * Redis Channel Message 抽象类 8 | * 9 | * @author 芋道源码 10 | */ 11 | public abstract class AbstractRedisChannelMessage extends AbstractRedisMessage { 12 | 13 | /** 14 | * 获得 Redis Channel,默认使用类名 15 | * 16 | * @return Channel 17 | */ 18 | @JsonIgnore // 避免序列化。原因是,Redis 发布 Channel 消息的时候,已经会指定。 19 | public String getChannel() { 20 | return getClass().getSimpleName(); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-mq/src/main/java/cn/iocoder/yudao/framework/mq/redis/core/stream/AbstractRedisStreamMessage.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.mq.redis.core.stream; 2 | 3 | import cn.iocoder.yudao.framework.mq.redis.core.message.AbstractRedisMessage; 4 | import com.fasterxml.jackson.annotation.JsonIgnore; 5 | 6 | /** 7 | * Redis Stream Message 抽象类 8 | * 9 | * @author 芋道源码 10 | */ 11 | public abstract class AbstractRedisStreamMessage extends AbstractRedisMessage { 12 | 13 | /** 14 | * 获得 Redis Stream Key,默认使用类名 15 | * 16 | * @return Channel 17 | */ 18 | @JsonIgnore // 避免序列化 19 | public String getStreamKey() { 20 | return getClass().getSimpleName(); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-mq/src/main/java/cn/iocoder/yudao/framework/mq/redis/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 消息队列,基于 Redis 提供: 3 | * 1. 基于 Pub/Sub 实现广播消费 4 | * 2. 基于 Stream 实现集群消费 5 | */ 6 | package cn.iocoder.yudao.framework.mq.redis; 7 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-mq/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.iocoder.yudao.framework.mq.redis.config.YudaoRedisMQProducerAutoConfiguration 2 | cn.iocoder.yudao.framework.mq.redis.config.YudaoRedisMQConsumerAutoConfiguration 3 | cn.iocoder.yudao.framework.mq.rabbitmq.config.YudaoRabbitMQAutoConfiguration -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/datasource/core/enums/DataSourceEnum.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.datasource.core.enums; 2 | 3 | /** 4 | * 对应于多数据源中不同数据源配置 5 | * 6 | * 通过在方法上,使用 {@link com.baomidou.dynamic.datasource.annotation.DS} 注解,设置使用的数据源。 7 | * 注意,默认是 {@link #MASTER} 数据源 8 | * 9 | * 对应官方文档为 http://dynamic-datasource.com/guide/customize/Annotation.html 10 | */ 11 | public interface DataSourceEnum { 12 | 13 | /** 14 | * 主库,推荐使用 {@link com.baomidou.dynamic.datasource.annotation.Master} 注解 15 | */ 16 | String MASTER = "master"; 17 | /** 18 | * 从库,推荐使用 {@link com.baomidou.dynamic.datasource.annotation.Slave} 注解 19 | */ 20 | String SLAVE = "slave"; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/datasource/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 数据库连接池,采用 Druid 3 | * 多数据源,采用爆米花 4 | */ 5 | package cn.iocoder.yudao.framework.datasource; 6 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/enums/SqlConstants.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.mybatis.core.enums; 2 | 3 | import com.baomidou.mybatisplus.annotation.DbType; 4 | 5 | /** 6 | * SQL相关常量类 7 | * 8 | * @author 芋道源码 9 | */ 10 | public class SqlConstants { 11 | 12 | /** 13 | * 数据库的类型 14 | */ 15 | public static DbType DB_TYPE; 16 | 17 | public static void init(DbType dbType) { 18 | DB_TYPE = dbType; 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 使用 MyBatis Plus 提升使用 MyBatis 的开发效率 3 | */ 4 | package cn.iocoder.yudao.framework.mybatis; 5 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/package-info.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework; 2 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-mybatis/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.env.EnvironmentPostProcessor=\ 2 | cn.iocoder.yudao.framework.mybatis.config.IdTypeEnvironmentPostProcessor 3 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-mybatis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.iocoder.yudao.framework.datasource.config.YudaoDataSourceAutoConfiguration 2 | cn.iocoder.yudao.framework.mybatis.config.YudaoMybatisAutoConfiguration -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-protection/src/main/java/cn/iocoder/yudao/framework/idempotent/core/keyresolver/IdempotentKeyResolver.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.idempotent.core.keyresolver; 2 | 3 | import cn.iocoder.yudao.framework.idempotent.core.annotation.Idempotent; 4 | import org.aspectj.lang.JoinPoint; 5 | 6 | /** 7 | * 幂等 Key 解析器接口 8 | * 9 | * @author 芋道源码 10 | */ 11 | public interface IdempotentKeyResolver { 12 | 13 | /** 14 | * 解析一个 Key 15 | * 16 | * @param idempotent 幂等注解 17 | * @param joinPoint AOP 切面 18 | * @return Key 19 | */ 20 | String resolver(JoinPoint joinPoint, Idempotent idempotent); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-protection/src/main/java/cn/iocoder/yudao/framework/idempotent/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 幂等组件,参考 https://github.com/it4alla/idempotent 项目实现 3 | * 实现原理是,相同参数的方法,一段时间内,有且仅能执行一次。通过这样的方式,保证幂等性。 4 | * 5 | * 使用场景:例如说,用户快速的双击了某个按钮,前端没有禁用该按钮,导致发送了两次重复的请求。 6 | * 7 | * 和 it4alla/idempotent 组件的差异点,主要体现在两点: 8 | * 1. 我们去掉了 @Idempotent 注解的 delKey 属性。原因是,本质上 delKey 为 true 时,实现的是分布式锁的能力 9 | * 此时,我们偏向使用 Lock4j 组件。原则上,一个组件只提供一种单一的能力。 10 | * 2. 考虑到组件的通用性,我们并未像 it4alla/idempotent 组件一样使用 Redisson RMap 结构,而是直接使用 Redis 的 String 数据格式。 11 | */ 12 | package cn.iocoder.yudao.framework.idempotent; 13 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-protection/src/main/java/cn/iocoder/yudao/framework/lock4j/core/Lock4jRedisKeyConstants.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.lock4j.core; 2 | 3 | /** 4 | * Lock4j Redis Key 枚举类 5 | * 6 | * @author 芋道源码 7 | */ 8 | public interface Lock4jRedisKeyConstants { 9 | 10 | /** 11 | * 分布式锁 12 | * 13 | * KEY 格式:lock4j:%s // 参数来自 DefaultLockKeyBuilder 类 14 | * VALUE 数据格式:HASH // RLock.class:Redisson 的 Lock 锁,使用 Hash 数据结构 15 | * 过期时间:不固定 16 | */ 17 | String LOCK4J = "lock4j:%s"; 18 | 19 | } 20 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-protection/src/main/java/cn/iocoder/yudao/framework/lock4j/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 分布式锁组件,使用 https://gitee.com/baomidou/lock4j 开源项目 3 | */ 4 | package cn.iocoder.yudao.framework.lock4j; 5 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-protection/src/main/java/cn/iocoder/yudao/framework/resilience4j/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 使用 Resilience4j 组件,实现服务保障,包括: 3 | * 1. 熔断器 4 | * 2. 限流器 5 | * 3. 舱壁隔离 6 | * 4. 重试 7 | * 5. 限时器 8 | */ 9 | package cn.iocoder.yudao.framework.resilience4j; 10 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-protection/src/main/java/cn/iocoder/yudao/framework/resilience4j/《芋道 Spring Boot 服务容错 Resilience4j 入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-protection/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.iocoder.yudao.framework.idempotent.config.YudaoIdempotentConfiguration 2 | cn.iocoder.yudao.framework.lock4j.config.YudaoLock4jConfiguration -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-redis/src/main/java/cn/iocoder/yudao/framework/redis/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 采用 Spring Data Redis 操作 Redis,底层使用 Redisson 作为客户端 3 | */ 4 | package cn.iocoder.yudao.framework.redis; 5 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration 2 | cn.iocoder.yudao.framework.redis.config.YudaoCacheAutoConfiguration -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/operatelog/core/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 占位,无特殊作用 3 | */ 4 | package cn.iocoder.yudao.framework.operatelog.core; -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/operatelog/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 基于 mzt-log 框架 3 | * 实现操作日志功能 4 | * 5 | * @author HUIHUI 6 | */ 7 | package cn.iocoder.yudao.framework.operatelog; 8 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/annotations/PreAuthenticated.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.security.core.annotations; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 声明用户需要登录 7 | * 8 | * 为什么不使用 {@link org.springframework.security.access.prepost.PreAuthorize} 注解,原因是不通过时,抛出的是认证不通过,而不是未登录 9 | * 10 | * @author 芋道源码 11 | */ 12 | @Target({ElementType.METHOD}) 13 | @Retention(RetentionPolicy.RUNTIME) 14 | @Inherited 15 | @Documented 16 | public @interface PreAuthenticated { 17 | } 18 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 基于 Spring Security 框架 3 | * 实现安全认证功能 4 | * 5 | * @author 芋道源码 6 | */ 7 | package cn.iocoder.yudao.framework.security; 8 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.iocoder.yudao.framework.security.config.YudaoSecurityAutoConfiguration 2 | cn.iocoder.yudao.framework.security.config.YudaoWebSecurityConfigurerAdapter 3 | cn.iocoder.yudao.framework.operatelog.config.YudaoOperateLogV2Configuration -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-test/src/main/java/cn/iocoder/yudao/framework/test/core/ut/BaseMockitoUnitTest.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.test.core.ut; 2 | 3 | import org.junit.jupiter.api.extension.ExtendWith; 4 | import org.mockito.junit.jupiter.MockitoExtension; 5 | 6 | /** 7 | * 纯 Mockito 的单元测试 8 | * 9 | * @author 芋道源码 10 | */ 11 | @ExtendWith(MockitoExtension.class) 12 | public class BaseMockitoUnitTest { 13 | } 14 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-test/src/main/java/cn/iocoder/yudao/framework/test/core/ut/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 提供单元测试 Unit Test 的基类 3 | */ 4 | package cn.iocoder.yudao.framework.test.core.ut; 5 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-test/src/main/java/cn/iocoder/yudao/framework/test/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 测试组件,用于单元测试、集成测试等等 3 | */ 4 | package cn.iocoder.yudao.framework.test; 5 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/ApiAccessLogFrameworkService.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.apilog.core.service; 2 | 3 | /** 4 | * API 访问日志 Framework Service 接口 5 | * 6 | * @author 芋道源码 7 | */ 8 | public interface ApiAccessLogFrameworkService { 9 | 10 | /** 11 | * 创建 API 访问日志 12 | * 13 | * @param apiAccessLog API 访问日志 14 | */ 15 | void createApiAccessLog(ApiAccessLog apiAccessLog); 16 | } 17 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/ApiErrorLogFrameworkService.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.apilog.core.service; 2 | 3 | /** 4 | * API 错误日志 Framework Service 接口 5 | * 6 | * @author 芋道源码 7 | */ 8 | public interface ApiErrorLogFrameworkService { 9 | 10 | /** 11 | * 创建 API 错误日志 12 | * 13 | * @param apiErrorLog API 错误日志 14 | */ 15 | void createApiErrorLog(ApiErrorLog apiErrorLog); 16 | } 17 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * API 日志:包含两类 3 | * 1. API 访问日志:记录用户访问 API 的访问日志,定期归档历史日志。 4 | * 2. 异常日志:记录用户访问 API 的系统异常,方便日常排查问题与告警。 5 | * 6 | * @author 芋道源码 7 | */ 8 | package cn.iocoder.yudao.framework.apilog; 9 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/banner/config/YudaoBannerAutoConfiguration.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.banner.config; 2 | 3 | import cn.iocoder.yudao.framework.banner.core.BannerApplicationRunner; 4 | import org.springframework.boot.autoconfigure.AutoConfiguration; 5 | import org.springframework.context.annotation.Bean; 6 | 7 | /** 8 | * Banner 的自动配置类 9 | * 10 | * @author 芋道源码 11 | */ 12 | @AutoConfiguration 13 | public class YudaoBannerAutoConfiguration { 14 | 15 | @Bean 16 | public BannerApplicationRunner bannerApplicationRunner() { 17 | return new BannerApplicationRunner(); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/banner/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Banner 用于在 console 控制台,打印开发文档、接口文档等 3 | * 4 | * @author 芋道源码 5 | */ 6 | package cn.iocoder.yudao.framework.banner; 7 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/handler/DesensitizationHandler.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.desensitize.core.base.handler; 2 | 3 | import java.lang.annotation.Annotation; 4 | 5 | /** 6 | * 脱敏处理器接口 7 | * 8 | * @author gaibu 9 | */ 10 | public interface DesensitizationHandler { 11 | 12 | /** 13 | * 脱敏 14 | * 15 | * @param origin 原始字符串 16 | * @param annotation 注解信息 17 | * @return 脱敏后的字符串 18 | */ 19 | String desensitize(String origin, T annotation); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/DefaultRegexDesensitizationHandler.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.desensitize.core.regex.handler; 2 | 3 | import cn.iocoder.yudao.framework.desensitize.core.regex.annotation.RegexDesensitize; 4 | 5 | /** 6 | * {@link RegexDesensitize} 的正则脱敏处理器 7 | * 8 | * @author gaibu 9 | */ 10 | public class DefaultRegexDesensitizationHandler extends AbstractRegexDesensitizationHandler { 11 | 12 | @Override 13 | String getRegex(RegexDesensitize annotation) { 14 | return annotation.regex(); 15 | } 16 | 17 | @Override 18 | String getReplacer(RegexDesensitize annotation) { 19 | return annotation.replacer(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/EmailDesensitizationHandler.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.desensitize.core.regex.handler; 2 | 3 | import cn.iocoder.yudao.framework.desensitize.core.regex.annotation.EmailDesensitize; 4 | 5 | /** 6 | * {@link EmailDesensitize} 的脱敏处理器 7 | * 8 | * @author gaibu 9 | */ 10 | public class EmailDesensitizationHandler extends AbstractRegexDesensitizationHandler { 11 | 12 | @Override 13 | String getRegex(EmailDesensitize annotation) { 14 | return annotation.regex(); 15 | } 16 | 17 | @Override 18 | String getReplacer(EmailDesensitize annotation) { 19 | return annotation.replacer(); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/desensitize/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 脱敏组件:支持 JSON 返回数据时,将邮箱、手机等字段进行脱敏 3 | */ 4 | package cn.iocoder.yudao.framework.desensitize; 5 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/errorcode/core/generator/ErrorCodeAutoGenerator.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.errorcode.core.generator; 2 | 3 | /** 4 | * 错误码的自动生成器 5 | * 6 | * @author dylan 7 | */ 8 | public interface ErrorCodeAutoGenerator { 9 | 10 | /** 11 | * 将配置类到错误码写入数据库 12 | */ 13 | void execute(); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/errorcode/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 错误码 ErrorCode 的自动配置功能,提供如下功能: 3 | * 4 | * 1. 远程读取:项目启动时,从 system-service 服务,读取数据库中的 ErrorCode 错误码,实现错误码的提水可配置; 5 | * 2. 自动更新:管理员在管理后台修数据库中的 ErrorCode 错误码时,项目自动从 system-service 服务加载最新的 ErrorCode 错误码; 6 | * 3. 自动写入:项目启动时,将项目本地的错误码写到 system-server 服务中,方便管理员在管理后台编辑; 7 | * 8 | * @author 芋道源码 9 | */ 10 | package cn.iocoder.yudao.framework.errorcode; 11 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/jackson/core/package-info.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.jackson.core; 2 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Web 框架,全局异常、API 日志等 3 | */ 4 | package cn.iocoder.yudao.framework; 5 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/swagger/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 基于 Swagger + Knife4j 实现 API 接口文档 3 | * 4 | * @author 芋道源码 5 | */ 6 | package cn.iocoder.yudao.framework.swagger; 7 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 针对 SpringMVC 的基础封装 3 | */ 4 | package cn.iocoder.yudao.framework.web; 5 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/xss/config/XssProperties.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.xss.config; 2 | 3 | import lombok.Data; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | import org.springframework.validation.annotation.Validated; 6 | 7 | import java.util.Collections; 8 | import java.util.List; 9 | 10 | /** 11 | * Xss 配置属性 12 | * 13 | * @author 芋道源码 14 | */ 15 | @ConfigurationProperties(prefix = "yudao.xss") 16 | @Validated 17 | @Data 18 | public class XssProperties { 19 | 20 | /** 21 | * 是否开启,默认为 true 22 | */ 23 | private boolean enable = true; 24 | /** 25 | * 需要排除的 URL,默认为空 26 | */ 27 | private List excludeUrls = Collections.emptyList(); 28 | 29 | } 30 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/xss/core/clean/XssCleaner.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.xss.core.clean; 2 | 3 | /** 4 | * 对 html 文本中的有 Xss 风险的数据进行清理 5 | */ 6 | public interface XssCleaner { 7 | 8 | /** 9 | * 清理有 Xss 风险的文本 10 | * 11 | * @param html 原 html 12 | * @return 清理后的 html 13 | */ 14 | String clean(String html); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/xss/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 针对 XSS 的基础封装 3 | * 4 | * XSS 说明:https://tech.meituan.com/2018/09/27/fe-security.html 5 | */ 6 | package cn.iocoder.yudao.framework.xss; 7 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.iocoder.yudao.framework.apilog.config.YudaoApiLogAutoConfiguration 2 | cn.iocoder.yudao.framework.jackson.config.YudaoJacksonAutoConfiguration 3 | cn.iocoder.yudao.framework.swagger.config.YudaoSwaggerAutoConfiguration 4 | cn.iocoder.yudao.framework.web.config.YudaoWebAutoConfiguration 5 | cn.iocoder.yudao.framework.xss.config.YudaoXssAutoConfiguration 6 | cn.iocoder.yudao.framework.banner.config.YudaoBannerAutoConfiguration 7 | cn.iocoder.yudao.framework.errorcode.config.YudaoErrorCodeAutoConfiguration -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-web/src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | 欢迎使用JeeLowCode低代码结构 官网:http://www.jeelowcode.com/ 2 | JeelowCode Version: 1.0.0 3 | Application Version: ${yudao.info.version} 4 | Spring Boot Version: ${spring-boot.version} 5 | ___ _ _____ _ 6 | |_ | | | / __ \ | | 7 | | | ___ ___| | _____ _| / \/ ___ __| | ___ 8 | | |/ _ \/ _ \ | / _ \ \ /\ / / | / _ \ / _` |/ _ \ 9 | /\__/ / __/ __/ |___| (_) \ V V /| \__/\ (_) | (_| | __/ 10 | \____/ \___|\___\_____/\___/ \_/\_/ \____/\___/ \__,_|\___| 11 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-web/src/test/java/cn/iocoder/yudao/framework/desensitize/core/handler/AddressHandler.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.desensitize.core.handler; 2 | 3 | import cn.iocoder.yudao.framework.desensitize.core.DesensitizeTest; 4 | import cn.iocoder.yudao.framework.desensitize.core.base.handler.DesensitizationHandler; 5 | import cn.iocoder.yudao.framework.desensitize.core.annotation.Address; 6 | 7 | /** 8 | * {@link Address} 的脱敏处理器 9 | * 10 | * 用于 {@link DesensitizeTest} 测试使用 11 | */ 12 | public class AddressHandler implements DesensitizationHandler
{ 13 | 14 | @Override 15 | public String desensitize(String origin, Address annotation) { 16 | return origin + annotation.replacer(); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-websocket/src/main/java/cn/iocoder/yudao/framework/websocket/core/message/JsonWebSocketMessage.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.websocket.core.message; 2 | 3 | import cn.iocoder.yudao.framework.websocket.core.listener.WebSocketMessageListener; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | 8 | /** 9 | * JSON 格式的 WebSocket 消息帧 10 | * 11 | * @author 芋道源码 12 | */ 13 | @Data 14 | public class JsonWebSocketMessage implements Serializable { 15 | 16 | /** 17 | * 消息类型 18 | * 19 | * 目的:用于分发到对应的 {@link WebSocketMessageListener} 实现类 20 | */ 21 | private String type; 22 | /** 23 | * 消息内容 24 | * 25 | * 要求 JSON 对象 26 | */ 27 | private String content; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-websocket/src/main/java/cn/iocoder/yudao/framework/websocket/core/sender/kafka/KafkaWebSocketMessage.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.websocket.core.sender.kafka; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * Kafka 广播 WebSocket 的消息 7 | * 8 | * @author 芋道源码 9 | */ 10 | @Data 11 | public class KafkaWebSocketMessage { 12 | 13 | /** 14 | * Session 编号 15 | */ 16 | private String sessionId; 17 | /** 18 | * 用户类型 19 | */ 20 | private Integer userType; 21 | /** 22 | * 用户编号 23 | */ 24 | private Long userId; 25 | 26 | /** 27 | * 消息类型 28 | */ 29 | private String messageType; 30 | /** 31 | * 消息内容 32 | */ 33 | private String messageContent; 34 | 35 | } 36 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-websocket/src/main/java/cn/iocoder/yudao/framework/websocket/core/sender/rocketmq/RocketMQWebSocketMessage.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.framework.websocket.core.sender.rocketmq; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * RocketMQ 广播 WebSocket 的消息 7 | * 8 | * @author 芋道源码 9 | */ 10 | @Data 11 | public class RocketMQWebSocketMessage { 12 | 13 | /** 14 | * Session 编号 15 | */ 16 | private String sessionId; 17 | /** 18 | * 用户类型 19 | */ 20 | private Integer userType; 21 | /** 22 | * 用户编号 23 | */ 24 | private Long userId; 25 | 26 | /** 27 | * 消息类型 28 | */ 29 | private String messageType; 30 | /** 31 | * 消息内容 32 | */ 33 | private String messageContent; 34 | 35 | } 36 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-websocket/src/main/java/cn/iocoder/yudao/framework/websocket/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * WebSocket 框架,支持多节点的广播 3 | */ 4 | package cn.iocoder.yudao.framework.websocket; 5 | -------------------------------------------------------------------------------- /yudao-framework/yudao-spring-boot-starter-websocket/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.iocoder.yudao.framework.websocket.config.YudaoWebSocketAutoConfiguration -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/listener/BpmResultListenerApi.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.bpm.api.listener; 2 | 3 | import cn.iocoder.yudao.module.bpm.api.listener.dto.BpmResultListenerRespDTO; 4 | 5 | // TODO @芋艿:后续改成支持 RPC 6 | /** 7 | * 业务流程实例的结果发生变化的监听器 Api 8 | * 9 | * @author HUIHUI 10 | */ 11 | public interface BpmResultListenerApi { 12 | 13 | /** 14 | * 监听的流程定义 Key 15 | * 16 | * @return 返回监听的流程定义 Key 17 | */ 18 | String getProcessDefinitionKey(); 19 | 20 | /** 21 | * 处理事件 22 | * 23 | * @param event 事件 24 | */ 25 | void onEvent(BpmResultListenerRespDTO event); 26 | 27 | } 28 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/listener/dto/BpmResultListenerRespDTO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.bpm.api.listener.dto; 2 | 3 | import lombok.Data; 4 | 5 | // TODO @芋艿:后续改成支持 RPC 6 | /** 7 | * 业务流程实例的结果 Response DTO 8 | * 9 | * @author HUIHUI 10 | */ 11 | @Data 12 | public class BpmResultListenerRespDTO { 13 | 14 | /** 15 | * 流程实例的编号 16 | */ 17 | private String id; 18 | /** 19 | * 流程实例的 key 20 | */ 21 | private String processDefinitionKey; 22 | /** 23 | * 流程实例的结果 24 | */ 25 | private Integer result; 26 | /** 27 | * 流程实例对应的业务标识 28 | * 例如说,请假 29 | */ 30 | private String businessKey; 31 | 32 | } 33 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * bpm API 包,定义暴露给其它模块的 API 3 | */ 4 | package cn.iocoder.yudao.module.bpm.api; 5 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/task/BpmProcessInstanceApi.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.bpm.api.task; 2 | 3 | import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; 4 | 5 | import javax.validation.Valid; 6 | 7 | /** 8 | * 流程实例 Api 接口 9 | * 10 | * @author 芋道源码 11 | */ 12 | public interface BpmProcessInstanceApi { 13 | 14 | /** 15 | * 创建流程实例(提供给内部) 16 | * 17 | * @param userId 用户编号 18 | * @param reqDTO 创建信息 19 | * @return 实例的编号 20 | */ 21 | String createProcessInstance(Long userId, @Valid BpmProcessInstanceCreateReqDTO reqDTO); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/DictTypeConstants.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.bpm.enums; 2 | 3 | /** 4 | * BPM 字典类型的枚举类 5 | * 6 | * @author 芋道源码 7 | */ 8 | public interface DictTypeConstants { 9 | 10 | String TASK_ASSIGN_RULE_TYPE = "bpm_task_assign_rule_type"; // 任务分配规则类型 11 | String TASK_ASSIGN_SCRIPT = "bpm_task_assign_script"; // 任务分配自定义脚本 12 | 13 | } 14 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/definition/BpmModelFormTypeEnum.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.bpm.enums.definition; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * BPM 模型的表单类型的枚举 8 | * 9 | * @author 芋道源码 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum BpmModelFormTypeEnum { 14 | 15 | NORMAL(10, "流程表单"), // 对应 BpmFormDO 16 | CUSTOM(20, "业务表单") // 业务自己定义的表单,自己进行数据的存储 17 | ; 18 | 19 | private final Integer type; 20 | private final String desc; 21 | } 22 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/definition/BpmTaskRuleScriptEnum.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.bpm.enums.definition; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * BPM 任务规则的脚本枚举 8 | * 目前暂时通过 TODO 芋艿:硬编码,未来可以考虑 Groovy 动态脚本的方式 9 | * 10 | * @author 芋道源码 11 | */ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum BpmTaskRuleScriptEnum { 15 | 16 | START_USER(10L, "流程发起人"), 17 | 18 | LEADER_X1(20L, "流程发起人的一级领导"), 19 | LEADER_X2(21L, "流程发起人的二级领导"); 20 | 21 | /** 22 | * 脚本编号 23 | */ 24 | private final Long id; 25 | /** 26 | * 脚本描述 27 | */ 28 | private final String desc; 29 | 30 | } 31 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/message/BpmMessageEnum.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.bpm.enums.message; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * Bpm 消息的枚举 8 | * 9 | * @author 芋道源码 10 | */ 11 | @AllArgsConstructor 12 | @Getter 13 | public enum BpmMessageEnum { 14 | 15 | PROCESS_INSTANCE_APPROVE("bpm_process_instance_approve"), // 流程任务被审批通过时,发送给申请人 16 | PROCESS_INSTANCE_REJECT("bpm_process_instance_reject"), // 流程任务被审批不通过时,发送给申请人 17 | TASK_ASSIGNED("bpm_task_assigned"); // 任务被分配时,发送给审批人 18 | 19 | /** 20 | * 短信模板的标识 21 | * 22 | * 关联 SmsTemplateDO 的 code 属性 23 | */ 24 | private final String smsTemplateCode; 25 | 26 | } 27 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/task/BpmProcessInstanceStatusEnum.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.bpm.enums.task; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 流程实例的状态 8 | * 9 | * @author 芋道源码 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum BpmProcessInstanceStatusEnum { 14 | 15 | RUNNING(1, "进行中"), 16 | FINISH(2, "已完成"); 17 | 18 | /** 19 | * 状态 20 | */ 21 | private final Integer status; 22 | /** 23 | * 描述 24 | */ 25 | private final String desc; 26 | 27 | } 28 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/api/listener/BpmResultListenerApiImpl.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.bpm.api.listener; 2 | 3 | import cn.iocoder.yudao.module.bpm.api.listener.dto.BpmResultListenerRespDTO; 4 | import org.springframework.stereotype.Service; 5 | 6 | /** 7 | * @author JX 8 | * @create 2024-07-09 11:22 9 | * @dedescription: 10 | */ 11 | 12 | @Service 13 | public class BpmResultListenerApiImpl implements BpmResultListenerApi{ 14 | @Override 15 | public String getProcessDefinitionKey() { 16 | return null; 17 | } 18 | 19 | @Override 20 | public void onEvent(BpmResultListenerRespDTO event) { 21 | 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/api/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * bpm API 实现类,定义暴露给其它模块的 API 3 | */ 4 | package cn.iocoder.yudao.module.bpm.api; 5 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/form/BpmFormPageReqVO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form; 2 | 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | import lombok.ToString; 8 | 9 | @Schema(description = "管理后台 - 动态表单分页 Request VO") 10 | @Data 11 | @EqualsAndHashCode(callSuper = true) 12 | @ToString(callSuper = true) 13 | public class BpmFormPageReqVO extends PageParam { 14 | 15 | @Schema(description = "表单名称", example = "芋道") 16 | private String name; 17 | 18 | } 19 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/form/BpmFormSimpleRespVO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | 6 | @Schema(description = "管理后台 - 流程表单精简 Response VO") 7 | @Data 8 | public class BpmFormSimpleRespVO { 9 | 10 | @Schema(description = "表单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") 11 | private Long id; 12 | 13 | @Schema(description = "表单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") 14 | private String name; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/group/BpmUserGroupCreateReqVO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group; 2 | import io.swagger.v3.oas.annotations.media.Schema; 3 | import lombok.*; 4 | 5 | @Schema(description = "管理后台 - 用户组创建 Request VO") 6 | @Data 7 | @EqualsAndHashCode(callSuper = true) 8 | @ToString(callSuper = true) 9 | public class BpmUserGroupCreateReqVO extends BpmUserGroupBaseVO { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/group/BpmUserGroupRespVO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.*; 5 | 6 | import java.time.LocalDateTime; 7 | 8 | @Schema(description = "管理后台 - 用户组 Response VO") 9 | @Data 10 | @EqualsAndHashCode(callSuper = true) 11 | @ToString(callSuper = true) 12 | public class BpmUserGroupRespVO extends BpmUserGroupBaseVO { 13 | 14 | @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") 15 | private Long id; 16 | 17 | @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) 18 | private LocalDateTime createTime; 19 | 20 | } 21 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/group/BpmUserGroupUpdateReqVO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.*; 5 | import javax.validation.constraints.*; 6 | 7 | @Schema(description = "管理后台 - 用户组更新 Request VO") 8 | @Data 9 | @EqualsAndHashCode(callSuper = true) 10 | @ToString(callSuper = true) 11 | public class BpmUserGroupUpdateReqVO extends BpmUserGroupBaseVO { 12 | 13 | @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") 14 | @NotNull(message = "编号不能为空") 15 | private Long id; 16 | 17 | } 18 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/process/BpmProcessDefinitionListReqVO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process; 2 | 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | import lombok.ToString; 8 | 9 | @Schema(description = "管理后台 - 流程定义列表 Request VO") 10 | @Data 11 | @ToString(callSuper = true) 12 | @EqualsAndHashCode(callSuper = true) 13 | public class BpmProcessDefinitionListReqVO extends PageParam { 14 | 15 | @Schema(description = "中断状态-参见 SuspensionState 枚举", example = "1") 16 | private Integer suspensionState; 17 | 18 | } 19 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/process/BpmProcessDefinitionPageReqVO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process; 2 | 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | import lombok.ToString; 8 | 9 | @Schema(description = "管理后台 - 流程定义分页 Request VO") 10 | @Data 11 | @ToString(callSuper = true) 12 | @EqualsAndHashCode(callSuper = true) 13 | public class BpmProcessDefinitionPageReqVO extends PageParam { 14 | 15 | @Schema(description = "标识-精准匹配", example = "process1641042089407") 16 | private String key; 17 | 18 | } 19 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOALeaveController.http: -------------------------------------------------------------------------------- 1 | ### 请求 /bpm/oa/leave/create 接口 => 成功 2 | POST {{baseUrl}}/bpm/oa/leave/create 3 | Content-Type: application/json 4 | tenant-id: 1 5 | Authorization: Bearer {{token}} 6 | 7 | { 8 | "startTime": "2022-03-01", 9 | "endTime": "2022-03-05", 10 | "type": 1, 11 | "reason": "我要请假啦啦啦!" 12 | } 13 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * OA 示例,用于演示外部业务接入 BPM 工作流的示例 3 | * 一般的接入方式,只需要调用 接口,后续 Admin 用户在管理后台的【待办事务】进行审批 4 | */ 5 | package cn.iocoder.yudao.module.bpm.controller.admin.oa; 6 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeaveCreateReqVO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo; 2 | import io.swagger.v3.oas.annotations.media.Schema; 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import lombok.ToString; 6 | 7 | import javax.validation.constraints.AssertTrue; 8 | 9 | @Schema(description = "管理后台 - 请假申请创建 Request VO") 10 | @Data 11 | @EqualsAndHashCode(callSuper = true) 12 | @ToString(callSuper = true) 13 | public class BpmOALeaveCreateReqVO extends BpmOALeaveBaseVO { 14 | 15 | @AssertTrue(message = "结束时间,需要在开始时间之后") 16 | public boolean isEndTimeValid() { 17 | return !getEndTime().isBefore(getStartTime()); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskSimpleRespVO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | 6 | @Schema(description = "管理后台 - 流程任务的精简 Response VO") 7 | @Data 8 | public class BpmTaskSimpleRespVO { 9 | 10 | @Schema(description = "任务定义的标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "Activity_one") 11 | private String definitionKey; 12 | 13 | @Schema(description = "任务名词", requiredMode = Schema.RequiredMode.REQUIRED, example = "经理审批") 14 | private String name; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskSubSignReqVO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | 6 | import javax.validation.constraints.NotEmpty; 7 | 8 | // TODO @海洋:类名,应该是 delete 哈 9 | @Schema(description = "管理后台 - 减签流程任务的 Request VO") 10 | @Data 11 | public class BpmTaskSubSignReqVO { 12 | 13 | @Schema(description = "被减签的任务 ID") 14 | @NotEmpty(message = "任务编号不能为空") 15 | private String id; 16 | 17 | @Schema(description = "加签原因") 18 | @NotEmpty(message = "加签原因不能为空") 19 | private String reason; 20 | } 21 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/app/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 占位 3 | */ 4 | package cn.iocoder.yudao.module.bpm.controller.app; 5 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 提供 RESTful API 给前端: 3 | * 1. admin 包:提供给管理后台 yudao-ui-admin 前端项目 4 | * 2. app 包:提供给用户 APP yudao-ui-app 前端项目,它的 Controller 和 VO 都要添加 App 前缀,用于和管理后台进行区分 5 | */ 6 | package cn.iocoder.yudao.module.bpm.controller; 7 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 提供 POJO 类的实体转换 3 | * 4 | * 目前使用 MapStruct 框架 5 | */ 6 | package cn.iocoder.yudao.module.bpm.convert; 7 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/task/package-info.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.bpm.convert.task; 2 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/definition/BpmTaskMessageRuleDO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.bpm.dal.dataobject.definition; 2 | 3 | // TODO 芋艿:先埋个坑。任务消息的配置规则。说白了,就是不同的 4 | public class BpmTaskMessageRuleDO { 5 | } 6 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/bpm/core/event/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 自定义 Event 实现,提供方便业务接入的 Listener! 3 | * 4 | * @author 芋道源码 5 | */ 6 | package cn.iocoder.yudao.module.bpm.framework.bpm.core.event; 7 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/bpm/core/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 占位 3 | */ 4 | package cn.iocoder.yudao.module.bpm.framework.bpm.core; 5 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/bpm/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 提供给 Activiti 和 Flowable 的通用封装 3 | * 4 | * @author 芋道源码 5 | */ 6 | package cn.iocoder.yudao.module.bpm.framework.bpm; 7 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 属于 bpm 模块的 framework 封装 3 | * 4 | * @author 芋道源码 5 | */ 6 | package cn.iocoder.yudao.module.bpm.framework; 7 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/web/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * bpm 模块的 web 配置 3 | */ 4 | package cn.iocoder.yudao.module.bpm.framework.web; 5 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * bpm 包下,业务流程管理(Business Process Management),我们放工作流的功能,基于 Flowable 6 版本实现。 3 | * 例如说:流程定义、表单配置、审核中心(我的申请、我的待办、我的已办)等等 4 | * 5 | * bpm 解释:https://baike.baidu.com/item/BPM/1933 6 | * 7 | * 1. Controller URL:以 /bpm/ 开头,避免和其它 Module 冲突 8 | * 2. DataObject 表名:以 bpm_ 开头,方便在数据库中区分 9 | * 10 | * 注意,由于 Bpm 模块下,容易和其它模块重名,所以类名都加载 Bpm 的前缀~ 11 | */ 12 | package cn.iocoder.yudao.module.bpm; 13 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/dto/BpmFormFieldRespDTO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.bpm.service.definition.dto; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import lombok.Data; 5 | 6 | /** 7 | * Bpm 表单的 Field 表单项 Response DTO 8 | * 字段的定义,可见 https://github.com/JakHuang/form-generator/issues/46 文档 9 | * 10 | * @author 芋道源码 11 | */ 12 | @Data 13 | public class BpmFormFieldRespDTO { 14 | 15 | /** 16 | * 表单标题 17 | */ 18 | private String label; 19 | /** 20 | * 表单字段的属性名,可自定义 21 | */ 22 | @JsonProperty(value = "vModel") 23 | private String vModel; 24 | 25 | } 26 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/logger/ApiAccessLogApi.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.infra.api.logger; 2 | 3 | import cn.iocoder.yudao.module.infra.api.logger.dto.ApiAccessLogCreateReqDTO; 4 | 5 | import javax.validation.Valid; 6 | 7 | /** 8 | * API 访问日志的 API 接口 9 | * 10 | * @author 芋道源码 11 | */ 12 | public interface ApiAccessLogApi { 13 | 14 | /** 15 | * 创建 API 访问日志 16 | * 17 | * @param createDTO 创建信息 18 | */ 19 | void createApiAccessLog(@Valid ApiAccessLogCreateReqDTO createDTO); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/logger/ApiErrorLogApi.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.infra.api.logger; 2 | 3 | import cn.iocoder.yudao.module.infra.api.logger.dto.ApiErrorLogCreateReqDTO; 4 | 5 | import javax.validation.Valid; 6 | 7 | /** 8 | * API 错误日志的 API 接口 9 | * 10 | * @author 芋道源码 11 | */ 12 | public interface ApiErrorLogApi { 13 | 14 | /** 15 | * 创建 API 错误日志 16 | * 17 | * @param createDTO 创建信息 18 | */ 19 | void createApiErrorLog(@Valid ApiErrorLogCreateReqDTO createDTO); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * infra API 包,定义暴露给其它模块的 API 3 | */ 4 | package cn.iocoder.yudao.module.infra.api; 5 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/enums/DictTypeConstants.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.infra.enums; 2 | 3 | /** 4 | * Infra 字典类型的枚举类 5 | * 6 | * @author 芋道源码 7 | */ 8 | public interface DictTypeConstants { 9 | 10 | String REDIS_TIMEOUT_TYPE = "infra_redis_timeout_type"; // Redis 超时类型 11 | 12 | String JOB_STATUS = "infra_job_status"; // 定时任务状态的枚举 13 | String JOB_LOG_STATUS = "infra_job_log_status"; // 定时任务日志状态的枚举 14 | 15 | String API_ERROR_LOG_PROCESS_STATUS = "infra_api_error_log_process_status"; // API 错误日志的处理状态的枚举 16 | 17 | String CONFIG_TYPE = "infra_config_type"; // 参数配置类型 18 | String BOOLEAN_STRING = "infra_boolean_string"; // Boolean 是否类型 19 | 20 | } 21 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/api/file/FileApiImpl.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.infra.api.file; 2 | 3 | import cn.iocoder.yudao.module.infra.service.file.FileService; 4 | import org.springframework.stereotype.Service; 5 | import org.springframework.validation.annotation.Validated; 6 | 7 | import javax.annotation.Resource; 8 | 9 | /** 10 | * 文件 API 实现类 11 | * 12 | * @author 芋道源码 13 | */ 14 | @Service 15 | @Validated 16 | public class FileApiImpl implements FileApi { 17 | 18 | @Resource 19 | private FileService fileService; 20 | 21 | @Override 22 | public String createFile(String name, String path, byte[] content) { 23 | return fileService.createFile(name, path, content); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/api/package-info.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.infra.api; 2 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/codegen/vo/CodegenPreviewRespVO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.infra.controller.admin.codegen.vo; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | 6 | @Schema(description = "管理后台 - 代码生成预览 Response VO,注意,每个文件都是一个该对象") 7 | @Data 8 | public class CodegenPreviewRespVO { 9 | 10 | @Schema(description = "文件路径", requiredMode = Schema.RequiredMode.REQUIRED, example = "java/cn/iocoder/yudao/adminserver/modules/system/controller/test/SysTestDemoController.java") 11 | private String filePath; 12 | 13 | @Schema(description = "代码", requiredMode = Schema.RequiredMode.REQUIRED, example = "Hello World") 14 | private String code; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/codegen/vo/table/DatabaseTableRespVO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.infra.controller.admin.codegen.vo.table; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | 6 | @Schema(description = "管理后台 - 数据库的表定义 Response VO") 7 | @Data 8 | public class DatabaseTableRespVO { 9 | 10 | @Schema(description = "表名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "yuanma") 11 | private String name; 12 | 13 | @Schema(description = "表描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道源码") 14 | private String comment; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/demo/demo03/package-info.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.infra.controller.admin.demo.demo03; -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/demo/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 代码生成示例 3 | * 4 | * 1. demo01:单表(增删改查) 5 | * 2. demo02:单表(树形结构) 6 | * 3. demo03:主子表(标准模式)+ 主子表(ERP 模式)+ 主子表(内嵌模式) 7 | */ 8 | package cn.iocoder.yudao.module.infra.controller.admin.demo; -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/vo/file/FileUploadReqVO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.infra.controller.admin.file.vo.file; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import org.springframework.web.multipart.MultipartFile; 6 | 7 | import javax.validation.constraints.NotNull; 8 | 9 | @Schema(description = "管理后台 - 上传文件 Request VO") 10 | @Data 11 | public class FileUploadReqVO { 12 | 13 | @Schema(description = "文件附件", requiredMode = Schema.RequiredMode.REQUIRED) 14 | @NotNull(message = "文件附件不能为空") 15 | private MultipartFile file; 16 | 17 | @Schema(description = "文件附件", example = "yudaoyuanma.png") 18 | private String path; 19 | 20 | } 21 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/redis/RedisController.http: -------------------------------------------------------------------------------- 1 | ### 请求 /infra/redis/get-monitor-info 接口 => 成功 2 | GET {{baseUrl}}/infra/redis/get-monitor-info 3 | Authorization: Bearer {{token}} 4 | tenant-id: {{adminTenentId}} 5 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/app/file/vo/AppFileUploadReqVO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.infra.controller.app.file.vo; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import org.springframework.web.multipart.MultipartFile; 6 | 7 | import javax.validation.constraints.NotNull; 8 | 9 | @Schema(description = "用户 App - 上传文件 Request VO") 10 | @Data 11 | public class AppFileUploadReqVO { 12 | 13 | @Schema(description = "文件附件", requiredMode = Schema.RequiredMode.REQUIRED) 14 | @NotNull(message = "文件附件不能为空") 15 | private MultipartFile file; 16 | 17 | @Schema(description = "文件附件", example = "yudaoyuanma.png") 18 | private String path; 19 | 20 | } 21 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/app/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 占位 3 | */ 4 | package cn.iocoder.yudao.module.infra.controller.app; 5 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 提供 RESTful API 给前端: 3 | * 1. admin 包:提供给管理后台 yudao-ui-admin 前端项目 4 | * 2. app 包:提供给用户 APP yudao-ui-app 前端项目,它的 Controller 和 VO 都要添加 App 前缀,用于和管理后台进行区分 5 | */ 6 | package cn.iocoder.yudao.module.infra.controller; 7 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/convert/file/FileConfigConvert.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.infra.convert.file; 2 | 3 | import cn.iocoder.yudao.module.infra.controller.admin.file.vo.config.FileConfigSaveReqVO; 4 | import cn.iocoder.yudao.module.infra.dal.dataobject.file.FileConfigDO; 5 | import org.mapstruct.Mapper; 6 | import org.mapstruct.Mapping; 7 | import org.mapstruct.factory.Mappers; 8 | 9 | /** 10 | * 文件配置 Convert 11 | * 12 | * @author 芋道源码 13 | */ 14 | @Mapper 15 | public interface FileConfigConvert { 16 | 17 | FileConfigConvert INSTANCE = Mappers.getMapper(FileConfigConvert.class); 18 | 19 | @Mapping(target = "config", ignore = true) 20 | FileConfigDO convert(FileConfigSaveReqVO bean); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/convert/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 提供 POJO 类的实体转换 3 | * 4 | * 目前使用 MapStruct 框架 5 | */ 6 | package cn.iocoder.yudao.module.infra.convert; 7 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/db/DataSourceConfigMapper.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.infra.dal.mysql.db; 2 | 3 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; 4 | import cn.iocoder.yudao.module.infra.dal.dataobject.db.DataSourceConfigDO; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 数据源配置 Mapper 9 | * 10 | * @author 芋道源码 11 | */ 12 | @Mapper 13 | public interface DataSourceConfigMapper extends BaseMapperX { 14 | } 15 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/file/FileContentMapper.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.infra.dal.mysql.file; 2 | 3 | import cn.iocoder.yudao.module.infra.dal.dataobject.file.FileContentDO; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | @Mapper 8 | public interface FileContentMapper extends BaseMapper { 9 | } 10 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/enums/codegen/CodegenColumnListConditionEnum.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.infra.enums.codegen; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 代码生成器的字段过滤条件枚举 8 | */ 9 | @AllArgsConstructor 10 | @Getter 11 | public enum CodegenColumnListConditionEnum { 12 | 13 | EQ("="), 14 | NE("!="), 15 | GT(">"), 16 | GTE(">="), 17 | LT("<"), 18 | LTE("<="), 19 | LIKE("LIKE"), 20 | BETWEEN("BETWEEN"); 21 | 22 | /** 23 | * 条件 24 | */ 25 | private final String condition; 26 | 27 | } 28 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/enums/codegen/CodegenFrontTypeEnum.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.infra.enums.codegen; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 代码生成的前端类型枚举 8 | * 9 | * @author 芋道源码 10 | */ 11 | @AllArgsConstructor 12 | @Getter 13 | public enum CodegenFrontTypeEnum { 14 | 15 | VUE2(10), // Vue2 Element UI 标准模版 16 | VUE3(20), // Vue3 Element Plus 标准模版 17 | VUE3_SCHEMA(21), // Vue3 Element Plus Schema 模版 18 | VUE3_VBEN(30), // Vue3 VBEN 模版 19 | ; 20 | 21 | /** 22 | * 类型 23 | */ 24 | private final Integer type; 25 | 26 | } 27 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/enums/config/ConfigTypeEnum.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.infra.enums.config; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | @Getter 7 | @AllArgsConstructor 8 | public enum ConfigTypeEnum { 9 | 10 | /** 11 | * 系统配置 12 | */ 13 | SYSTEM(1), 14 | /** 15 | * 自定义配置 16 | */ 17 | CUSTOM(2); 18 | 19 | private final Integer type; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/enums/job/JobLogStatusEnum.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.infra.enums.job; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 任务日志的状态枚举 8 | * 9 | * @author 芋道源码 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum JobLogStatusEnum { 14 | 15 | RUNNING(0), // 运行中 16 | SUCCESS(1), // 成功 17 | FAILURE(2); // 失败 18 | 19 | /** 20 | * 状态 21 | */ 22 | private final Integer status; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/enums/logger/ApiErrorLogProcessStatusEnum.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.infra.enums.logger; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * API 异常数据的处理状态 8 | * 9 | * @author 芋道源码 10 | */ 11 | @AllArgsConstructor 12 | @Getter 13 | public enum ApiErrorLogProcessStatusEnum { 14 | 15 | INIT(0, "未处理"), 16 | DONE(1, "已处理"), 17 | IGNORE(2, "已忽略"); 18 | 19 | /** 20 | * 状态 21 | */ 22 | private final Integer status; 23 | /** 24 | * 资源类型名 25 | */ 26 | private final String name; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/enums/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 占位 3 | */ 4 | package cn.iocoder.yudao.module.infra.enums; 5 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/framework/codegen/config/CodegenConfiguration.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.infra.framework.codegen.config; 2 | 3 | import org.springframework.boot.context.properties.EnableConfigurationProperties; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | @Configuration(proxyBeanMethods = false) 7 | @EnableConfigurationProperties(CodegenProperties.class) 8 | public class CodegenConfiguration { 9 | } 10 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/framework/codegen/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 代码生成器 3 | */ 4 | package cn.iocoder.yudao.module.infra.framework.codegen; 5 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/framework/monitor/config/AdminServerConfiguration.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.infra.framework.monitor.config; 2 | 3 | import de.codecentric.boot.admin.server.config.EnableAdminServer; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | @Configuration(proxyBeanMethods = false) 7 | @EnableAdminServer 8 | public class AdminServerConfiguration { 9 | } 10 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/framework/monitor/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 使用 Spring Boot Admin 实现简单的监控平台 3 | */ 4 | package cn.iocoder.yudao.module.infra.framework.monitor; 5 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/framework/monitor/《芋道 Spring Boot 监控工具 Admin 入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/framework/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 属于 infra 模块的 framework 封装 3 | * 4 | * @author 芋道源码 5 | */ 6 | package cn.iocoder.yudao.module.infra.framework; 7 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/framework/security/core/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 占位 3 | */ 4 | package cn.iocoder.yudao.module.infra.framework.security.core; 5 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/framework/web/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * infra 模块的 web 配置 3 | */ 4 | package cn.iocoder.yudao.module.infra.framework.web; 5 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/mq/consumer/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 消息队列的消费者 3 | */ 4 | package cn.iocoder.yudao.module.infra.mq.consumer; 5 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/mq/message/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 消息队列的消息 3 | */ 4 | package cn.iocoder.yudao.module.infra.mq.message; 5 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/mq/producer/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 消息队列的生产者 3 | */ 4 | package cn.iocoder.yudao.module.infra.mq.producer; 5 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * infra 模块,主要提供两块能力: 3 | * 1. 我们放基础设施的运维与管理,支撑上层的通用与核心业务。 例如说:定时任务的管理、服务器的信息等等 4 | * 2. 研发工具,提升研发效率与质量。 例如说:代码生成器、接口文档等等 5 | * 6 | * 1. Controller URL:以 /infra/ 开头,避免和其它 Module 冲突 7 | * 2. DataObject 表名:以 infra_ 开头,方便在数据库中区分 8 | */ 9 | package cn.iocoder.yudao.module.infra; 10 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/websocket/message/DemoReceiveMessage.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.infra.websocket.message; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 示例:server -> client 同步消息 7 | * 8 | * @author 芋道源码 9 | */ 10 | @Data 11 | public class DemoReceiveMessage { 12 | 13 | /** 14 | * 接收人的编号 15 | */ 16 | private Long fromUserId; 17 | /** 18 | * 内容 19 | */ 20 | private String text; 21 | 22 | /** 23 | * 是否单聊 24 | */ 25 | private Boolean single; 26 | 27 | } 28 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/websocket/message/DemoSendMessage.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.infra.websocket.message; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 示例:client -> server 发送消息 7 | * 8 | * @author 芋道源码 9 | */ 10 | @Data 11 | public class DemoSendMessage { 12 | 13 | /** 14 | * 发送给谁 15 | * 16 | * 如果为空,说明发送给所有人 17 | */ 18 | private Long toUserId; 19 | /** 20 | * 内容 21 | */ 22 | private String text; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/resources/codegen/java/dal/mapper.xml.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 11 | 12 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/resources/codegen/vue/views/components/form_sub_inner.vue.vm: -------------------------------------------------------------------------------- 1 | ## 主表的 normal 和 inner 使用相同的 form 表单 2 | #parse("codegen/vue/views/components/form_sub_normal.vue.vm") -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/resources/codegen/vue/views/components/list_sub_inner.vue.vm: -------------------------------------------------------------------------------- 1 | ## 子表的 erp 和 inner 使用相似的 list 列表,差异主要两点: 2 | ## 1)inner 使用 list 不分页,erp 使用 page 分页 3 | ## 2)erp 支持单个子表的新增、修改、删除,inner 不支持 4 | #parse("codegen/vue/views/components/list_sub_erp.vue.vm") -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/components/form_sub_inner.vue.vm: -------------------------------------------------------------------------------- 1 | ## 主表的 normal 和 inner 使用相同的 form 表单 2 | #parse("codegen/vue3/views/components/form_sub_normal.vue.vm") -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/components/list_sub_inner.vue.vm: -------------------------------------------------------------------------------- 1 | ## 子表的 erp 和 inner 使用相似的 list 列表,差异主要两点: 2 | ## 1)inner 使用 list 不分页,erp 使用 page 分页 3 | ## 2)erp 支持单个子表的新增、修改、删除,inner 不支持 4 | #parse("codegen/vue3/views/components/list_sub_erp.vue.vm") -------------------------------------------------------------------------------- /yudao-module/yudao-module-infra-biz/src/main/resources/file/erweima.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeelowcode/jeelowcode/7fced1db33bc571335d8fb32593a2d7141df5e69/yudao-module/yudao-module-infra-biz/src/main/resources/file/erweima.jpg -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dept/dto/PostRespDTO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.api.dept.dto; 2 | 3 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; 4 | import lombok.Data; 5 | 6 | /** 7 | * 岗位 Response DTO 8 | * 9 | * @author 芋道源码 10 | */ 11 | @Data 12 | public class PostRespDTO { 13 | 14 | /** 15 | * 岗位序号 16 | */ 17 | private Long id; 18 | /** 19 | * 岗位名称 20 | */ 21 | private String name; 22 | /** 23 | * 岗位编码 24 | */ 25 | private String code; 26 | /** 27 | * 岗位排序 28 | */ 29 | private Integer sort; 30 | /** 31 | * 状态 32 | * 33 | * 枚举 {@link CommonStatusEnum} 34 | */ 35 | private Integer status; 36 | 37 | } 38 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dict/dto/DictDataRespDTO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.api.dict.dto; 2 | 3 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; 4 | import lombok.Data; 5 | 6 | /** 7 | * 字典数据 Response DTO 8 | * 9 | * @author 芋道源码 10 | */ 11 | @Data 12 | public class DictDataRespDTO { 13 | 14 | /** 15 | * 字典标签 16 | */ 17 | private String label; 18 | /** 19 | * 字典值 20 | */ 21 | private String value; 22 | /** 23 | * 字典类型 24 | */ 25 | private String dictType; 26 | /** 27 | * 状态 28 | * 29 | * 枚举 {@link CommonStatusEnum} 30 | */ 31 | private Integer status; 32 | 33 | } 34 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/errorcode/dto/ErrorCodeRespDTO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.api.errorcode.dto; 2 | 3 | import lombok.Data; 4 | 5 | import java.time.LocalDateTime; 6 | 7 | /** 8 | * 错误码的 Response DTO 9 | * 10 | * @author 芋道源码 11 | */ 12 | @Data 13 | public class ErrorCodeRespDTO { 14 | 15 | /** 16 | * 错误码编码 17 | */ 18 | private Integer code; 19 | /** 20 | * 错误码错误提示 21 | */ 22 | private String message; 23 | /** 24 | * 更新时间 25 | */ 26 | private LocalDateTime updateTime; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/logger/LoginLogApi.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.api.logger; 2 | 3 | import cn.iocoder.yudao.module.system.api.logger.dto.LoginLogCreateReqDTO; 4 | 5 | import javax.validation.Valid; 6 | 7 | /** 8 | * 登录日志的 API 接口 9 | * 10 | * @author 芋道源码 11 | */ 12 | public interface LoginLogApi { 13 | 14 | /** 15 | * 创建登录日志 16 | * 17 | * @param reqDTO 日志信息 18 | */ 19 | void createLoginLog(@Valid LoginLogCreateReqDTO reqDTO); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/logger/dto/OperateLogV2PageReqDTO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.api.logger.dto; 2 | 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; 4 | import lombok.Data; 5 | 6 | /** 7 | * 操作日志分页 Request DTO 8 | * 9 | * @author HUIHUI 10 | */ 11 | @Data 12 | public class OperateLogV2PageReqDTO extends PageParam { 13 | 14 | /** 15 | * 模块类型 16 | */ 17 | private String bizType; 18 | /** 19 | * 模块数据编号 20 | */ 21 | private Long bizId; 22 | 23 | /** 24 | * 用户编号 25 | */ 26 | private Long userId; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/oauth2/dto/OAuth2AccessTokenCheckRespDTO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.api.oauth2.dto; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | import java.util.List; 7 | 8 | /** 9 | * OAuth2.0 访问令牌的校验 Response DTO 10 | * 11 | * @author 芋道源码 12 | */ 13 | @Data 14 | public class OAuth2AccessTokenCheckRespDTO implements Serializable { 15 | 16 | /** 17 | * 用户编号 18 | */ 19 | private Long userId; 20 | /** 21 | * 用户类型 22 | */ 23 | private Integer userType; 24 | /** 25 | * 租户编号 26 | */ 27 | private Long tenantId; 28 | /** 29 | * 授权范围的数组 30 | */ 31 | private List scopes; 32 | 33 | } 34 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * System API 包,定义暴露给其它模块的 API 3 | */ 4 | package cn.iocoder.yudao.module.system.api; 5 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/permission/RoleApi.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.api.permission; 2 | 3 | import java.util.Collection; 4 | 5 | /** 6 | * 角色 API 接口 7 | * 8 | * @author 芋道源码 9 | */ 10 | public interface RoleApi { 11 | 12 | /** 13 | * 校验角色们是否有效。如下情况,视为无效: 14 | * 1. 角色编号不存在 15 | * 2. 角色被禁用 16 | * 17 | * @param ids 角色编号数组 18 | */ 19 | void validRoleList(Collection ids); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sensitiveword/SensitiveWordApi.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.api.sensitiveword; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * 敏感词 API 接口 7 | * 8 | * @author 永不言败 9 | */ 10 | public interface SensitiveWordApi { 11 | 12 | /** 13 | * 获得文本所包含的不合法的敏感词数组 14 | * 15 | * @param text 文本 16 | * @param tags 标签数组 17 | * @return 不合法的敏感词数组 18 | */ 19 | List validateText(String text, List tags); 20 | 21 | /** 22 | * 判断文本是否包含敏感词 23 | * 24 | * @param text 文本 25 | * @param tags 表述数组 26 | * @return 是否包含 27 | */ 28 | boolean isTextValid(String text, List tags); 29 | 30 | } 31 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/social/dto/SocialUserRespDTO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.api.social.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * 社交用户 Response DTO 9 | * 10 | * @author 芋道源码 11 | */ 12 | @Data 13 | @NoArgsConstructor 14 | @AllArgsConstructor 15 | public class SocialUserRespDTO { 16 | 17 | /** 18 | * 社交用户的 openid 19 | */ 20 | private String openid; 21 | /** 22 | * 社交用户的昵称 23 | */ 24 | private String nickname; 25 | /** 26 | * 社交用户的头像 27 | */ 28 | private String avatar; 29 | 30 | /** 31 | * 关联的用户编号 32 | */ 33 | private Long userId; 34 | 35 | } 36 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/social/dto/SocialWxJsapiSignatureRespDTO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.api.social.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 微信公众号 JSAPI 签名 Response DTO 7 | * 8 | * @author 芋道源码 9 | */ 10 | @Data 11 | public class SocialWxJsapiSignatureRespDTO { 12 | 13 | /** 14 | * 微信公众号的 appId 15 | */ 16 | private String appId; 17 | /** 18 | * 匿名串 19 | */ 20 | private String nonceStr; 21 | /** 22 | * 时间戳 23 | */ 24 | private Long timestamp; 25 | /** 26 | * URL 27 | */ 28 | private String url; 29 | /** 30 | * 签名 31 | */ 32 | private String signature; 33 | 34 | } 35 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/social/dto/SocialWxPhoneNumberInfoRespDTO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.api.social.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 微信小程序的手机信息 Response DTO 7 | * 8 | * @author 芋道源码 9 | */ 10 | @Data 11 | public class SocialWxPhoneNumberInfoRespDTO { 12 | 13 | /** 14 | * 用户绑定的手机号(国外手机号会有区号) 15 | */ 16 | private String phoneNumber; 17 | 18 | /** 19 | * 没有区号的手机号 20 | */ 21 | private String purePhoneNumber; 22 | /** 23 | * 区号 24 | */ 25 | private String countryCode; 26 | 27 | } 28 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/tenant/TenantApi.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.api.tenant; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * 多租户的 API 接口 7 | * 8 | * @author 芋道源码 9 | */ 10 | public interface TenantApi { 11 | 12 | /** 13 | * 获得所有租户 14 | * 15 | * @return 租户编号数组 16 | */ 17 | List getTenantIdList(); 18 | 19 | /** 20 | * 校验租户是否合法 21 | * 22 | * @param id 租户编号 23 | */ 24 | void validateTenant(Long id); 25 | 26 | } 27 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/common/SexEnum.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.enums.common; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 性别的枚举值 8 | * 9 | * @author 芋道源码 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum SexEnum { 14 | 15 | /** 男 */ 16 | MALE(1), 17 | /** 女 */ 18 | FEMALE(2), 19 | /* 未知 */ 20 | UNKNOWN(3); 21 | 22 | /** 23 | * 性别 24 | */ 25 | private final Integer sex; 26 | 27 | } 28 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/logger/LoginLogTypeEnum.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.enums.logger; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 登录日志的类型枚举 8 | */ 9 | @Getter 10 | @AllArgsConstructor 11 | public enum LoginLogTypeEnum { 12 | 13 | LOGIN_USERNAME(100), // 使用账号登录 14 | LOGIN_SOCIAL(101), // 使用社交登录 15 | LOGIN_MOBILE(103), // 使用手机登陆 16 | LOGIN_SMS(104), // 使用短信登陆 17 | 18 | LOGOUT_SELF(200), // 自己主动登出 19 | LOGOUT_DELETE(202), // 强制退出 20 | ; 21 | 22 | /** 23 | * 日志类型 24 | */ 25 | private final Integer type; 26 | 27 | } 28 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/logger/LoginResultEnum.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.enums.logger; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 登录结果的枚举类 8 | */ 9 | @Getter 10 | @AllArgsConstructor 11 | public enum LoginResultEnum { 12 | 13 | SUCCESS(0), // 成功 14 | BAD_CREDENTIALS(10), // 账号或密码不正确 15 | USER_DISABLED(20), // 用户被禁用 16 | CAPTCHA_NOT_FOUND(30), // 图片验证码不存在 17 | CAPTCHA_CODE_ERROR(31), // 图片验证码不正确 18 | 19 | ; 20 | 21 | /** 22 | * 结果 23 | */ 24 | private final Integer result; 25 | 26 | } 27 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/mail/MailSendStatusEnum.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.enums.mail; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 邮件的发送状态枚举 8 | * 9 | * @author wangjingyi 10 | * @since 2022/4/10 13:39 11 | */ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum MailSendStatusEnum { 15 | 16 | INIT(0), // 初始化 17 | SUCCESS(10), // 发送成功 18 | FAILURE(20), // 发送失败 19 | IGNORE(30), // 忽略,即不发送 20 | ; 21 | 22 | private final int status; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/notice/NoticeTypeEnum.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.enums.notice; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 通知类型 8 | * 9 | * @author 芋道源码 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum NoticeTypeEnum { 14 | 15 | NOTICE(1), 16 | ANNOUNCEMENT(2); 17 | 18 | /** 19 | * 类型 20 | */ 21 | private final Integer type; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/notify/NotifyTemplateTypeEnum.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.enums.notify; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 通知模板类型枚举 8 | * 9 | * @author HUIHUI 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum NotifyTemplateTypeEnum { 14 | 15 | /** 16 | * 系统消息 17 | */ 18 | SYSTEM_MESSAGE(2), 19 | /** 20 | * 通知消息 21 | */ 22 | NOTIFICATION_MESSAGE(1); 23 | 24 | private final Integer type; 25 | 26 | } 27 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/oauth2/OAuth2ClientConstants.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.enums.oauth2; 2 | 3 | /** 4 | * OAuth2.0 客户端的通用枚举 5 | * 6 | * @author 芋道源码 7 | */ 8 | public interface OAuth2ClientConstants { 9 | 10 | String CLIENT_ID_DEFAULT = "default"; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/permission/MenuTypeEnum.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.enums.permission; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 菜单类型枚举类 8 | * 9 | * @author 芋道源码 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum MenuTypeEnum { 14 | 15 | DIR(1), // 目录 16 | MENU(2), // 菜单 17 | BUTTON(3) // 按钮 18 | ; 19 | 20 | /** 21 | * 类型 22 | */ 23 | private final Integer type; 24 | 25 | } 26 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/permission/RoleTypeEnum.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.enums.permission; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | @Getter 7 | @AllArgsConstructor 8 | public enum RoleTypeEnum { 9 | 10 | /** 11 | * 内置角色 12 | */ 13 | SYSTEM(1), 14 | /** 15 | * 自定义角色 16 | */ 17 | CUSTOM(2); 18 | 19 | private final Integer type; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/sms/SmsReceiveStatusEnum.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.enums.sms; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 短信的接收状态枚举 8 | * 9 | * @author 芋道源码 10 | * @date 2021/2/1 13:39 11 | */ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum SmsReceiveStatusEnum { 15 | 16 | INIT(0), // 初始化 17 | SUCCESS(10), // 接收成功 18 | FAILURE(20), // 接收失败 19 | ; 20 | 21 | private final int status; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/sms/SmsSendStatusEnum.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.enums.sms; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 短信的发送状态枚举 8 | * 9 | * @author zzf 10 | * @date 2021/2/1 13:39 11 | */ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum SmsSendStatusEnum { 15 | 16 | INIT(0), // 初始化 17 | SUCCESS(10), // 发送成功 18 | FAILURE(20), // 发送失败 19 | IGNORE(30), // 忽略,即不发送 20 | ; 21 | 22 | private final int status; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/sms/SmsTemplateTypeEnum.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.enums.sms; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 短信的模板类型枚举 8 | * 9 | * @author 芋道源码 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum SmsTemplateTypeEnum { 14 | 15 | VERIFICATION_CODE(1), // 验证码 16 | NOTICE(2), // 通知 17 | PROMOTION(3), // 营销 18 | ; 19 | 20 | /** 21 | * 类型 22 | */ 23 | private final int type; 24 | 25 | } 26 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/permission/RoleApiImpl.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.api.permission; 2 | 3 | import cn.iocoder.yudao.module.system.service.permission.RoleService; 4 | import org.springframework.stereotype.Service; 5 | 6 | import javax.annotation.Resource; 7 | import java.util.Collection; 8 | 9 | /** 10 | * 角色 API 实现类 11 | * 12 | * @author 芋道源码 13 | */ 14 | @Service 15 | public class RoleApiImpl implements RoleApi { 16 | 17 | @Resource 18 | private RoleService roleService; 19 | 20 | @Override 21 | public void validRoleList(Collection ids) { 22 | roleService.validateRoleList(ids); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptListReqVO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | 6 | @Schema(description = "管理后台 - 部门列表 Request VO") 7 | @Data 8 | public class DeptListReqVO { 9 | 10 | @Schema(description = "部门名称,模糊匹配", example = "芋道") 11 | private String name; 12 | 13 | @Schema(description = "展示状态,参见 CommonStatusEnum 枚举类", example = "1") 14 | private Integer status; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/post/PostSimpleRespVO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.controller.admin.dept.vo.post; 2 | 3 | import com.alibaba.excel.annotation.ExcelProperty; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | import lombok.Data; 6 | 7 | @Schema(description = "管理后台 - 岗位信息的精简 Response VO") 8 | @Data 9 | public class PostSimpleRespVO { 10 | 11 | @Schema(description = "岗位序号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") 12 | @ExcelProperty("岗位序号") 13 | private Long id; 14 | 15 | @Schema(description = "岗位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "小土豆") 16 | @ExcelProperty("岗位名称") 17 | private String name; 18 | 19 | } 20 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/DictDataController.http: -------------------------------------------------------------------------------- 1 | ### 请求 /menu/list 接口 => 成功 2 | GET {{baseUrl}}/system/dict-data/list-all-simple 3 | Authorization: Bearer {{token}} 4 | tenant-id: {{adminTenentId}} 5 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/errorcode/ErrorCodeController.http: -------------------------------------------------------------------------------- 1 | ### 创建错误码 2 | POST {{baseUrl}}/inra/error-code/create 3 | Authorization: Bearer {{token}} 4 | Content-Type: application/json 5 | tenant-id: {{adminTenentId}} 6 | 7 | { 8 | "code": 200, 9 | "message": "成功", 10 | "group": "test", 11 | "type": 1 12 | } 13 | 14 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/ip/AreaController.http: -------------------------------------------------------------------------------- 1 | ### 获得地区树 2 | GET {{baseUrl}}/system/area/tree 3 | Authorization: Bearer {{token}} 4 | tenant-id: {{adminTenentId}} 5 | 6 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/logger/OperateLogController.http: -------------------------------------------------------------------------------- 1 | ### 请求 /system/operate-log/demo 接口 => 成功 2 | GET {{baseUrl}}/system/operate-log/demo 3 | Authorization: Bearer {{token}} 4 | tenant-id: {{adminTenentId}} 5 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/MailTemplateController.http: -------------------------------------------------------------------------------- 1 | ### 请求 /system/mail-template/send-mail 接口 => 成功 2 | POST {{baseUrl}}/system/mail-template/send-mail 3 | Authorization: Bearer {{token}} 4 | Content-Type: application/json 5 | tenant-id: {{adminTenentId}} 6 | 7 | { 8 | "templateCode": "test_01", 9 | "mail": "7685413@qq.com", 10 | "templateParams": { 11 | "key01": "value01", 12 | "key02": "value02" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/account/MailAccountSimpleRespVO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.controller.admin.mail.vo.account; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | 6 | @Schema(description = "管理后台 - 邮箱账号的精简 Response VO") 7 | @Data 8 | public class MailAccountSimpleRespVO { 9 | 10 | @Schema(description = "邮箱编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") 11 | private Long id; 12 | 13 | @Schema(description = "邮箱", requiredMode = Schema.RequiredMode.REQUIRED, example = "768541388@qq.com") 14 | private String mail; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/template/MailTemplateSimpleRespVO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.controller.admin.mail.vo.template; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | 6 | @Schema(description = "管理后台 - 邮件模版的精简 Response VO") 7 | @Data 8 | public class MailTemplateSimpleRespVO { 9 | 10 | @Schema(description = "模版编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") 11 | private Long id; 12 | 13 | @Schema(description = "模版名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "哒哒哒") 14 | private String name; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/notice/vo/NoticePageReqVO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.controller.admin.notice.vo; 2 | 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | 8 | @Schema(description = "管理后台 - 通知公告分页 Request VO") 9 | @Data 10 | @EqualsAndHashCode(callSuper = true) 11 | public class NoticePageReqVO extends PageParam { 12 | 13 | @Schema(description = "通知公告名称,模糊匹配", example = "芋道") 14 | private String title; 15 | 16 | @Schema(description = "展示状态,参见 CommonStatusEnum 枚举类", example = "1") 17 | private Integer status; 18 | 19 | } 20 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2UserController.http: -------------------------------------------------------------------------------- 1 | ### 请求 /system/oauth2/user/get 接口 => 成功 2 | GET {{baseUrl}}/system/oauth2/user/get 3 | Authorization: Bearer 47f9c74ec11041f193b777ebb95c3b0d 4 | tenant-id: {{adminTenentId}} 5 | 6 | ### 请求 /system/oauth2/user/update 接口 => 成功 7 | PUT {{baseUrl}}/system/oauth2/user/update 8 | Content-Type: application/json 9 | Authorization: Bearer 47f9c74ec11041f193b777ebb95c3b0d 10 | tenant-id: {{adminTenentId}} 11 | 12 | { 13 | "nickname": "芋道源码" 14 | } 15 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/client/OAuth2ClientPageReqVO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.client; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.*; 5 | import cn.iocoder.yudao.framework.common.pojo.PageParam; 6 | 7 | @Schema(description = "管理后台 - OAuth2 客户端分页 Request VO") 8 | @Data 9 | @EqualsAndHashCode(callSuper = true) 10 | @ToString(callSuper = true) 11 | public class OAuth2ClientPageReqVO extends PageParam { 12 | 13 | @Schema(description = "应用名,模糊匹配", example = "土豆") 14 | private String name; 15 | 16 | @Schema(description = "状态,参见 CommonStatusEnum 枚举", example = "1") 17 | private Integer status; 18 | 19 | } 20 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/permission/MenuController.http: -------------------------------------------------------------------------------- 1 | ### 请求 /menu/list 接口 => 成功 2 | GET {{baseUrl}}/system/menu/list 3 | Authorization: Bearer {{token}} 4 | tenant-id: {{adminTenentId}} 5 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/permission/vo/menu/MenuListReqVO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.controller.admin.permission.vo.menu; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | 6 | @Schema(description = "管理后台 - 菜单列表 Request VO") 7 | @Data 8 | public class MenuListReqVO { 9 | 10 | @Schema(description = "菜单名称,模糊匹配", example = "芋道") 11 | private String name; 12 | 13 | @Schema(description = "展示状态,参见 CommonStatusEnum 枚举类", example = "1") 14 | private Integer status; 15 | 16 | @Schema(description = "父级id", example = "1") 17 | private Integer parentId; 18 | 19 | @Schema(description = "有值=隐藏", example = "1") 20 | private String btnDisplay; 21 | } 22 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/permission/vo/role/RoleSimpleRespVO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.controller.admin.permission.vo.role; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | @Schema(description = "管理后台 - 角色精简信息 Response VO") 9 | @Data 10 | public class RoleSimpleRespVO { 11 | 12 | @Schema(description = "角色编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") 13 | private Long id; 14 | 15 | @Schema(description = "角色名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") 16 | private String name; 17 | 18 | } 19 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sensitiveword/SensitiveWordController.http: -------------------------------------------------------------------------------- 1 | ### 请求 /system/sensitive-word/validate-text 接口 => 成功 2 | GET {{baseUrl}}/system/sensitive-word/validate-text?text=XXX&tags=短信&tags=蔬菜 3 | Authorization: Bearer {{token}} 4 | tenant-id: {{adminTenentId}} 5 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/SmsTemplateController.http: -------------------------------------------------------------------------------- 1 | ### 请求 /system/sms-template/send-sms 接口 => 成功 2 | POST {{baseUrl}}/system/sms-template/send-sms 3 | Authorization: Bearer {{token}} 4 | Content-Type: application/json 5 | tenant-id: {{adminTenentId}} 6 | 7 | { 8 | "templateCode": "test_01", 9 | "mobile": "15601691390", 10 | "templateParams": { 11 | "operation": "value01", 12 | "code": "value02" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/TenantController.http: -------------------------------------------------------------------------------- 1 | ### 获取租户编号 /admin-api/system/get-id-by-name 2 | GET {{baseUrl}}/system/tenant/get-id-by-name?name=芋道源码 3 | 4 | ### 创建租户 /admin-api/system/tenant/create 5 | POST {{baseUrl}}/system/tenant/create 6 | Content-Type: application/json 7 | Authorization: Bearer {{token}} 8 | tenant-id: {{adminTenentId}} 9 | 10 | { 11 | "name": "芋道", 12 | "contactName": "芋艿", 13 | "contactMobile": "15601691300", 14 | "status": 0, 15 | "domain": "https://www.iocoder.cn", 16 | "packageId": 110, 17 | "expireTime": 1699545600000, 18 | "accountCount": 20, 19 | "username": "admin", 20 | "password": "123321" 21 | } 22 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/vo/tenant/TenantSimpleRespVO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | 6 | @Schema(description = "管理后台 - 租户精简 Response VO") 7 | @Data 8 | public class TenantSimpleRespVO { 9 | 10 | @Schema(description = "租户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") 11 | private Long id; 12 | 13 | @Schema(description = "租户名", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") 14 | private String name; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.http: -------------------------------------------------------------------------------- 1 | ### 请求 /system/user/page 接口 => 没有权限 2 | GET {{baseUrl}}/system/user/page?pageNo=1&pageSize=10 3 | Authorization: Bearer {{token}} 4 | tenant-id: {{adminTenentId}} 5 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserProfileController.http: -------------------------------------------------------------------------------- 1 | ### 请求 /system/user/profile/get 接口 => 没有权限 2 | GET {{baseUrl}}/system/user/profile/get 3 | Authorization: Bearer {{token}} 4 | tenant-id: {{adminTenentId}} 5 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/ip/vo/AppAreaNodeRespVO.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.controller.app.ip.vo; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | 6 | import java.util.List; 7 | 8 | @Schema(description = "用户 App - 地区节点 Response VO") 9 | @Data 10 | public class AppAreaNodeRespVO { 11 | 12 | @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "110000") 13 | private Integer id; 14 | 15 | @Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "北京") 16 | private String name; 17 | 18 | /** 19 | * 子节点 20 | */ 21 | private List children; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 提供 RESTful API 给前端: 3 | * 1. admin 包:提供给管理后台 yudao-ui-admin 前端项目 4 | * 2. app 包:提供给用户 APP yudao-ui-app 前端项目,它的 Controller 和 VO 都要添加 App 前缀,用于和管理后台进行区分 5 | */ 6 | package cn.iocoder.yudao.module.system.controller; 7 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 提供 POJO 类的实体转换 3 | * 4 | * 目前使用 MapStruct 框架 5 | */ 6 | package cn.iocoder.yudao.module.system.convert; 7 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/social/SocialUserConvert.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.convert.social; 2 | 3 | import cn.iocoder.yudao.module.system.api.social.dto.SocialUserBindReqDTO; 4 | import cn.iocoder.yudao.module.system.controller.admin.socail.vo.user.SocialUserBindReqVO; 5 | import org.mapstruct.Mapper; 6 | import org.mapstruct.Mapping; 7 | import org.mapstruct.factory.Mappers; 8 | 9 | @Mapper 10 | public interface SocialUserConvert { 11 | 12 | SocialUserConvert INSTANCE = Mappers.getMapper(SocialUserConvert.class); 13 | 14 | @Mapping(source = "reqVO.type", target = "socialType") 15 | SocialUserBindReqDTO convert(Long userId, Integer userType, SocialUserBindReqVO reqVO); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/jeelowcode/JeeLowCodePermissionMapper.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.dal.mysql.jeelowcode; 2 | 3 | import org.apache.ibatis.annotations.Mapper; 4 | 5 | @Mapper 6 | public interface JeeLowCodePermissionMapper{ 7 | 8 | } 9 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/oauth2/OAuth2CodeMapper.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.dal.mysql.oauth2; 2 | 3 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; 4 | import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2CodeDO; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | @Mapper 8 | public interface OAuth2CodeMapper extends BaseMapperX { 9 | 10 | default OAuth2CodeDO selectByCode(String code) { 11 | return selectOne(OAuth2CodeDO::getCode, code); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * DAL = Data Access Layer 数据访问层 3 | * 1. data object:数据对象 4 | * 2. redis:Redis 的 CRUD 操作 5 | * 3. mysql:MySQL 的 CRUD 操作 6 | * 7 | * 其中,MySQL 的表以 system_ 作为前缀 8 | */ 9 | package cn.iocoder.yudao.module.system.dal.mysql; 10 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/datapermission/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * system 模块的数据权限配置 3 | */ 4 | package cn.iocoder.yudao.module.system.framework.datapermission; 5 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/operatelog/package-info.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.framework.operatelog; -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 属于 system 模块的 framework 封装 3 | * 4 | * @author 芋道源码 5 | */ 6 | package cn.iocoder.yudao.module.system.framework; 7 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/sms/core/enums/SmsTemplateAuditStatusEnum.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.framework.sms.core.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 短信模板的审核状态枚举 8 | * 9 | * @author 芋道源码 10 | */ 11 | @AllArgsConstructor 12 | @Getter 13 | public enum SmsTemplateAuditStatusEnum { 14 | 15 | CHECKING(1), 16 | SUCCESS(2), 17 | FAIL(3); 18 | 19 | private final Integer status; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/web/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * system 模块的 web 配置 3 | */ 4 | package cn.iocoder.yudao.module.system.framework.web; 5 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/package-info.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.job; 2 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * system 模块下,我们放通用业务,支撑上层的核心业务。 3 | * 例如说:用户、部门、权限、数据字典等等 4 | * 5 | * 1. Controller URL:以 /system/ 开头,避免和其它 Module 冲突 6 | * 2. DataObject 表名:以 system_ 开头,方便在数据库中区分 7 | */ 8 | package cn.iocoder.yudao.module.system; 9 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/jeelowcode/IJeeLowCodePermissionService.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.service.jeelowcode; 2 | 3 | import java.util.List; 4 | import java.util.Set; 5 | 6 | /** 7 | * 低代码 权限过滤 8 | */ 9 | public interface IJeeLowCodePermissionService { 10 | /** 11 | * 校验是否有权限 12 | * @param userId 13 | * @param roleIds 14 | * @param permission 15 | * @return true=有权限 false =无权限 16 | */ 17 | boolean hasAnyPermission(Long userId, Set roleIds, String permission); 18 | 19 | /** 20 | * 转为list 21 | * @param permission 22 | * @return 23 | */ 24 | List permission2List(String permission); 25 | } 26 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/tenant/handler/TenantInfoHandler.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.service.tenant.handler; 2 | 3 | import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantDO; 4 | 5 | /** 6 | * 租户信息处理 7 | * 目的:尽量减少租户逻辑耦合到系统中 8 | * 9 | * @author 芋道源码 10 | */ 11 | public interface TenantInfoHandler { 12 | 13 | /** 14 | * 基于传入的租户信息,进行相关逻辑的执行 15 | * 例如说,创建用户时,超过最大账户配额 16 | * 17 | * @param tenant 租户信息 18 | */ 19 | void handle(TenantDO tenant); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/tenant/handler/TenantMenuHandler.java: -------------------------------------------------------------------------------- 1 | package cn.iocoder.yudao.module.system.service.tenant.handler; 2 | 3 | import java.util.Set; 4 | 5 | /** 6 | * 租户菜单处理 7 | * 目的:尽量减少租户逻辑耦合到系统中 8 | * 9 | * @author 芋道源码 10 | */ 11 | public interface TenantMenuHandler { 12 | 13 | /** 14 | * 基于传入的租户菜单【全】列表,进行相关逻辑的执行 15 | * 例如说,返回可分配菜单的时候,可以移除多余的 16 | * 17 | * @param menuIds 菜单列表 18 | */ 19 | void handle(Set menuIds); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/util/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 每个模块的 util 包,放专属当前模块的 Utils 工具类 3 | */ 4 | package cn.iocoder.yudao.module.system.util; 5 | --------------------------------------------------------------------------------