Copy disabled (too large)
Download .txt
Showing preview only (34,667K chars total). Download the full file to get everything.
Repository: jeecgboot/jeecg-boot
Branch: main
Commit: cf7eeac6ab10
Files: 3173
Total size: 42.0 MB
Directory structure:
gitextract__5f6saff/
├── .gitattributes
├── .github/
│ └── ISSUE_TEMPLATE/
│ ├── bug_report.md
│ └── feature_request.md
├── .gitignore
├── LICENSE
├── README-AI.md
├── README.en-US.md
├── README.md
├── check_jeecgenv.py
├── docker-compose-cloud.yml
├── docker-compose.yml
├── jeecg-boot/
│ ├── .gitignore
│ ├── LICENSE
│ ├── README.md
│ ├── db/
│ │ ├── Dockerfile
│ │ ├── jeecgboot-mysql-5.7.sql
│ │ ├── tables_nacos.sql
│ │ ├── tables_xxl_job.sql
│ │ ├── 其他数据库脚本/
│ │ │ └── oracle11g dmp说明.txt
│ │ └── 版本升级说明.md
│ ├── docker-compose.yml
│ ├── jeecg-boot-base-core/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── jeecg/
│ │ │ │ ├── common/
│ │ │ │ │ ├── api/
│ │ │ │ │ │ ├── CommonAPI.java
│ │ │ │ │ │ ├── dto/
│ │ │ │ │ │ │ ├── AiragFlowDTO.java
│ │ │ │ │ │ │ ├── ApprovalCommentDTO.java
│ │ │ │ │ │ │ ├── DataLogDTO.java
│ │ │ │ │ │ │ ├── FileDownDTO.java
│ │ │ │ │ │ │ ├── FileUploadDTO.java
│ │ │ │ │ │ │ ├── LogDTO.java
│ │ │ │ │ │ │ ├── OnlineAuthDTO.java
│ │ │ │ │ │ │ ├── PushMessageDTO.java
│ │ │ │ │ │ │ └── message/
│ │ │ │ │ │ │ ├── BusMessageDTO.java
│ │ │ │ │ │ │ ├── BusTemplateMessageDTO.java
│ │ │ │ │ │ │ ├── MessageDTO.java
│ │ │ │ │ │ │ ├── TemplateDTO.java
│ │ │ │ │ │ │ └── TemplateMessageDTO.java
│ │ │ │ │ │ └── vo/
│ │ │ │ │ │ └── Result.java
│ │ │ │ │ ├── aspect/
│ │ │ │ │ │ ├── AutoLogAspect.java
│ │ │ │ │ │ ├── DictAspect.java
│ │ │ │ │ │ ├── PermissionDataAspect.java
│ │ │ │ │ │ ├── UrlMatchEnum.java
│ │ │ │ │ │ └── annotation/
│ │ │ │ │ │ ├── AutoDict.java
│ │ │ │ │ │ ├── AutoLog.java
│ │ │ │ │ │ ├── Dict.java
│ │ │ │ │ │ ├── DynamicTable.java
│ │ │ │ │ │ ├── OnlineAuth.java
│ │ │ │ │ │ └── PermissionData.java
│ │ │ │ │ ├── constant/
│ │ │ │ │ │ ├── CommonConstant.java
│ │ │ │ │ │ ├── CommonSendStatus.java
│ │ │ │ │ │ ├── DataBaseConstant.java
│ │ │ │ │ │ ├── DynamicTableConstant.java
│ │ │ │ │ │ ├── FillRuleConstant.java
│ │ │ │ │ │ ├── PasswordConstant.java
│ │ │ │ │ │ ├── ProvinceCityArea.java
│ │ │ │ │ │ ├── ServiceNameConstants.java
│ │ │ │ │ │ ├── SymbolConstant.java
│ │ │ │ │ │ ├── TenantConstant.java
│ │ │ │ │ │ ├── VxeSocketConst.java
│ │ │ │ │ │ ├── WebsocketConst.java
│ │ │ │ │ │ └── enums/
│ │ │ │ │ │ ├── CgformEnum.java
│ │ │ │ │ │ ├── ClientTerminalTypeEnum.java
│ │ │ │ │ │ ├── DateRangeEnum.java
│ │ │ │ │ │ ├── DepartCategoryEnum.java
│ │ │ │ │ │ ├── DySmsEnum.java
│ │ │ │ │ │ ├── EmailTemplateEnum.java
│ │ │ │ │ │ ├── FileTypeEnum.java
│ │ │ │ │ │ ├── MessageTypeEnum.java
│ │ │ │ │ │ ├── ModuleType.java
│ │ │ │ │ │ ├── NoticeTypeEnum.java
│ │ │ │ │ │ ├── OperateTypeEnum.java
│ │ │ │ │ │ ├── PositionLevelEnum.java
│ │ │ │ │ │ ├── RoleIndexConfigEnum.java
│ │ │ │ │ │ ├── SysAnnmentTypeEnum.java
│ │ │ │ │ │ ├── UniPushTypeEnum.java
│ │ │ │ │ │ └── Vue3MessageHrefEnum.java
│ │ │ │ │ ├── desensitization/
│ │ │ │ │ │ ├── SensitiveSerialize.java
│ │ │ │ │ │ ├── annotation/
│ │ │ │ │ │ │ ├── Sensitive.java
│ │ │ │ │ │ │ ├── SensitiveDecode.java
│ │ │ │ │ │ │ ├── SensitiveEncode.java
│ │ │ │ │ │ │ └── SensitiveField.java
│ │ │ │ │ │ ├── aspect/
│ │ │ │ │ │ │ └── SensitiveDataAspect.java
│ │ │ │ │ │ ├── enums/
│ │ │ │ │ │ │ └── SensitiveEnum.java
│ │ │ │ │ │ └── util/
│ │ │ │ │ │ └── SensitiveInfoUtil.java
│ │ │ │ │ ├── es/
│ │ │ │ │ │ ├── JeecgElasticsearchTemplate.java
│ │ │ │ │ │ └── QueryStringBuilder.java
│ │ │ │ │ ├── exception/
│ │ │ │ │ │ ├── JeecgBoot401Exception.java
│ │ │ │ │ │ ├── JeecgBootAssertException.java
│ │ │ │ │ │ ├── JeecgBootBizTipException.java
│ │ │ │ │ │ ├── JeecgBootException.java
│ │ │ │ │ │ ├── JeecgBootExceptionHandler.java
│ │ │ │ │ │ └── JeecgSqlInjectionException.java
│ │ │ │ │ ├── handler/
│ │ │ │ │ │ └── IFillRuleHandler.java
│ │ │ │ │ ├── system/
│ │ │ │ │ │ ├── annotation/
│ │ │ │ │ │ │ └── EnumDict.java
│ │ │ │ │ │ ├── base/
│ │ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ │ └── JeecgController.java
│ │ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ │ └── JeecgEntity.java
│ │ │ │ │ │ │ └── service/
│ │ │ │ │ │ │ ├── JeecgService.java
│ │ │ │ │ │ │ └── impl/
│ │ │ │ │ │ │ └── JeecgServiceImpl.java
│ │ │ │ │ │ ├── enhance/
│ │ │ │ │ │ │ └── UserFilterEnhance.java
│ │ │ │ │ │ ├── query/
│ │ │ │ │ │ │ ├── MatchTypeEnum.java
│ │ │ │ │ │ │ ├── QueryCondition.java
│ │ │ │ │ │ │ ├── QueryGenerator.java
│ │ │ │ │ │ │ └── QueryRuleEnum.java
│ │ │ │ │ │ ├── util/
│ │ │ │ │ │ │ ├── JeecgDataAutorUtils.java
│ │ │ │ │ │ │ ├── JwtUtil.java
│ │ │ │ │ │ │ ├── ResourceUtil.java
│ │ │ │ │ │ │ └── SqlConcatUtil.java
│ │ │ │ │ │ └── vo/
│ │ │ │ │ │ ├── ComboModel.java
│ │ │ │ │ │ ├── DictModel.java
│ │ │ │ │ │ ├── DictModelMany.java
│ │ │ │ │ │ ├── DictQuery.java
│ │ │ │ │ │ ├── DynamicDataSourceModel.java
│ │ │ │ │ │ ├── LoginUser.java
│ │ │ │ │ │ ├── SelectTreeModel.java
│ │ │ │ │ │ ├── SysCategoryModel.java
│ │ │ │ │ │ ├── SysDepartModel.java
│ │ │ │ │ │ ├── SysFilesModel.java
│ │ │ │ │ │ ├── SysPermissionDataRuleModel.java
│ │ │ │ │ │ ├── SysUserCacheInfo.java
│ │ │ │ │ │ └── UserAccountInfo.java
│ │ │ │ │ └── util/
│ │ │ │ │ ├── AssertUtils.java
│ │ │ │ │ ├── BrowserType.java
│ │ │ │ │ ├── BrowserUtils.java
│ │ │ │ │ ├── CommonUtils.java
│ │ │ │ │ ├── DateRangeUtils.java
│ │ │ │ │ ├── DateUtils.java
│ │ │ │ │ ├── DySmsHelper.java
│ │ │ │ │ ├── DySmsLimit.java
│ │ │ │ │ ├── FileDownloadUtils.java
│ │ │ │ │ ├── FillRuleUtil.java
│ │ │ │ │ ├── HTMLUtils.java
│ │ │ │ │ ├── ImportExcelUtil.java
│ │ │ │ │ ├── IpUtils.java
│ │ │ │ │ ├── Md5Util.java
│ │ │ │ │ ├── MinioUtil.java
│ │ │ │ │ ├── MyClassLoader.java
│ │ │ │ │ ├── MyCommonsMultipartFile.java
│ │ │ │ │ ├── PasswordUtil.java
│ │ │ │ │ ├── PmsUtil.java
│ │ │ │ │ ├── ReflectHelper.java
│ │ │ │ │ ├── RestDesformUtil.java
│ │ │ │ │ ├── RestUtil.java
│ │ │ │ │ ├── ShiroThreadPoolExecutor.java
│ │ │ │ │ ├── SpringContextUtils.java
│ │ │ │ │ ├── SqlInjectionUtil.java
│ │ │ │ │ ├── TencentSms.java
│ │ │ │ │ ├── TokenUtils.java
│ │ │ │ │ ├── UUIDGenerator.java
│ │ │ │ │ ├── YouBianCodeUtil.java
│ │ │ │ │ ├── dynamic/
│ │ │ │ │ │ └── db/
│ │ │ │ │ │ ├── DataSourceCachePool.java
│ │ │ │ │ │ ├── DbTypeUtils.java
│ │ │ │ │ │ ├── DynamicDBUtil.java
│ │ │ │ │ │ └── FreemarkerParseFactory.java
│ │ │ │ │ ├── encryption/
│ │ │ │ │ │ ├── AesEncryptUtil.java
│ │ │ │ │ │ └── EncryptedString.java
│ │ │ │ │ ├── filter/
│ │ │ │ │ │ ├── SsrfFileTypeFilter.java
│ │ │ │ │ │ └── StrAttackFilter.java
│ │ │ │ │ ├── oConvertUtils.java
│ │ │ │ │ ├── oss/
│ │ │ │ │ │ └── OssBootUtil.java
│ │ │ │ │ ├── security/
│ │ │ │ │ │ ├── AbstractQueryBlackListHandler.java
│ │ │ │ │ │ ├── JdbcSecurityUtil.java
│ │ │ │ │ │ ├── SecurityTools.java
│ │ │ │ │ │ └── entity/
│ │ │ │ │ │ ├── MyKeyPair.java
│ │ │ │ │ │ ├── SecurityReq.java
│ │ │ │ │ │ ├── SecurityResp.java
│ │ │ │ │ │ ├── SecuritySignReq.java
│ │ │ │ │ │ └── SecuritySignResp.java
│ │ │ │ │ ├── sqlparse/
│ │ │ │ │ │ ├── JSqlParserAllTableManager.java
│ │ │ │ │ │ ├── JSqlParserUtils.java
│ │ │ │ │ │ └── vo/
│ │ │ │ │ │ └── SelectSqlInfo.java
│ │ │ │ │ └── superSearch/
│ │ │ │ │ ├── ObjectParseUtil.java
│ │ │ │ │ ├── QueryRuleEnum.java
│ │ │ │ │ └── QueryRuleVo.java
│ │ │ │ ├── config/
│ │ │ │ │ ├── AiRagConfigBean.java
│ │ │ │ │ ├── AutoPoiConfig.java
│ │ │ │ │ ├── AutoPoiDictConfig.java
│ │ │ │ │ ├── CorsFilterCondition.java
│ │ │ │ │ ├── DruidConfig.java
│ │ │ │ │ ├── DruidWallConfigRegister.java
│ │ │ │ │ ├── JeecgBaseConfig.java
│ │ │ │ │ ├── JeecgCloudCondition.java
│ │ │ │ │ ├── JeecgGaodeBaseConfig.java
│ │ │ │ │ ├── JeecgSmsTemplateConfig.java
│ │ │ │ │ ├── RestTemplateConfig.java
│ │ │ │ │ ├── StaticConfig.java
│ │ │ │ │ ├── Swagger2Config.java
│ │ │ │ │ ├── Swagger3Config.java
│ │ │ │ │ ├── TaskSchedulerConfig.java
│ │ │ │ │ ├── WebMvcConfiguration.java
│ │ │ │ │ ├── WebSocketConfig.java
│ │ │ │ │ ├── filter/
│ │ │ │ │ │ ├── RequestBodyReserveFilter.java
│ │ │ │ │ │ └── WebsocketFilter.java
│ │ │ │ │ ├── firewall/
│ │ │ │ │ │ ├── SqlInjection/
│ │ │ │ │ │ │ ├── IDictTableWhiteListHandler.java
│ │ │ │ │ │ │ └── SysDictTableWhite.java
│ │ │ │ │ │ └── interceptor/
│ │ │ │ │ │ ├── LowCodeModeConfiguration.java
│ │ │ │ │ │ ├── LowCodeModeInterceptor.java
│ │ │ │ │ │ └── enums/
│ │ │ │ │ │ └── LowCodeUrlsEnum.java
│ │ │ │ │ ├── mybatis/
│ │ │ │ │ │ ├── JeecgTenantParser.java
│ │ │ │ │ │ ├── MybatisInterceptor.java
│ │ │ │ │ │ ├── MybatisPlusSaasConfig.java
│ │ │ │ │ │ ├── TenantContext.java
│ │ │ │ │ │ ├── ThreadLocalDataHelper.java
│ │ │ │ │ │ ├── aspect/
│ │ │ │ │ │ │ └── DynamicTableAspect.java
│ │ │ │ │ │ └── interceptor/
│ │ │ │ │ │ └── DynamicDatasourceInterceptor.java
│ │ │ │ │ ├── oss/
│ │ │ │ │ │ ├── MinioConfig.java
│ │ │ │ │ │ └── OssConfiguration.java
│ │ │ │ │ ├── shiro/
│ │ │ │ │ │ ├── IgnoreAuth.java
│ │ │ │ │ │ ├── JwtToken.java
│ │ │ │ │ │ ├── ShiroConfig.java
│ │ │ │ │ │ ├── ShiroRealm.java
│ │ │ │ │ │ ├── filters/
│ │ │ │ │ │ │ ├── CustomShiroFilterFactoryBean.java
│ │ │ │ │ │ │ ├── JwtFilter.java
│ │ │ │ │ │ │ └── ResourceCheckFilter.java
│ │ │ │ │ │ └── ignore/
│ │ │ │ │ │ ├── IgnoreAuthPostProcessor.java
│ │ │ │ │ │ └── InMemoryIgnoreAuth.java
│ │ │ │ │ ├── sign/
│ │ │ │ │ │ ├── annotation/
│ │ │ │ │ │ │ └── SignatureCheck.java
│ │ │ │ │ │ ├── aspect/
│ │ │ │ │ │ │ └── SignatureCheckAspect.java
│ │ │ │ │ │ ├── interceptor/
│ │ │ │ │ │ │ ├── SignAuthConfiguration.java
│ │ │ │ │ │ │ └── SignAuthInterceptor.java
│ │ │ │ │ │ └── util/
│ │ │ │ │ │ ├── BodyReaderHttpServletRequestWrapper.java
│ │ │ │ │ │ ├── HttpUtils.java
│ │ │ │ │ │ └── SignUtil.java
│ │ │ │ │ ├── tencent/
│ │ │ │ │ │ └── JeecgTencent.java
│ │ │ │ │ └── vo/
│ │ │ │ │ ├── BaiduApi.java
│ │ │ │ │ ├── DomainUrl.java
│ │ │ │ │ ├── Elasticsearch.java
│ │ │ │ │ ├── Firewall.java
│ │ │ │ │ ├── GaoDeApi.java
│ │ │ │ │ ├── JeecgMinio.java
│ │ │ │ │ ├── JeecgOSS.java
│ │ │ │ │ ├── Path.java
│ │ │ │ │ ├── Shiro.java
│ │ │ │ │ └── WeiXinPay.java
│ │ │ │ └── modules/
│ │ │ │ └── base/
│ │ │ │ ├── mapper/
│ │ │ │ │ ├── BaseCommonMapper.java
│ │ │ │ │ └── xml/
│ │ │ │ │ └── BaseCommonMapper.xml
│ │ │ │ └── service/
│ │ │ │ ├── BaseCommonService.java
│ │ │ │ └── impl/
│ │ │ │ └── BaseCommonServiceImpl.java
│ │ │ └── resources/
│ │ │ ├── META-INF/
│ │ │ │ ├── spring/
│ │ │ │ │ └── org.springframework.boot.SpringApplicationRunListeners
│ │ │ │ └── spring.factories
│ │ │ ├── config/
│ │ │ │ └── default-spring-doc.properties
│ │ │ ├── static/
│ │ │ │ └── pca.json
│ │ │ └── templates/
│ │ │ └── email/
│ │ │ ├── bpm_cc_email.ftl
│ │ │ ├── bpm_cuiban_email.ftl
│ │ │ ├── bpm_new_task_email.ftl
│ │ │ └── desform_new_data_email.ftl
│ │ └── test/
│ │ └── java/
│ │ └── org/
│ │ └── jeecg/
│ │ └── test/
│ │ └── sqlparse/
│ │ └── TestIpUtil.java
│ ├── jeecg-boot-module/
│ │ ├── jeecg-boot-module-airag/
│ │ │ ├── doc/
│ │ │ │ └── RAG/
│ │ │ │ └── main.py
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── jeecg/
│ │ │ │ │ ├── JeecgAiRagApplication.java
│ │ │ │ │ └── modules/
│ │ │ │ │ └── airag/
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── consts/
│ │ │ │ │ │ │ ├── AiAppConsts.java
│ │ │ │ │ │ │ └── Prompts.java
│ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ ├── AiragAppController.java
│ │ │ │ │ │ │ └── AiragChatController.java
│ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ └── AiragApp.java
│ │ │ │ │ │ ├── mapper/
│ │ │ │ │ │ │ ├── AiragAppMapper.java
│ │ │ │ │ │ │ └── xml/
│ │ │ │ │ │ │ └── AiragAppMapper.xml
│ │ │ │ │ │ ├── service/
│ │ │ │ │ │ │ ├── IAiragAppService.java
│ │ │ │ │ │ │ ├── IAiragChatService.java
│ │ │ │ │ │ │ ├── IAiragVariableService.java
│ │ │ │ │ │ │ └── impl/
│ │ │ │ │ │ │ ├── AiragAppServiceImpl.java
│ │ │ │ │ │ │ ├── AiragChatServiceImpl.java
│ │ │ │ │ │ │ └── AiragVariableServiceImpl.java
│ │ │ │ │ │ └── vo/
│ │ │ │ │ │ ├── AiArticleWriteVersionVo.java
│ │ │ │ │ │ ├── AiWriteGenerateVo.java
│ │ │ │ │ │ ├── AppDebugParams.java
│ │ │ │ │ │ ├── AppVariableVo.java
│ │ │ │ │ │ ├── ChatConversation.java
│ │ │ │ │ │ └── ChatSendParams.java
│ │ │ │ │ ├── demo/
│ │ │ │ │ │ ├── JimuDataReader.java
│ │ │ │ │ │ └── TestAiragEnhance.java
│ │ │ │ │ ├── llm/
│ │ │ │ │ │ ├── config/
│ │ │ │ │ │ │ ├── EmbedStoreConfigBean.java
│ │ │ │ │ │ │ └── KnowConfigBean.java
│ │ │ │ │ │ ├── consts/
│ │ │ │ │ │ │ ├── FlowPluginContent.java
│ │ │ │ │ │ │ └── LLMConsts.java
│ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ ├── AiragBaseApiController.java
│ │ │ │ │ │ │ ├── AiragKnowledgeController.java
│ │ │ │ │ │ │ ├── AiragMcpController.java
│ │ │ │ │ │ │ └── AiragModelController.java
│ │ │ │ │ │ ├── document/
│ │ │ │ │ │ │ └── TikaDocumentParser.java
│ │ │ │ │ │ ├── dto/
│ │ │ │ │ │ │ └── SaveToolsDTO.java
│ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ ├── AiragKnowledge.java
│ │ │ │ │ │ │ ├── AiragKnowledgeDoc.java
│ │ │ │ │ │ │ ├── AiragMcp.java
│ │ │ │ │ │ │ └── AiragModel.java
│ │ │ │ │ │ ├── handler/
│ │ │ │ │ │ │ ├── AIChatHandler.java
│ │ │ │ │ │ │ ├── CommandExecUtil.java
│ │ │ │ │ │ │ ├── EmbeddingHandler.java
│ │ │ │ │ │ │ ├── JeecgToolsProvider.java
│ │ │ │ │ │ │ └── PluginToolBuilder.java
│ │ │ │ │ │ ├── mapper/
│ │ │ │ │ │ │ ├── AiragKnowledgeDocMapper.java
│ │ │ │ │ │ │ ├── AiragKnowledgeMapper.java
│ │ │ │ │ │ │ ├── AiragMcpMapper.java
│ │ │ │ │ │ │ ├── AiragModelMapper.java
│ │ │ │ │ │ │ └── xml/
│ │ │ │ │ │ │ ├── AiragKnowledgeDocMapper.xml
│ │ │ │ │ │ │ ├── AiragKnowledgeMapper.xml
│ │ │ │ │ │ │ ├── AiragMcpMapper.xml
│ │ │ │ │ │ │ └── AiragModelMapper.xml
│ │ │ │ │ │ └── service/
│ │ │ │ │ │ ├── IAiragFlowPluginService.java
│ │ │ │ │ │ ├── IAiragKnowledgeDocService.java
│ │ │ │ │ │ ├── IAiragKnowledgeService.java
│ │ │ │ │ │ ├── IAiragMcpService.java
│ │ │ │ │ │ ├── IAiragModelService.java
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── AiragBaseApiImpl.java
│ │ │ │ │ │ ├── AiragFlowPluginServiceImpl.java
│ │ │ │ │ │ ├── AiragKnowledgeDocServiceImpl.java
│ │ │ │ │ │ ├── AiragKnowledgeServiceImpl.java
│ │ │ │ │ │ ├── AiragMcpServiceImpl.java
│ │ │ │ │ │ └── AiragModelServiceImpl.java
│ │ │ │ │ ├── ocr/
│ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ └── AiOcrController.java
│ │ │ │ │ │ └── entity/
│ │ │ │ │ │ └── AiOcr.java
│ │ │ │ │ ├── prompts/
│ │ │ │ │ │ ├── consts/
│ │ │ │ │ │ │ └── AiPromptsConsts.java
│ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ ├── AiragExtDataController.java
│ │ │ │ │ │ │ └── AiragPromptsController.java
│ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ ├── AiragExtData.java
│ │ │ │ │ │ │ └── AiragPrompts.java
│ │ │ │ │ │ ├── mapper/
│ │ │ │ │ │ │ ├── AiragExtDataMapper.java
│ │ │ │ │ │ │ ├── AiragPromptsMapper.java
│ │ │ │ │ │ │ └── xml/
│ │ │ │ │ │ │ ├── AiragExtDataMapper.xml
│ │ │ │ │ │ │ └── AiragPromptsMapper.xml
│ │ │ │ │ │ ├── service/
│ │ │ │ │ │ │ ├── IAiragExtDataService.java
│ │ │ │ │ │ │ ├── IAiragPromptsService.java
│ │ │ │ │ │ │ └── impl/
│ │ │ │ │ │ │ ├── AiragExtDataServiceImpl.java
│ │ │ │ │ │ │ └── AiragPromptsServiceImpl.java
│ │ │ │ │ │ └── vo/
│ │ │ │ │ │ ├── AiragDebugVo.java
│ │ │ │ │ │ └── AiragExperimentVo.java
│ │ │ │ │ └── wordtpl/
│ │ │ │ │ ├── consts/
│ │ │ │ │ │ └── WordTitleEnum.java
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── EoaWordTemplateController.java
│ │ │ │ │ ├── dto/
│ │ │ │ │ │ ├── MergeColDTO.java
│ │ │ │ │ │ ├── WordImageDTO.java
│ │ │ │ │ │ ├── WordTableCellDTO.java
│ │ │ │ │ │ ├── WordTableDTO.java
│ │ │ │ │ │ ├── WordTableRowDTO.java
│ │ │ │ │ │ ├── WordTextDTO.java
│ │ │ │ │ │ └── WordTplGenDTO.java
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ └── EoaWordTemplate.java
│ │ │ │ │ ├── mapper/
│ │ │ │ │ │ ├── EoaWordTemplateMapper.java
│ │ │ │ │ │ └── xml/
│ │ │ │ │ │ └── EoaWordTemplateMapper.xml
│ │ │ │ │ ├── service/
│ │ │ │ │ │ ├── IEoaWordTemplateService.java
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ └── EoaWordTemplateServiceImpl.java
│ │ │ │ │ └── utils/
│ │ │ │ │ ├── WordTplUtils.java
│ │ │ │ │ └── WordUtil.java
│ │ │ │ └── resources/
│ │ │ │ └── application.yml
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── org/
│ │ │ └── jeecg/
│ │ │ └── modules/
│ │ │ └── airag/
│ │ │ └── test/
│ │ │ ├── TestFileParse.java
│ │ │ ├── TestFlows.java
│ │ │ ├── TestLLM.java
│ │ │ └── TestVector.java
│ │ ├── jeecg-module-demo/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── jeecg/
│ │ │ │ └── modules/
│ │ │ │ └── demo/
│ │ │ │ ├── cloud/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ ├── JcloudDemoFeignController.java
│ │ │ │ │ │ └── JcloudDemoProviderController.java
│ │ │ │ │ ├── service/
│ │ │ │ │ │ ├── JcloudDemoService.java
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ └── JcloudDemoServiceImpl.java
│ │ │ │ │ └── xxljob/
│ │ │ │ │ └── TestJobHandler.java
│ │ │ │ ├── mcp/
│ │ │ │ │ └── McpDemoController.java
│ │ │ │ ├── mock/
│ │ │ │ │ ├── MockController.java
│ │ │ │ │ ├── json/
│ │ │ │ │ │ ├── area.json
│ │ │ │ │ │ ├── area_mini.json
│ │ │ │ │ │ ├── area_options.json
│ │ │ │ │ │ ├── asyn_tree_list_0.json
│ │ │ │ │ │ ├── asyn_tree_list_1.json
│ │ │ │ │ │ ├── asyn_tree_list_2.json
│ │ │ │ │ │ ├── asyn_tree_list_3.json
│ │ │ │ │ │ ├── asyn_tree_list_31.json
│ │ │ │ │ │ ├── getCntrNoCountInfo.json
│ │ │ │ │ │ ├── getTubiao.json
│ │ │ │ │ │ ├── graphreport_chart.json
│ │ │ │ │ │ ├── permission.json
│ │ │ │ │ │ ├── permission_no_page.json
│ │ │ │ │ │ ├── role.json
│ │ │ │ │ │ ├── service.json
│ │ │ │ │ │ ├── sysdatalog.json
│ │ │ │ │ │ ├── task_process.json
│ │ │ │ │ │ ├── user.json
│ │ │ │ │ │ ├── user_info.json
│ │ │ │ │ │ ├── userinfo.json
│ │ │ │ │ │ ├── workplace_activity.json
│ │ │ │ │ │ ├── workplace_projects.json
│ │ │ │ │ │ ├── workplace_radar.json
│ │ │ │ │ │ └── workplace_teams.json
│ │ │ │ │ └── vxe/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── VxeMockController.java
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ └── MockEntity.java
│ │ │ │ │ ├── json/
│ │ │ │ │ │ ├── ddjh.json
│ │ │ │ │ │ ├── ddjh_s8.json
│ │ │ │ │ │ └── dlglong.json
│ │ │ │ │ └── websocket/
│ │ │ │ │ └── VxeSocket.java
│ │ │ │ ├── online/
│ │ │ │ │ └── OnlCgformDemoController.java
│ │ │ │ ├── shop/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── ShopController.java
│ │ │ │ │ └── entity/
│ │ │ │ │ ├── Order.java
│ │ │ │ │ └── Product.java
│ │ │ │ ├── test/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ ├── BigScreenTemplatController.java
│ │ │ │ │ │ ├── JeecgDemoController.java
│ │ │ │ │ │ ├── JeecgDynamicDataController.java
│ │ │ │ │ │ ├── JeecgOrderErpMainController.java
│ │ │ │ │ │ ├── JeecgOrderMainController.java
│ │ │ │ │ │ └── JoaDemoController.java
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ ├── JeecgDemo.java
│ │ │ │ │ │ ├── JeecgOrderCustomer.java
│ │ │ │ │ │ ├── JeecgOrderMain.java
│ │ │ │ │ │ ├── JeecgOrderTicket.java
│ │ │ │ │ │ └── JoaDemo.java
│ │ │ │ │ ├── mapper/
│ │ │ │ │ │ ├── JeecgDemoMapper.java
│ │ │ │ │ │ ├── JeecgOrderCustomerMapper.java
│ │ │ │ │ │ ├── JeecgOrderMainMapper.java
│ │ │ │ │ │ ├── JeecgOrderTicketMapper.java
│ │ │ │ │ │ ├── JoaDemoMapper.java
│ │ │ │ │ │ └── xml/
│ │ │ │ │ │ ├── JeecgDemoMapper.xml
│ │ │ │ │ │ ├── JeecgOrderCustomerMapper.xml
│ │ │ │ │ │ ├── JeecgOrderMainMapper.xml
│ │ │ │ │ │ ├── JeecgOrderTicketMapper.xml
│ │ │ │ │ │ └── JoaDemoMapper.xml
│ │ │ │ │ ├── service/
│ │ │ │ │ │ ├── IJeecgDemoService.java
│ │ │ │ │ │ ├── IJeecgDynamicDataService.java
│ │ │ │ │ │ ├── IJeecgOrderCustomerService.java
│ │ │ │ │ │ ├── IJeecgOrderMainService.java
│ │ │ │ │ │ ├── IJeecgOrderTicketService.java
│ │ │ │ │ │ ├── IJoaDemoService.java
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── JeecgDemoServiceImpl.java
│ │ │ │ │ │ ├── JeecgDynamicDataServiceImpl.java
│ │ │ │ │ │ ├── JeecgOrderCustomerServiceImpl.java
│ │ │ │ │ │ ├── JeecgOrderMainServiceImpl.java
│ │ │ │ │ │ ├── JeecgOrderTicketServiceImpl.java
│ │ │ │ │ │ └── JoaDemoServiceImpl.java
│ │ │ │ │ └── vo/
│ │ │ │ │ └── JeecgOrderMainPage.java
│ │ │ │ └── xxljob/
│ │ │ │ └── TestJobHandler.java
│ │ │ └── resources/
│ │ │ ├── static/
│ │ │ │ └── bigscreen/
│ │ │ │ ├── template1/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ ├── easyui.css
│ │ │ │ │ │ ├── jquery-ui.css
│ │ │ │ │ │ ├── main_design1.css
│ │ │ │ │ │ └── room.css
│ │ │ │ │ └── js/
│ │ │ │ │ ├── big_design1.js
│ │ │ │ │ ├── china.js
│ │ │ │ │ ├── echarts-wordcloud.js
│ │ │ │ │ ├── geoCoord.js
│ │ │ │ │ ├── resize.js
│ │ │ │ │ └── room.js
│ │ │ │ └── template2/
│ │ │ │ ├── css/
│ │ │ │ │ └── style.css
│ │ │ │ └── js/
│ │ │ │ ├── base.js
│ │ │ │ ├── china.js
│ │ │ │ ├── data/
│ │ │ │ │ ├── city.json
│ │ │ │ │ └── guangdong.js
│ │ │ │ ├── layer/
│ │ │ │ │ ├── extend/
│ │ │ │ │ │ └── layer.ext.js
│ │ │ │ │ ├── laydate/
│ │ │ │ │ │ ├── laydate.js
│ │ │ │ │ │ ├── need/
│ │ │ │ │ │ │ └── laydate.css
│ │ │ │ │ │ └── skins/
│ │ │ │ │ │ ├── danlan/
│ │ │ │ │ │ │ └── laydate.css
│ │ │ │ │ │ └── default/
│ │ │ │ │ │ └── laydate.css
│ │ │ │ │ ├── layim/
│ │ │ │ │ │ ├── data/
│ │ │ │ │ │ │ ├── chatlog.json
│ │ │ │ │ │ │ ├── friend.json
│ │ │ │ │ │ │ ├── group.json
│ │ │ │ │ │ │ └── groups.json
│ │ │ │ │ │ ├── layim.css
│ │ │ │ │ │ └── layim.js
│ │ │ │ │ └── skin/
│ │ │ │ │ ├── layer.css
│ │ │ │ │ ├── layer.ext.css
│ │ │ │ │ └── moon/
│ │ │ │ │ └── style.css
│ │ │ │ ├── pop_base.js
│ │ │ │ └── rem.js
│ │ │ └── templates/
│ │ │ └── bigscreen/
│ │ │ ├── template1/
│ │ │ │ └── index.ftl
│ │ │ └── template2/
│ │ │ └── index.ftl
│ │ └── pom.xml
│ ├── jeecg-module-system/
│ │ ├── jeecg-system-api/
│ │ │ ├── jeecg-system-cloud-api/
│ │ │ │ ├── pom.xml
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ └── java/
│ │ │ │ └── org/
│ │ │ │ └── jeecg/
│ │ │ │ ├── common/
│ │ │ │ │ ├── airag/
│ │ │ │ │ │ └── api/
│ │ │ │ │ │ ├── IAiragBaseApi.java
│ │ │ │ │ │ ├── factory/
│ │ │ │ │ │ │ └── AiragBaseApiFallbackFactory.java
│ │ │ │ │ │ └── fallback/
│ │ │ │ │ │ └── AiragBaseApiFallback.java
│ │ │ │ │ ├── online/
│ │ │ │ │ │ └── api/
│ │ │ │ │ │ ├── IOnlineBaseExtApi.java
│ │ │ │ │ │ ├── factory/
│ │ │ │ │ │ │ └── OnlineBaseExtApiFallbackFactory.java
│ │ │ │ │ │ └── fallback/
│ │ │ │ │ │ └── OnlineBaseExtApiFallback.java
│ │ │ │ │ └── system/
│ │ │ │ │ └── api/
│ │ │ │ │ ├── ISysBaseAPI.java
│ │ │ │ │ ├── factory/
│ │ │ │ │ │ └── SysBaseAPIFallbackFactory.java
│ │ │ │ │ └── fallback/
│ │ │ │ │ └── SysBaseAPIFallback.java
│ │ │ │ └── config/
│ │ │ │ └── FeignConfig.java
│ │ │ ├── jeecg-system-local-api/
│ │ │ │ ├── pom.xml
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ └── java/
│ │ │ │ └── org/
│ │ │ │ └── jeecg/
│ │ │ │ └── common/
│ │ │ │ ├── airag/
│ │ │ │ │ └── api/
│ │ │ │ │ └── IAiragBaseApi.java
│ │ │ │ ├── online/
│ │ │ │ │ └── api/
│ │ │ │ │ └── IOnlineBaseExtApi.java
│ │ │ │ └── system/
│ │ │ │ └── api/
│ │ │ │ └── ISysBaseAPI.java
│ │ │ └── pom.xml
│ │ ├── jeecg-system-biz/
│ │ │ ├── .gitattributes
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── jeecg/
│ │ │ │ ├── config/
│ │ │ │ │ ├── firewall/
│ │ │ │ │ │ └── SqlInjection/
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ └── DictTableWhiteListHandlerImpl.java
│ │ │ │ │ ├── init/
│ │ │ │ │ │ ├── CodeGenerateDbConfig.java
│ │ │ │ │ │ ├── CodeTemplateInitListener.java
│ │ │ │ │ │ ├── ShiroCacheClearRunner.java
│ │ │ │ │ │ ├── SystemInitListener.java
│ │ │ │ │ │ ├── TomcatFactoryConfig.java
│ │ │ │ │ │ └── UndertowConfiguration.java
│ │ │ │ │ └── jimureport/
│ │ │ │ │ ├── JimuDragExternalServiceImpl.java
│ │ │ │ │ └── JimuReportTokenService.java
│ │ │ │ └── modules/
│ │ │ │ ├── airag/
│ │ │ │ │ ├── JeecgBizToolsProvider.java
│ │ │ │ │ └── TestAiGenWordEnhance.java
│ │ │ │ ├── aop/
│ │ │ │ │ ├── TenantLog.java
│ │ │ │ │ └── TenantPackUserLogAspect.java
│ │ │ │ ├── api/
│ │ │ │ │ └── controller/
│ │ │ │ │ └── SystemApiController.java
│ │ │ │ ├── cas/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── CasClientController.java
│ │ │ │ │ └── util/
│ │ │ │ │ ├── CasServiceUtil.java
│ │ │ │ │ └── XmlUtils.java
│ │ │ │ ├── message/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ ├── SysMessageController.java
│ │ │ │ │ │ ├── SysMessageTemplateController.java
│ │ │ │ │ │ └── TestSocketController.java
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ ├── MsgParams.java
│ │ │ │ │ │ ├── SysMessage.java
│ │ │ │ │ │ └── SysMessageTemplate.java
│ │ │ │ │ ├── enums/
│ │ │ │ │ │ └── RangeDateEnum.java
│ │ │ │ │ ├── handle/
│ │ │ │ │ │ ├── ISendMsgHandle.java
│ │ │ │ │ │ ├── enums/
│ │ │ │ │ │ │ ├── SendMsgStatusEnum.java
│ │ │ │ │ │ │ └── SendMsgTypeEnum.java
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── DdSendMsgHandle.java
│ │ │ │ │ │ ├── EmailSendMsgHandle.java
│ │ │ │ │ │ ├── QywxSendMsgHandle.java
│ │ │ │ │ │ ├── SmsSendMsgHandle.java
│ │ │ │ │ │ ├── SystemSendMsgHandle.java
│ │ │ │ │ │ └── WxSendMsgHandle.java
│ │ │ │ │ ├── job/
│ │ │ │ │ │ └── SendMsgJob.java
│ │ │ │ │ ├── mapper/
│ │ │ │ │ │ ├── SysMessageMapper.java
│ │ │ │ │ │ ├── SysMessageTemplateMapper.java
│ │ │ │ │ │ └── xml/
│ │ │ │ │ │ ├── SysMessageMapper.xml
│ │ │ │ │ │ └── SysMessageTemplateMapper.xml
│ │ │ │ │ ├── service/
│ │ │ │ │ │ ├── ISysMessageService.java
│ │ │ │ │ │ ├── ISysMessageTemplateService.java
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── SysMessageServiceImpl.java
│ │ │ │ │ │ └── SysMessageTemplateServiceImpl.java
│ │ │ │ │ ├── util/
│ │ │ │ │ │ └── PushMsgUtil.java
│ │ │ │ │ └── websocket/
│ │ │ │ │ ├── SocketHandler.java
│ │ │ │ │ └── WebSocket.java
│ │ │ │ ├── monitor/
│ │ │ │ │ ├── actuator/
│ │ │ │ │ │ ├── CustomActuatorConfig.java
│ │ │ │ │ │ ├── httptrace/
│ │ │ │ │ │ │ ├── CustomHttpTraceEndpoint.java
│ │ │ │ │ │ │ └── CustomInMemoryHttpTraceRepository.java
│ │ │ │ │ │ └── undertow/
│ │ │ │ │ │ └── CustomUndertowMetricsHandler.java
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ ├── ActuatorMemoryController.java
│ │ │ │ │ │ └── ActuatorRedisController.java
│ │ │ │ │ ├── domain/
│ │ │ │ │ │ └── RedisInfo.java
│ │ │ │ │ ├── exception/
│ │ │ │ │ │ └── RedisConnectException.java
│ │ │ │ │ └── service/
│ │ │ │ │ ├── RedisService.java
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── MailHealthIndicator.java
│ │ │ │ │ └── RedisServiceImpl.java
│ │ │ │ ├── ngalain/
│ │ │ │ │ ├── aop/
│ │ │ │ │ │ └── LogRecordAspect.java
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── NgAlainController.java
│ │ │ │ │ └── service/
│ │ │ │ │ ├── NgAlainService.java
│ │ │ │ │ └── impl/
│ │ │ │ │ └── NgAlainServiceImpl.java
│ │ │ │ ├── openapi/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ ├── OpenApiAuthController.java
│ │ │ │ │ │ ├── OpenApiController.java
│ │ │ │ │ │ ├── OpenApiIndexController.java
│ │ │ │ │ │ ├── OpenApiLogController.java
│ │ │ │ │ │ └── OpenApiPermissionController.java
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ ├── OpenApi.java
│ │ │ │ │ │ ├── OpenApiAuth.java
│ │ │ │ │ │ ├── OpenApiHeader.java
│ │ │ │ │ │ ├── OpenApiLog.java
│ │ │ │ │ │ ├── OpenApiParam.java
│ │ │ │ │ │ └── OpenApiPermission.java
│ │ │ │ │ ├── filter/
│ │ │ │ │ │ ├── ApiAuthFilter.java
│ │ │ │ │ │ └── ApiFilterConfig.java
│ │ │ │ │ ├── generator/
│ │ │ │ │ │ ├── AKSKGenerator.java
│ │ │ │ │ │ └── PathGenerator.java
│ │ │ │ │ ├── mapper/
│ │ │ │ │ │ ├── OpenApiAuthMapper.java
│ │ │ │ │ │ ├── OpenApiLogMapper.java
│ │ │ │ │ │ ├── OpenApiMapper.java
│ │ │ │ │ │ └── OpenApiPermissionMapper.java
│ │ │ │ │ ├── service/
│ │ │ │ │ │ ├── OpenApiAuthService.java
│ │ │ │ │ │ ├── OpenApiLogService.java
│ │ │ │ │ │ ├── OpenApiPermissionService.java
│ │ │ │ │ │ ├── OpenApiService.java
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── OpenApiAuthServiceImpl.java
│ │ │ │ │ │ ├── OpenApiLogServiceImpl.java
│ │ │ │ │ │ ├── OpenApiPermissionServiceImpl.java
│ │ │ │ │ │ └── OpenApiServiceImpl.java
│ │ │ │ │ └── swagger/
│ │ │ │ │ ├── SwaggerDefinition.java
│ │ │ │ │ ├── SwaggerDefinitionProperties.java
│ │ │ │ │ ├── SwaggerInfo.java
│ │ │ │ │ ├── SwaggerInfoContact.java
│ │ │ │ │ ├── SwaggerInfoLicense.java
│ │ │ │ │ ├── SwaggerModel.java
│ │ │ │ │ ├── SwaggerOperation.java
│ │ │ │ │ ├── SwaggerOperationParameter.java
│ │ │ │ │ ├── SwaggerOperationResponse.java
│ │ │ │ │ ├── SwaggerSchema.java
│ │ │ │ │ └── SwaggerTag.java
│ │ │ │ ├── oss/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── OssFileController.java
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ └── OssFile.java
│ │ │ │ │ ├── mapper/
│ │ │ │ │ │ └── OssFileMapper.java
│ │ │ │ │ └── service/
│ │ │ │ │ ├── IOssFileService.java
│ │ │ │ │ └── impl/
│ │ │ │ │ └── OssFileServiceImpl.java
│ │ │ │ ├── quartz/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── QuartzJobController.java
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ └── QuartzJob.java
│ │ │ │ │ ├── job/
│ │ │ │ │ │ ├── AsyncJob.java
│ │ │ │ │ │ ├── SampleJob.java
│ │ │ │ │ │ └── SampleParamJob.java
│ │ │ │ │ ├── mapper/
│ │ │ │ │ │ ├── QuartzJobMapper.java
│ │ │ │ │ │ └── xml/
│ │ │ │ │ │ └── QuartzJobMapper.xml
│ │ │ │ │ └── service/
│ │ │ │ │ ├── IQuartzJobService.java
│ │ │ │ │ └── impl/
│ │ │ │ │ └── QuartzJobServiceImpl.java
│ │ │ │ └── system/
│ │ │ │ ├── cache/
│ │ │ │ │ └── AuthStateRedisCache.java
│ │ │ │ ├── config/
│ │ │ │ │ └── AuthStateConfiguration.java
│ │ │ │ ├── constant/
│ │ │ │ │ └── DefIndexConst.java
│ │ │ │ ├── controller/
│ │ │ │ │ ├── CommonController.java
│ │ │ │ │ ├── DuplicateCheckController.java
│ │ │ │ │ ├── LoginController.java
│ │ │ │ │ ├── SysAnnouncementController.java
│ │ │ │ │ ├── SysAnnouncementSendController.java
│ │ │ │ │ ├── SysAppVersionController.java
│ │ │ │ │ ├── SysCategoryController.java
│ │ │ │ │ ├── SysCheckRuleController.java
│ │ │ │ │ ├── SysCommentController.java
│ │ │ │ │ ├── SysDataLogController.java
│ │ │ │ │ ├── SysDataSourceController.java
│ │ │ │ │ ├── SysDepartController.java
│ │ │ │ │ ├── SysDepartPermissionController.java
│ │ │ │ │ ├── SysDepartRoleController.java
│ │ │ │ │ ├── SysDictController.java
│ │ │ │ │ ├── SysDictItemController.java
│ │ │ │ │ ├── SysFillRuleController.java
│ │ │ │ │ ├── SysFormFileController.java
│ │ │ │ │ ├── SysGatewayRouteController.java
│ │ │ │ │ ├── SysLogController.java
│ │ │ │ │ ├── SysPermissionController.java
│ │ │ │ │ ├── SysPositionController.java
│ │ │ │ │ ├── SysRoleController.java
│ │ │ │ │ ├── SysRoleIndexController.java
│ │ │ │ │ ├── SysTableWhiteListController.java
│ │ │ │ │ ├── SysTenantController.java
│ │ │ │ │ ├── SysUploadController.java
│ │ │ │ │ ├── SysUserController.java
│ │ │ │ │ ├── SysUserOnlineController.java
│ │ │ │ │ ├── ThirdAppController.java
│ │ │ │ │ ├── ThirdLoginController.java
│ │ │ │ │ └── WechatVerifyController.java
│ │ │ │ ├── entity/
│ │ │ │ │ ├── SysAnnouncement.java
│ │ │ │ │ ├── SysAnnouncementSend.java
│ │ │ │ │ ├── SysAppVersion.java
│ │ │ │ │ ├── SysCategory.java
│ │ │ │ │ ├── SysCheckRule.java
│ │ │ │ │ ├── SysComment.java
│ │ │ │ │ ├── SysDataLog.java
│ │ │ │ │ ├── SysDataSource.java
│ │ │ │ │ ├── SysDepart.java
│ │ │ │ │ ├── SysDepartPermission.java
│ │ │ │ │ ├── SysDepartRole.java
│ │ │ │ │ ├── SysDepartRolePermission.java
│ │ │ │ │ ├── SysDepartRoleUser.java
│ │ │ │ │ ├── SysDict.java
│ │ │ │ │ ├── SysDictItem.java
│ │ │ │ │ ├── SysFillRule.java
│ │ │ │ │ ├── SysFormFile.java
│ │ │ │ │ ├── SysGatewayRoute.java
│ │ │ │ │ ├── SysLog.java
│ │ │ │ │ ├── SysPackPermission.java
│ │ │ │ │ ├── SysPermission.java
│ │ │ │ │ ├── SysPermissionDataRule.java
│ │ │ │ │ ├── SysPosition.java
│ │ │ │ │ ├── SysRole.java
│ │ │ │ │ ├── SysRoleIndex.java
│ │ │ │ │ ├── SysRolePermission.java
│ │ │ │ │ ├── SysTableWhiteList.java
│ │ │ │ │ ├── SysTenant.java
│ │ │ │ │ ├── SysTenantPack.java
│ │ │ │ │ ├── SysTenantPackUser.java
│ │ │ │ │ ├── SysThirdAccount.java
│ │ │ │ │ ├── SysThirdAppConfig.java
│ │ │ │ │ ├── SysUser.java
│ │ │ │ │ ├── SysUserDepPost.java
│ │ │ │ │ ├── SysUserDepart.java
│ │ │ │ │ ├── SysUserPosition.java
│ │ │ │ │ ├── SysUserRole.java
│ │ │ │ │ └── SysUserTenant.java
│ │ │ │ ├── excelstyle/
│ │ │ │ │ └── ExcelExportSysUserStyle.java
│ │ │ │ ├── job/
│ │ │ │ │ └── UserUpadtePwdJob.java
│ │ │ │ ├── mapper/
│ │ │ │ │ ├── SysAnnouncementMapper.java
│ │ │ │ │ ├── SysAnnouncementSendMapper.java
│ │ │ │ │ ├── SysCategoryMapper.java
│ │ │ │ │ ├── SysCheckRuleMapper.java
│ │ │ │ │ ├── SysCommentMapper.java
│ │ │ │ │ ├── SysDataLogMapper.java
│ │ │ │ │ ├── SysDataSourceMapper.java
│ │ │ │ │ ├── SysDepartMapper.java
│ │ │ │ │ ├── SysDepartPermissionMapper.java
│ │ │ │ │ ├── SysDepartRoleMapper.java
│ │ │ │ │ ├── SysDepartRolePermissionMapper.java
│ │ │ │ │ ├── SysDepartRoleUserMapper.java
│ │ │ │ │ ├── SysDictItemMapper.java
│ │ │ │ │ ├── SysDictMapper.java
│ │ │ │ │ ├── SysFillRuleMapper.java
│ │ │ │ │ ├── SysFormFileMapper.java
│ │ │ │ │ ├── SysGatewayRouteMapper.java
│ │ │ │ │ ├── SysLogMapper.java
│ │ │ │ │ ├── SysPackPermissionMapper.java
│ │ │ │ │ ├── SysPermissionDataRuleMapper.java
│ │ │ │ │ ├── SysPermissionMapper.java
│ │ │ │ │ ├── SysPositionMapper.java
│ │ │ │ │ ├── SysRoleIndexMapper.java
│ │ │ │ │ ├── SysRoleMapper.java
│ │ │ │ │ ├── SysRolePermissionMapper.java
│ │ │ │ │ ├── SysTableWhiteListMapper.java
│ │ │ │ │ ├── SysTenantMapper.java
│ │ │ │ │ ├── SysTenantPackMapper.java
│ │ │ │ │ ├── SysTenantPackUserMapper.java
│ │ │ │ │ ├── SysThirdAccountMapper.java
│ │ │ │ │ ├── SysThirdAppConfigMapper.java
│ │ │ │ │ ├── SysUserDepPostMapper.java
│ │ │ │ │ ├── SysUserDepartMapper.java
│ │ │ │ │ ├── SysUserMapper.java
│ │ │ │ │ ├── SysUserPositionMapper.java
│ │ │ │ │ ├── SysUserRoleMapper.java
│ │ │ │ │ ├── SysUserTenantMapper.java
│ │ │ │ │ └── xml/
│ │ │ │ │ ├── SysAnnouncementMapper.xml
│ │ │ │ │ ├── SysAnnouncementSendMapper.xml
│ │ │ │ │ ├── SysCategoryMapper.xml
│ │ │ │ │ ├── SysCheckRuleMapper.xml
│ │ │ │ │ ├── SysCommentMapper.xml
│ │ │ │ │ ├── SysDataLogMapper.xml
│ │ │ │ │ ├── SysDataSourceMapper.xml
│ │ │ │ │ ├── SysDepartMapper.xml
│ │ │ │ │ ├── SysDepartPermissionMapper.xml
│ │ │ │ │ ├── SysDepartRoleMapper.xml
│ │ │ │ │ ├── SysDepartRolePermissionMapper.xml
│ │ │ │ │ ├── SysDepartRoleUserMapper.xml
│ │ │ │ │ ├── SysDictItemMapper.xml
│ │ │ │ │ ├── SysDictMapper.xml
│ │ │ │ │ ├── SysFillRuleMapper.xml
│ │ │ │ │ ├── SysGatewayRouteMapper.xml
│ │ │ │ │ ├── SysLogMapper.xml
│ │ │ │ │ ├── SysPackPermissionMapper.xml
│ │ │ │ │ ├── SysPermissionDataRuleMapper.xml
│ │ │ │ │ ├── SysPermissionMapper.xml
│ │ │ │ │ ├── SysPositionMapper.xml
│ │ │ │ │ ├── SysRoleIndexMapper.xml
│ │ │ │ │ ├── SysRoleMapper.xml
│ │ │ │ │ ├── SysTableWhiteListMapper.xml
│ │ │ │ │ ├── SysTenantMapper.xml
│ │ │ │ │ ├── SysTenantPackMapper.xml
│ │ │ │ │ ├── SysTenantPackUserMapper.xml
│ │ │ │ │ ├── SysThirdAccountMapper.xml
│ │ │ │ │ ├── SysThirdAppConfigMapper.xml
│ │ │ │ │ ├── SysUserDepartMapper.xml
│ │ │ │ │ ├── SysUserMapper.xml
│ │ │ │ │ ├── SysUserPositionMapper.xml
│ │ │ │ │ └── SysUserTenantMapper.xml
│ │ │ │ ├── model/
│ │ │ │ │ ├── AnnouncementSendModel.java
│ │ │ │ │ ├── DepartIdModel.java
│ │ │ │ │ ├── DuplicateCheckVo.java
│ │ │ │ │ ├── SysDepartTreeModel.java
│ │ │ │ │ ├── SysDictTree.java
│ │ │ │ │ ├── SysLoginModel.java
│ │ │ │ │ ├── SysPermissionTree.java
│ │ │ │ │ ├── SysUserSysDepPostModel.java
│ │ │ │ │ ├── SysUserSysDepartModel.java
│ │ │ │ │ ├── ThirdLoginModel.java
│ │ │ │ │ ├── TreeModel.java
│ │ │ │ │ └── TreeSelectModel.java
│ │ │ │ ├── rule/
│ │ │ │ │ ├── CategoryCodeRule.java
│ │ │ │ │ ├── OrderNumberRule.java
│ │ │ │ │ └── OrgCodeRule.java
│ │ │ │ ├── security/
│ │ │ │ │ └── DictQueryBlackListHandler.java
│ │ │ │ ├── service/
│ │ │ │ │ ├── ISysAnnouncementSendService.java
│ │ │ │ │ ├── ISysAnnouncementService.java
│ │ │ │ │ ├── ISysCategoryService.java
│ │ │ │ │ ├── ISysCheckRuleService.java
│ │ │ │ │ ├── ISysCommentService.java
│ │ │ │ │ ├── ISysDataLogService.java
│ │ │ │ │ ├── ISysDataSourceService.java
│ │ │ │ │ ├── ISysDepartPermissionService.java
│ │ │ │ │ ├── ISysDepartRolePermissionService.java
│ │ │ │ │ ├── ISysDepartRoleService.java
│ │ │ │ │ ├── ISysDepartRoleUserService.java
│ │ │ │ │ ├── ISysDepartService.java
│ │ │ │ │ ├── ISysDictItemService.java
│ │ │ │ │ ├── ISysDictService.java
│ │ │ │ │ ├── ISysFillRuleService.java
│ │ │ │ │ ├── ISysFormFileService.java
│ │ │ │ │ ├── ISysGatewayRouteService.java
│ │ │ │ │ ├── ISysLogService.java
│ │ │ │ │ ├── ISysPackPermissionService.java
│ │ │ │ │ ├── ISysPermissionDataRuleService.java
│ │ │ │ │ ├── ISysPermissionService.java
│ │ │ │ │ ├── ISysPositionService.java
│ │ │ │ │ ├── ISysRoleIndexService.java
│ │ │ │ │ ├── ISysRolePermissionService.java
│ │ │ │ │ ├── ISysRoleService.java
│ │ │ │ │ ├── ISysTableWhiteListService.java
│ │ │ │ │ ├── ISysTenantPackService.java
│ │ │ │ │ ├── ISysTenantService.java
│ │ │ │ │ ├── ISysThirdAccountService.java
│ │ │ │ │ ├── ISysThirdAppConfigService.java
│ │ │ │ │ ├── ISysUserDepPostService.java
│ │ │ │ │ ├── ISysUserDepartService.java
│ │ │ │ │ ├── ISysUserPositionService.java
│ │ │ │ │ ├── ISysUserRoleService.java
│ │ │ │ │ ├── ISysUserService.java
│ │ │ │ │ ├── ISysUserTenantService.java
│ │ │ │ │ ├── IThirdAppService.java
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── ImportFileServiceImpl.java
│ │ │ │ │ ├── SysAnnouncementSendServiceImpl.java
│ │ │ │ │ ├── SysAnnouncementServiceImpl.java
│ │ │ │ │ ├── SysBaseApiImpl.java
│ │ │ │ │ ├── SysCategoryServiceImpl.java
│ │ │ │ │ ├── SysCheckRuleServiceImpl.java
│ │ │ │ │ ├── SysCommentServiceImpl.java
│ │ │ │ │ ├── SysDataLogServiceImpl.java
│ │ │ │ │ ├── SysDataSourceServiceImpl.java
│ │ │ │ │ ├── SysDepartPermissionServiceImpl.java
│ │ │ │ │ ├── SysDepartRolePermissionServiceImpl.java
│ │ │ │ │ ├── SysDepartRoleServiceImpl.java
│ │ │ │ │ ├── SysDepartRoleUserServiceImpl.java
│ │ │ │ │ ├── SysDepartServiceImpl.java
│ │ │ │ │ ├── SysDictItemServiceImpl.java
│ │ │ │ │ ├── SysDictServiceImpl.java
│ │ │ │ │ ├── SysFillRuleServiceImpl.java
│ │ │ │ │ ├── SysFormFileServiceImpl.java
│ │ │ │ │ ├── SysGatewayRouteServiceImpl.java
│ │ │ │ │ ├── SysLogServiceImpl.java
│ │ │ │ │ ├── SysPackPermissionServiceImpl.java
│ │ │ │ │ ├── SysPermissionDataRuleImpl.java
│ │ │ │ │ ├── SysPermissionServiceImpl.java
│ │ │ │ │ ├── SysPositionServiceImpl.java
│ │ │ │ │ ├── SysRoleIndexServiceImpl.java
│ │ │ │ │ ├── SysRolePermissionServiceImpl.java
│ │ │ │ │ ├── SysRoleServiceImpl.java
│ │ │ │ │ ├── SysTableWhiteListServiceImpl.java
│ │ │ │ │ ├── SysTenantPackServiceImpl.java
│ │ │ │ │ ├── SysTenantServiceImpl.java
│ │ │ │ │ ├── SysThirdAccountServiceImpl.java
│ │ │ │ │ ├── SysThirdAppConfigServiceImpl.java
│ │ │ │ │ ├── SysUserDepPostServiceImpl.java
│ │ │ │ │ ├── SysUserDepartServiceImpl.java
│ │ │ │ │ ├── SysUserPositionServiceImpl.java
│ │ │ │ │ ├── SysUserRoleServiceImpl.java
│ │ │ │ │ ├── SysUserServiceImpl.java
│ │ │ │ │ ├── SysUserTenantServiceImpl.java
│ │ │ │ │ ├── ThirdAppDingtalkServiceImpl.java
│ │ │ │ │ └── ThirdAppWechatEnterpriseServiceImpl.java
│ │ │ │ ├── util/
│ │ │ │ │ ├── FindsDepartsChildrenUtil.java
│ │ │ │ │ ├── HttpFileToMultipartFileUtil.java
│ │ │ │ │ ├── ImportOldUserUtil.java
│ │ │ │ │ ├── ImportSysUserCache.java
│ │ │ │ │ ├── PermissionDataUtil.java
│ │ │ │ │ ├── RandImageUtil.java
│ │ │ │ │ ├── SecurityUtil.java
│ │ │ │ │ └── XssUtils.java
│ │ │ │ └── vo/
│ │ │ │ ├── SysChangeDepartVo.java
│ │ │ │ ├── SysCommentFileVo.java
│ │ │ │ ├── SysCommentVO.java
│ │ │ │ ├── SysDepartExportVo.java
│ │ │ │ ├── SysDepartPositionVo.java
│ │ │ │ ├── SysDepartUsersVO.java
│ │ │ │ ├── SysDictPage.java
│ │ │ │ ├── SysPositionSelectTreeVo.java
│ │ │ │ ├── SysUserDepVo.java
│ │ │ │ ├── SysUserExportVo.java
│ │ │ │ ├── SysUserImportVo.java
│ │ │ │ ├── SysUserOnlineVO.java
│ │ │ │ ├── SysUserPositionVo.java
│ │ │ │ ├── SysUserRoleCountVo.java
│ │ │ │ ├── SysUserRoleVO.java
│ │ │ │ ├── SysUserTenantVo.java
│ │ │ │ ├── UserAvatar.java
│ │ │ │ ├── lowapp/
│ │ │ │ │ ├── AppExportUserVo.java
│ │ │ │ │ ├── DepartAndUserInfo.java
│ │ │ │ │ ├── DepartInfo.java
│ │ │ │ │ ├── ExportDepartVo.java
│ │ │ │ │ ├── SysDictVo.java
│ │ │ │ │ └── UpdateDepartInfo.java
│ │ │ │ ├── tenant/
│ │ │ │ │ ├── TenantDepartAuthInfo.java
│ │ │ │ │ ├── TenantPackAuth.java
│ │ │ │ │ ├── TenantPackModel.java
│ │ │ │ │ ├── TenantPackUser.java
│ │ │ │ │ ├── TenantPackUserCount.java
│ │ │ │ │ ├── UserDepart.java
│ │ │ │ │ └── UserPosition.java
│ │ │ │ └── thirdapp/
│ │ │ │ ├── JdtDepartmentTreeVo.java
│ │ │ │ ├── JwDepartmentTreeVo.java
│ │ │ │ ├── JwSysUserDepartVo.java
│ │ │ │ ├── JwUserDepartVo.java
│ │ │ │ └── SyncInfoVo.java
│ │ │ └── resources/
│ │ │ ├── jeecg/
│ │ │ │ ├── code-template/
│ │ │ │ │ ├── one/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── ${bussiPackage}/
│ │ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ └── ${entityName}Controller.javai
│ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ └── ${entityName}.javai
│ │ │ │ │ │ ├── mapper/
│ │ │ │ │ │ │ ├── ${entityName}Mapper.javai
│ │ │ │ │ │ │ └── xml/
│ │ │ │ │ │ │ └── ${entityName}Mapper.xml
│ │ │ │ │ │ ├── service/
│ │ │ │ │ │ │ ├── I${entityName}Service.javai
│ │ │ │ │ │ │ └── impl/
│ │ │ │ │ │ │ └── ${entityName}ServiceImpl.javai
│ │ │ │ │ │ ├── uniapp/
│ │ │ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ │ │ └── ${entityName}List.vuei
│ │ │ │ │ │ ├── vue/
│ │ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ │ └── modules/
│ │ │ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ │ │ └── ${entityName}Modal__Style#Drawer.vuei
│ │ │ │ │ │ └── vue3/
│ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ │ │ └── modules/
│ │ │ │ │ │ └── ${entityName}Modal.vuei
│ │ │ │ │ ├── one2/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── ${bussiPackage}/
│ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ │ │ └── ${entityName}Controller.javai
│ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ │ │ └── ${entityName}.javai
│ │ │ │ │ │ ├── mapper/
│ │ │ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ │ │ ├── ${entityName}Mapper.javai
│ │ │ │ │ │ │ └── xml/
│ │ │ │ │ │ │ └── ${entityName}Mapper.xml
│ │ │ │ │ │ ├── service/
│ │ │ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ │ │ ├── I${entityName}Service.javai
│ │ │ │ │ │ │ └── impl/
│ │ │ │ │ │ │ └── ${entityName}ServiceImpl.javai
│ │ │ │ │ │ ├── vue/
│ │ │ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ │ └── modules/
│ │ │ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ │ │ └── ${entityName}Modal__Style#Drawer.vuei
│ │ │ │ │ │ └── vue3/
│ │ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ │ │ └── modules/
│ │ │ │ │ │ └── ${entityName}Modal.vuei
│ │ │ │ │ ├── onetomany/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── ${bussiPackage}/
│ │ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ └── ${entityName}Controller.javai
│ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ ├── ${entityName}.javai
│ │ │ │ │ │ │ └── [1-n]Entity.javai
│ │ │ │ │ │ ├── mapper/
│ │ │ │ │ │ │ ├── ${entityName}Mapper.javai
│ │ │ │ │ │ │ ├── [1-n]Mapper.javai
│ │ │ │ │ │ │ └── xml/
│ │ │ │ │ │ │ ├── ${entityName}Mapper.xml
│ │ │ │ │ │ │ └── [1-n]Mapper.xml
│ │ │ │ │ │ ├── service/
│ │ │ │ │ │ │ ├── I${entityName}Service.javai
│ │ │ │ │ │ │ ├── [1-n]Service.javai
│ │ │ │ │ │ │ └── impl/
│ │ │ │ │ │ │ ├── ${entityName}ServiceImpl.javai
│ │ │ │ │ │ │ └── [1-n]ServiceImpl.javai
│ │ │ │ │ │ ├── vo/
│ │ │ │ │ │ │ └── ${entityName}Page.javai
│ │ │ │ │ │ ├── vue/
│ │ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ │ └── modules/
│ │ │ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ │ │ └── ${entityName}Modal.vuei
│ │ │ │ │ │ └── vue3/
│ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ │ │ └── modules/
│ │ │ │ │ │ └── ${entityName}Modal.vuei
│ │ │ │ │ └── onetomany2/
│ │ │ │ │ └── java/
│ │ │ │ │ └── ${bussiPackage}/
│ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── ${entityName}Controller.javai
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ ├── ${entityName}.javai
│ │ │ │ │ │ └── [1-n]Entity.javai
│ │ │ │ │ ├── mapper/
│ │ │ │ │ │ ├── ${entityName}Mapper.javai
│ │ │ │ │ │ ├── [1-n]Mapper.javai
│ │ │ │ │ │ └── xml/
│ │ │ │ │ │ ├── ${entityName}Mapper.xml
│ │ │ │ │ │ └── [1-n]Mapper.xml
│ │ │ │ │ ├── service/
│ │ │ │ │ │ ├── I${entityName}Service.javai
│ │ │ │ │ │ ├── [1-n]Service.javai
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── ${entityName}ServiceImpl.javai
│ │ │ │ │ │ └── [1-n]ServiceImpl.javai
│ │ │ │ │ ├── vo/
│ │ │ │ │ │ └── ${entityName}Page.javai
│ │ │ │ │ ├── vue/
│ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ ├── [1-n]List.vuei
│ │ │ │ │ │ └── modules/
│ │ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ │ └── [1-n]Modal.vuei
│ │ │ │ │ └── vue3/
│ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ │ ├── [1-n]List.vuei
│ │ │ │ │ └── modules/
│ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ └── [1-n]Modal.vuei
│ │ │ │ └── code-template-online/
│ │ │ │ ├── common/
│ │ │ │ │ ├── blob.ftl
│ │ │ │ │ ├── form/
│ │ │ │ │ │ ├── native/
│ │ │ │ │ │ │ ├── vue3NativeComponents.ftl
│ │ │ │ │ │ │ ├── vue3NativeForm.ftl
│ │ │ │ │ │ │ ├── vue3NativeImport.ftl
│ │ │ │ │ │ │ ├── vue3NativeSearch.ftl
│ │ │ │ │ │ │ └── vueNativeSearchStyle.ftl
│ │ │ │ │ │ ├── vue3Jvxepopup.ftl
│ │ │ │ │ │ ├── vue3SearchStyle.ftl
│ │ │ │ │ │ └── vue3popup.ftl
│ │ │ │ │ ├── init/
│ │ │ │ │ │ ├── initValue.ftl
│ │ │ │ │ │ ├── initValueSub.ftl
│ │ │ │ │ │ └── native/
│ │ │ │ │ │ ├── vue3NativeInitValue.ftl
│ │ │ │ │ │ ├── vue3NativeMainInitValue.ftl
│ │ │ │ │ │ └── vue3NativeSubInitValue.ftl
│ │ │ │ │ ├── sql/
│ │ │ │ │ │ └── menu_insert.ftl
│ │ │ │ │ ├── utils.ftl
│ │ │ │ │ └── validatorRulesTemplate/
│ │ │ │ │ ├── core.ftl
│ │ │ │ │ ├── main.ftl
│ │ │ │ │ ├── native/
│ │ │ │ │ │ ├── vue3CoreNative.ftl
│ │ │ │ │ │ └── vue3MainNative.ftl
│ │ │ │ │ ├── sub-vue3.ftl
│ │ │ │ │ └── sub.ftl
│ │ │ │ ├── default/
│ │ │ │ │ ├── one/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── ${bussiPackage}/
│ │ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ └── ${entityName}Controller.javai
│ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ └── ${entityName}.javai
│ │ │ │ │ │ ├── mapper/
│ │ │ │ │ │ │ ├── ${entityName}Mapper.javai
│ │ │ │ │ │ │ └── xml/
│ │ │ │ │ │ │ └── ${entityName}Mapper.xml
│ │ │ │ │ │ ├── service/
│ │ │ │ │ │ │ ├── I${entityName}Service.javai
│ │ │ │ │ │ │ └── impl/
│ │ │ │ │ │ │ └── ${entityName}ServiceImpl.javai
│ │ │ │ │ │ ├── uniapp/
│ │ │ │ │ │ │ ├── ${entityName}Form.vue
│ │ │ │ │ │ │ └── ${entityName}List.vue
│ │ │ │ │ │ ├── uniapp3/
│ │ │ │ │ │ │ ├── ${entityName}Data.tsi
│ │ │ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ │ │ └── ${entityName}List.vuei
│ │ │ │ │ │ ├── vue/
│ │ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ │ │ └── modules/
│ │ │ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ │ │ └── ${entityName}Modal__Style#Drawer.vuei
│ │ │ │ │ │ ├── vue3/
│ │ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ │ │ └── components/
│ │ │ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ │ │ └── ${entityName}Modal.vuei
│ │ │ │ │ │ └── vue3Native/
│ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ │ └── components/
│ │ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ │ └── ${entityName}Modal.vuei
│ │ │ │ │ ├── onetomany/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── ${bussiPackage}/
│ │ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ └── ${entityName}Controller.javai
│ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ ├── ${entityName}.javai
│ │ │ │ │ │ │ └── [1-n]Entity.javai
│ │ │ │ │ │ ├── mapper/
│ │ │ │ │ │ │ ├── ${entityName}Mapper.javai
│ │ │ │ │ │ │ ├── [1-n]Mapper.javai
│ │ │ │ │ │ │ └── xml/
│ │ │ │ │ │ │ ├── ${entityName}Mapper.xml
│ │ │ │ │ │ │ └── [1-n]Mapper.xml
│ │ │ │ │ │ ├── service/
│ │ │ │ │ │ │ ├── I${entityName}Service.javai
│ │ │ │ │ │ │ ├── [1-n]Service.javai
│ │ │ │ │ │ │ └── impl/
│ │ │ │ │ │ │ ├── ${entityName}ServiceImpl.javai
│ │ │ │ │ │ │ └── [1-n]ServiceImpl.javai
│ │ │ │ │ │ ├── vo/
│ │ │ │ │ │ │ └── ${entityName}Page.javai
│ │ │ │ │ │ └── vue/
│ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ │ └── modules/
│ │ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ │ └── [1-n]Form.vuei
│ │ │ │ │ └── tree/
│ │ │ │ │ └── java/
│ │ │ │ │ └── ${bussiPackage}/
│ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── ${entityName}Controller.javai
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ └── ${entityName}.javai
│ │ │ │ │ ├── mapper/
│ │ │ │ │ │ ├── ${entityName}Mapper.javai
│ │ │ │ │ │ └── xml/
│ │ │ │ │ │ └── ${entityName}Mapper.xml
│ │ │ │ │ ├── service/
│ │ │ │ │ │ ├── I${entityName}Service.javai
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ └── ${entityName}ServiceImpl.javai
│ │ │ │ │ ├── vue/
│ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ │ └── modules/
│ │ │ │ │ │ └── ${entityName}Modal.vuei
│ │ │ │ │ ├── vue3/
│ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ │ └── components/
│ │ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ │ └── ${entityName}Modal.vuei
│ │ │ │ │ └── vue3Native/
│ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ └── components/
│ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ └── ${entityName}Modal.vuei
│ │ │ │ ├── erp/
│ │ │ │ │ └── onetomany/
│ │ │ │ │ └── java/
│ │ │ │ │ └── ${bussiPackage}/
│ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── ${entityName}Controller.javai
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ ├── ${entityName}.javai
│ │ │ │ │ │ └── [1-n]Entity.javai
│ │ │ │ │ ├── mapper/
│ │ │ │ │ │ ├── ${entityName}Mapper.javai
│ │ │ │ │ │ ├── [1-n]Mapper.javai
│ │ │ │ │ │ └── xml/
│ │ │ │ │ │ ├── ${entityName}Mapper.xml
│ │ │ │ │ │ └── [1-n]Mapper.xml
│ │ │ │ │ ├── service/
│ │ │ │ │ │ ├── I${entityName}Service.javai
│ │ │ │ │ │ ├── [1-n]Service.javai
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── ${entityName}ServiceImpl.javai
│ │ │ │ │ │ └── [1-n]ServiceImpl.javai
│ │ │ │ │ ├── vue/
│ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ │ ├── [1-n]List.vuei
│ │ │ │ │ │ └── modules/
│ │ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ │ └── [1-n]Modal.vuei
│ │ │ │ │ ├── vue3/
│ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ │ ├── [1-n]List.vuei
│ │ │ │ │ │ └── components/
│ │ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ │ └── [1-n]Modal.vuei
│ │ │ │ │ └── vue3Native/
│ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ ├── [1-n]List.vuei
│ │ │ │ │ └── components/
│ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ ├── [1-n]Form.vuei
│ │ │ │ │ └── [1-n]Modal.vuei
│ │ │ │ ├── inner-table/
│ │ │ │ │ └── onetomany/
│ │ │ │ │ └── java/
│ │ │ │ │ └── ${bussiPackage}/
│ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── ${entityName}Controller.javai
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ ├── ${entityName}.javai
│ │ │ │ │ │ └── [1-n]Entity.javai
│ │ │ │ │ ├── mapper/
│ │ │ │ │ │ ├── ${entityName}Mapper.javai
│ │ │ │ │ │ ├── [1-n]Mapper.javai
│ │ │ │ │ │ └── xml/
│ │ │ │ │ │ ├── ${entityName}Mapper.xml
│ │ │ │ │ │ └── [1-n]Mapper.xml
│ │ │ │ │ ├── service/
│ │ │ │ │ │ ├── I${entityName}Service.javai
│ │ │ │ │ │ ├── [1-n]Service.javai
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── ${entityName}ServiceImpl.javai
│ │ │ │ │ │ └── [1-n]ServiceImpl.javai
│ │ │ │ │ ├── vo/
│ │ │ │ │ │ └── ${entityName}Page.javai
│ │ │ │ │ ├── vue/
│ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ │ ├── modules/
│ │ │ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ │ │ └── [1-n]Form.vuei
│ │ │ │ │ │ └── subTables/
│ │ │ │ │ │ └── [1-n]SubTable.vuei
│ │ │ │ │ └── vue3/
│ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ │ └── [1-n]Form.vuei
│ │ │ │ │ └── subTables/
│ │ │ │ │ └── [1-n]SubTable.vuei
│ │ │ │ ├── jvxe/
│ │ │ │ │ └── onetomany/
│ │ │ │ │ └── java/
│ │ │ │ │ └── ${bussiPackage}/
│ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── ${entityName}Controller.javai
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ ├── ${entityName}.javai
│ │ │ │ │ │ └── [1-n]Entity.javai
│ │ │ │ │ ├── mapper/
│ │ │ │ │ │ ├── ${entityName}Mapper.javai
│ │ │ │ │ │ ├── [1-n]Mapper.javai
│ │ │ │ │ │ └── xml/
│ │ │ │ │ │ ├── ${entityName}Mapper.xml
│ │ │ │ │ │ └── [1-n]Mapper.xml
│ │ │ │ │ ├── service/
│ │ │ │ │ │ ├── I${entityName}Service.javai
│ │ │ │ │ │ ├── [1-n]Service.javai
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── ${entityName}ServiceImpl.javai
│ │ │ │ │ │ └── [1-n]ServiceImpl.javai
│ │ │ │ │ ├── vo/
│ │ │ │ │ │ └── ${entityName}Page.javai
│ │ │ │ │ ├── vue/
│ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ │ └── modules/
│ │ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ │ └── [1-n]Form.vuei
│ │ │ │ │ ├── vue3/
│ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ │ └── components/
│ │ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ │ └── [1-n]Form.vuei
│ │ │ │ │ └── vue3Native/
│ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ └── components/
│ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ └── [1-n]Form.vuei
│ │ │ │ └── tab/
│ │ │ │ └── onetomany/
│ │ │ │ └── java/
│ │ │ │ └── ${bussiPackage}/
│ │ │ │ └── ${entityPackage}/
│ │ │ │ ├── controller/
│ │ │ │ │ └── ${entityName}Controller.javai
│ │ │ │ ├── entity/
│ │ │ │ │ ├── ${entityName}.javai
│ │ │ │ │ └── [1-n]Entity.javai
│ │ │ │ ├── mapper/
│ │ │ │ │ ├── ${entityName}Mapper.javai
│ │ │ │ │ ├── [1-n]Mapper.javai
│ │ │ │ │ └── xml/
│ │ │ │ │ ├── ${entityName}Mapper.xml
│ │ │ │ │ └── [1-n]Mapper.xml
│ │ │ │ ├── service/
│ │ │ │ │ ├── I${entityName}Service.javai
│ │ │ │ │ ├── [1-n]Service.javai
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── ${entityName}ServiceImpl.javai
│ │ │ │ │ └── [1-n]ServiceImpl.javai
│ │ │ │ ├── vo/
│ │ │ │ │ └── ${entityName}Page.javai
│ │ │ │ ├── vue/
│ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ └── modules/
│ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ └── [1-n]Form.vuei
│ │ │ │ └── vue3/
│ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ └── components/
│ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ └── [1-n]Form.vuei
│ │ │ ├── static/
│ │ │ │ ├── demo1.html
│ │ │ │ ├── generic/
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── build/
│ │ │ │ │ │ ├── pdf.js
│ │ │ │ │ │ └── pdf.worker.js
│ │ │ │ │ └── web/
│ │ │ │ │ ├── cmaps/
│ │ │ │ │ │ ├── 78-EUC-H.bcmap
│ │ │ │ │ │ ├── 78-EUC-V.bcmap
│ │ │ │ │ │ ├── 78-H.bcmap
│ │ │ │ │ │ ├── 78-RKSJ-H.bcmap
│ │ │ │ │ │ ├── 78-RKSJ-V.bcmap
│ │ │ │ │ │ ├── 78-V.bcmap
│ │ │ │ │ │ ├── 78ms-RKSJ-H.bcmap
│ │ │ │ │ │ ├── 78ms-RKSJ-V.bcmap
│ │ │ │ │ │ ├── 83pv-RKSJ-H.bcmap
│ │ │ │ │ │ ├── 90ms-RKSJ-H.bcmap
│ │ │ │ │ │ ├── 90ms-RKSJ-V.bcmap
│ │ │ │ │ │ ├── 90msp-RKSJ-H.bcmap
│ │ │ │ │ │ ├── 90msp-RKSJ-V.bcmap
│ │ │ │ │ │ ├── 90pv-RKSJ-H.bcmap
│ │ │ │ │ │ ├── 90pv-RKSJ-V.bcmap
│ │ │ │ │ │ ├── Add-H.bcmap
│ │ │ │ │ │ ├── Add-RKSJ-H.bcmap
│ │ │ │ │ │ ├── Add-RKSJ-V.bcmap
│ │ │ │ │ │ ├── Add-V.bcmap
│ │ │ │ │ │ ├── Adobe-CNS1-0.bcmap
│ │ │ │ │ │ ├── Adobe-CNS1-1.bcmap
│ │ │ │ │ │ ├── Adobe-CNS1-2.bcmap
│ │ │ │ │ │ ├── Adobe-CNS1-3.bcmap
│ │ │ │ │ │ ├── Adobe-CNS1-4.bcmap
│ │ │ │ │ │ ├── Adobe-CNS1-5.bcmap
│ │ │ │ │ │ ├── Adobe-CNS1-6.bcmap
│ │ │ │ │ │ ├── Adobe-CNS1-UCS2.bcmap
│ │ │ │ │ │ ├── Adobe-GB1-0.bcmap
│ │ │ │ │ │ ├── Adobe-GB1-1.bcmap
│ │ │ │ │ │ ├── Adobe-GB1-2.bcmap
│ │ │ │ │ │ ├── Adobe-GB1-3.bcmap
│ │ │ │ │ │ ├── Adobe-GB1-4.bcmap
│ │ │ │ │ │ ├── Adobe-GB1-5.bcmap
│ │ │ │ │ │ ├── Adobe-GB1-UCS2.bcmap
│ │ │ │ │ │ ├── Adobe-Japan1-0.bcmap
│ │ │ │ │ │ ├── Adobe-Japan1-1.bcmap
│ │ │ │ │ │ ├── Adobe-Japan1-2.bcmap
│ │ │ │ │ │ ├── Adobe-Japan1-3.bcmap
│ │ │ │ │ │ ├── Adobe-Japan1-4.bcmap
│ │ │ │ │ │ ├── Adobe-Japan1-5.bcmap
│ │ │ │ │ │ ├── Adobe-Japan1-6.bcmap
│ │ │ │ │ │ ├── Adobe-Japan1-UCS2.bcmap
│ │ │ │ │ │ ├── Adobe-Korea1-0.bcmap
│ │ │ │ │ │ ├── Adobe-Korea1-1.bcmap
│ │ │ │ │ │ ├── Adobe-Korea1-2.bcmap
│ │ │ │ │ │ ├── Adobe-Korea1-UCS2.bcmap
│ │ │ │ │ │ ├── B5-H.bcmap
│ │ │ │ │ │ ├── B5-V.bcmap
│ │ │ │ │ │ ├── B5pc-H.bcmap
│ │ │ │ │ │ ├── B5pc-V.bcmap
│ │ │ │ │ │ ├── CNS-EUC-H.bcmap
│ │ │ │ │ │ ├── CNS-EUC-V.bcmap
│ │ │ │ │ │ ├── CNS1-H.bcmap
│ │ │ │ │ │ ├── CNS1-V.bcmap
│ │ │ │ │ │ ├── CNS2-H.bcmap
│ │ │ │ │ │ ├── CNS2-V.bcmap
│ │ │ │ │ │ ├── ETHK-B5-H.bcmap
│ │ │ │ │ │ ├── ETHK-B5-V.bcmap
│ │ │ │ │ │ ├── ETen-B5-H.bcmap
│ │ │ │ │ │ ├── ETen-B5-V.bcmap
│ │ │ │ │ │ ├── ETenms-B5-H.bcmap
│ │ │ │ │ │ ├── ETenms-B5-V.bcmap
│ │ │ │ │ │ ├── EUC-H.bcmap
│ │ │ │ │ │ ├── EUC-V.bcmap
│ │ │ │ │ │ ├── Ext-H.bcmap
│ │ │ │ │ │ ├── Ext-RKSJ-H.bcmap
│ │ │ │ │ │ ├── Ext-RKSJ-V.bcmap
│ │ │ │ │ │ ├── Ext-V.bcmap
│ │ │ │ │ │ ├── GB-EUC-H.bcmap
│ │ │ │ │ │ ├── GB-EUC-V.bcmap
│ │ │ │ │ │ ├── GB-H.bcmap
│ │ │ │ │ │ ├── GB-V.bcmap
│ │ │ │ │ │ ├── GBK-EUC-H.bcmap
│ │ │ │ │ │ ├── GBK-EUC-V.bcmap
│ │ │ │ │ │ ├── GBK2K-H.bcmap
│ │ │ │ │ │ ├── GBK2K-V.bcmap
│ │ │ │ │ │ ├── GBKp-EUC-H.bcmap
│ │ │ │ │ │ ├── GBKp-EUC-V.bcmap
│ │ │ │ │ │ ├── GBT-EUC-H.bcmap
│ │ │ │ │ │ ├── GBT-EUC-V.bcmap
│ │ │ │ │ │ ├── GBT-H.bcmap
│ │ │ │ │ │ ├── GBT-V.bcmap
│ │ │ │ │ │ ├── GBTpc-EUC-H.bcmap
│ │ │ │ │ │ ├── GBTpc-EUC-V.bcmap
│ │ │ │ │ │ ├── GBpc-EUC-H.bcmap
│ │ │ │ │ │ ├── GBpc-EUC-V.bcmap
│ │ │ │ │ │ ├── H.bcmap
│ │ │ │ │ │ ├── HKdla-B5-H.bcmap
│ │ │ │ │ │ ├── HKdla-B5-V.bcmap
│ │ │ │ │ │ ├── HKdlb-B5-H.bcmap
│ │ │ │ │ │ ├── HKdlb-B5-V.bcmap
│ │ │ │ │ │ ├── HKgccs-B5-H.bcmap
│ │ │ │ │ │ ├── HKgccs-B5-V.bcmap
│ │ │ │ │ │ ├── HKm314-B5-H.bcmap
│ │ │ │ │ │ ├── HKm314-B5-V.bcmap
│ │ │ │ │ │ ├── HKm471-B5-H.bcmap
│ │ │ │ │ │ ├── HKm471-B5-V.bcmap
│ │ │ │ │ │ ├── HKscs-B5-H.bcmap
│ │ │ │ │ │ ├── HKscs-B5-V.bcmap
│ │ │ │ │ │ ├── Hankaku.bcmap
│ │ │ │ │ │ ├── Hiragana.bcmap
│ │ │ │ │ │ ├── KSC-EUC-H.bcmap
│ │ │ │ │ │ ├── KSC-EUC-V.bcmap
│ │ │ │ │ │ ├── KSC-H.bcmap
│ │ │ │ │ │ ├── KSC-Johab-H.bcmap
│ │ │ │ │ │ ├── KSC-Johab-V.bcmap
│ │ │ │ │ │ ├── KSC-V.bcmap
│ │ │ │ │ │ ├── KSCms-UHC-H.bcmap
│ │ │ │ │ │ ├── KSCms-UHC-HW-H.bcmap
│ │ │ │ │ │ ├── KSCms-UHC-HW-V.bcmap
│ │ │ │ │ │ ├── KSCms-UHC-V.bcmap
│ │ │ │ │ │ ├── KSCpc-EUC-H.bcmap
│ │ │ │ │ │ ├── KSCpc-EUC-V.bcmap
│ │ │ │ │ │ ├── Katakana.bcmap
│ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ ├── NWP-H.bcmap
│ │ │ │ │ │ ├── NWP-V.bcmap
│ │ │ │ │ │ ├── RKSJ-H.bcmap
│ │ │ │ │ │ ├── RKSJ-V.bcmap
│ │ │ │ │ │ ├── Roman.bcmap
│ │ │ │ │ │ ├── UniCNS-UCS2-H.bcmap
│ │ │ │ │ │ ├── UniCNS-UCS2-V.bcmap
│ │ │ │ │ │ ├── UniCNS-UTF16-H.bcmap
│ │ │ │ │ │ ├── UniCNS-UTF16-V.bcmap
│ │ │ │ │ │ ├── UniCNS-UTF32-H.bcmap
│ │ │ │ │ │ ├── UniCNS-UTF32-V.bcmap
│ │ │ │ │ │ ├── UniCNS-UTF8-H.bcmap
│ │ │ │ │ │ ├── UniCNS-UTF8-V.bcmap
│ │ │ │ │ │ ├── UniGB-UCS2-H.bcmap
│ │ │ │ │ │ ├── UniGB-UCS2-V.bcmap
│ │ │ │ │ │ ├── UniGB-UTF16-H.bcmap
│ │ │ │ │ │ ├── UniGB-UTF16-V.bcmap
│ │ │ │ │ │ ├── UniGB-UTF32-H.bcmap
│ │ │ │ │ │ ├── UniGB-UTF32-V.bcmap
│ │ │ │ │ │ ├── UniGB-UTF8-H.bcmap
│ │ │ │ │ │ ├── UniGB-UTF8-V.bcmap
│ │ │ │ │ │ ├── UniJIS-UCS2-H.bcmap
│ │ │ │ │ │ ├── UniJIS-UCS2-HW-H.bcmap
│ │ │ │ │ │ ├── UniJIS-UCS2-HW-V.bcmap
│ │ │ │ │ │ ├── UniJIS-UCS2-V.bcmap
│ │ │ │ │ │ ├── UniJIS-UTF16-H.bcmap
│ │ │ │ │ │ ├── UniJIS-UTF16-V.bcmap
│ │ │ │ │ │ ├── UniJIS-UTF32-H.bcmap
│ │ │ │ │ │ ├── UniJIS-UTF32-V.bcmap
│ │ │ │ │ │ ├── UniJIS-UTF8-H.bcmap
│ │ │ │ │ │ ├── UniJIS-UTF8-V.bcmap
│ │ │ │ │ │ ├── UniJIS2004-UTF16-H.bcmap
│ │ │ │ │ │ ├── UniJIS2004-UTF16-V.bcmap
│ │ │ │ │ │ ├── UniJIS2004-UTF32-H.bcmap
│ │ │ │ │ │ ├── UniJIS2004-UTF32-V.bcmap
│ │ │ │ │ │ ├── UniJIS2004-UTF8-H.bcmap
│ │ │ │ │ │ ├── UniJIS2004-UTF8-V.bcmap
│ │ │ │ │ │ ├── UniJISPro-UCS2-HW-V.bcmap
│ │ │ │ │ │ ├── UniJISPro-UCS2-V.bcmap
│ │ │ │ │ │ ├── UniJISPro-UTF8-V.bcmap
│ │ │ │ │ │ ├── UniJISX0213-UTF32-H.bcmap
│ │ │ │ │ │ ├── UniJISX0213-UTF32-V.bcmap
│ │ │ │ │ │ ├── UniJISX02132004-UTF32-H.bcmap
│ │ │ │ │ │ ├── UniJISX02132004-UTF32-V.bcmap
│ │ │ │ │ │ ├── UniKS-UCS2-H.bcmap
│ │ │ │ │ │ ├── UniKS-UCS2-V.bcmap
│ │ │ │ │ │ ├── UniKS-UTF16-H.bcmap
│ │ │ │ │ │ ├── UniKS-UTF16-V.bcmap
│ │ │ │ │ │ ├── UniKS-UTF32-H.bcmap
│ │ │ │ │ │ ├── UniKS-UTF32-V.bcmap
│ │ │ │ │ │ ├── UniKS-UTF8-H.bcmap
│ │ │ │ │ │ ├── UniKS-UTF8-V.bcmap
│ │ │ │ │ │ ├── V.bcmap
│ │ │ │ │ │ └── WP-Symbol.bcmap
│ │ │ │ │ ├── compatibility.js
│ │ │ │ │ ├── debugger.js
│ │ │ │ │ ├── images/
│ │ │ │ │ │ ├── grab.cur
│ │ │ │ │ │ └── grabbing.cur
│ │ │ │ │ ├── l10n.js
│ │ │ │ │ ├── locale/
│ │ │ │ │ │ ├── locale.properties
│ │ │ │ │ │ └── zh-CN/
│ │ │ │ │ │ └── viewer.properties
│ │ │ │ │ ├── viewer.css
│ │ │ │ │ ├── viewer.html
│ │ │ │ │ └── viewer.js
│ │ │ │ └── view/
│ │ │ │ └── userlist.html
│ │ │ └── templates/
│ │ │ ├── announcement/
│ │ │ │ └── showContent.ftl
│ │ │ ├── demo3.ftl
│ │ │ ├── pdfPreviewIframe.ftl
│ │ │ └── thirdLogin.ftl
│ │ ├── jeecg-system-start/
│ │ │ ├── Dockerfile
│ │ │ ├── README.md
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── jeecg/
│ │ │ │ │ ├── JeecgSystemApplication.java
│ │ │ │ │ ├── codegenerate/
│ │ │ │ │ │ ├── JeecgOneGUI.java
│ │ │ │ │ │ └── JeecgOneToMainUtil.java
│ │ │ │ │ └── config/
│ │ │ │ │ └── flyway/
│ │ │ │ │ └── FlywayConfig.java
│ │ │ │ └── resources/
│ │ │ │ ├── application-dev.yml
│ │ │ │ ├── application-dm8.yml
│ │ │ │ ├── application-docker.yml
│ │ │ │ ├── application-kingbase8.yml
│ │ │ │ ├── application-oracle.yml
│ │ │ │ ├── application-postgresql.yml
│ │ │ │ ├── application-prod.yml
│ │ │ │ ├── application-sqlserver.yml
│ │ │ │ ├── application-test.yml
│ │ │ │ ├── application.yml
│ │ │ │ ├── banner.txt
│ │ │ │ ├── flyway/
│ │ │ │ │ └── sql/
│ │ │ │ │ └── mysql/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── V3.8.0_0__clear_flyway_sql.md
│ │ │ │ │ ├── V3.8.0_1__airag_add_menu.sql
│ │ │ │ │ ├── V3.8.0_2__airag_init_db.sql
│ │ │ │ │ ├── V3.8.1_1__all_upgrade.sql
│ │ │ │ │ ├── V3.8.1_2__openapi.sql
│ │ │ │ │ ├── V3.8.2_1__all_upgrade.sql
│ │ │ │ │ ├── V3.8.3_0__all_upgrade.sql
│ │ │ │ │ ├── V3.8.3_1__upgrade_jimubi.sql
│ │ │ │ │ ├── V3.9.0_0__all_upgrade.sql
│ │ │ │ │ ├── V3.9.0_1__mcp_demo.sql
│ │ │ │ │ ├── V3.9.0_2__upd_dep_category.sql
│ │ │ │ │ ├── V3.9.0_3__add_aiflow_permission.sql
│ │ │ │ │ ├── V3.9.0_4__add_onlineuser_perms.sql
│ │ │ │ │ ├── V3.9.1_0__all_upgrade.sql
│ │ │ │ │ └── V3.9.1_1__add_aiapp_img_gen.sql
│ │ │ │ ├── jeecg/
│ │ │ │ │ ├── jeecg_config.properties
│ │ │ │ │ └── jeecg_database.properties
│ │ │ │ └── logback-spring.xml
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── org/
│ │ │ └── jeecg/
│ │ │ ├── TestMain.java
│ │ │ ├── modules/
│ │ │ │ ├── message/
│ │ │ │ │ └── test/
│ │ │ │ │ └── SendMessageTest.java
│ │ │ │ ├── openapi/
│ │ │ │ │ └── test/
│ │ │ │ │ └── SampleOpenApiTest.java
│ │ │ │ └── system/
│ │ │ │ └── test/
│ │ │ │ ├── MockControllerTest.java
│ │ │ │ ├── SampleTest.java
│ │ │ │ ├── SysTableWhiteCheckTest.java
│ │ │ │ └── SysUserApiTest.java
│ │ │ └── smallTools/
│ │ │ ├── TestSqlHandle.java
│ │ │ └── TestStr.java
│ │ └── pom.xml
│ ├── jeecg-server-cloud/
│ │ ├── docker-compose.yml
│ │ ├── jeecg-cloud-gateway/
│ │ │ ├── Dockerfile
│ │ │ ├── README.md
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── jeecg/
│ │ │ │ │ ├── JeecgGatewayApplication.java
│ │ │ │ │ ├── config/
│ │ │ │ │ │ ├── GatewayRoutersConfig.java
│ │ │ │ │ │ ├── RateLimiterConfiguration.java
│ │ │ │ │ │ └── RouterDataType.java
│ │ │ │ │ ├── fallback/
│ │ │ │ │ │ ├── FallbackController.java
│ │ │ │ │ │ ├── HystrixFallbackHandler.java
│ │ │ │ │ │ └── sentinel/
│ │ │ │ │ │ ├── GatewaySentinelExceptionConfig.java
│ │ │ │ │ │ └── SentinelBlockRequestHandler.java
│ │ │ │ │ ├── filter/
│ │ │ │ │ │ ├── GlobalAccessTokenFilter.java
│ │ │ │ │ │ └── SentinelFilterContextConfig.java
│ │ │ │ │ ├── handler/
│ │ │ │ │ │ ├── LoderRouderHandler.java
│ │ │ │ │ │ └── swagger/
│ │ │ │ │ │ ├── MySwaggerResourceProvider.java
│ │ │ │ │ │ └── SwaggerResourceController.java
│ │ │ │ │ └── loader/
│ │ │ │ │ ├── DynamicRouteLoader.java
│ │ │ │ │ ├── repository/
│ │ │ │ │ │ ├── DynamicRouteService.java
│ │ │ │ │ │ └── MyInMemoryRouteDefinitionRepository.java
│ │ │ │ │ └── vo/
│ │ │ │ │ ├── GatewayRouteVo.java
│ │ │ │ │ ├── MyRouteDefinition.java
│ │ │ │ │ └── PredicatesVo.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.yml
│ │ │ │ └── logback-spring.xml
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── TestRoutes.java
│ │ ├── jeecg-cloud-nacos/
│ │ │ ├── Dockerfile
│ │ │ ├── README.md
│ │ │ ├── docs/
│ │ │ │ ├── config/
│ │ │ │ │ ├── jeecg-dev.yaml
│ │ │ │ │ ├── jeecg-gateway-dev.yaml
│ │ │ │ │ ├── jeecg-gateway-router.json
│ │ │ │ │ └── jeecg.yaml
│ │ │ │ └── db/
│ │ │ │ └── nacos_dm.sql
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── alibaba/
│ │ │ │ └── nacos/
│ │ │ │ └── JeecgNacosApplication.java
│ │ │ └── resources/
│ │ │ ├── application-dm.yml
│ │ │ ├── application-mysql.yml
│ │ │ └── application.yml
│ │ ├── jeecg-demo-cloud-start/
│ │ │ ├── Dockerfile
│ │ │ ├── README.md
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── jeecg/
│ │ │ │ └── JeecgDemoCloudApplication.java
│ │ │ └── resources/
│ │ │ ├── application.yml
│ │ │ └── logback-spring.xml
│ │ ├── jeecg-system-cloud-start/
│ │ │ ├── Dockerfile
│ │ │ ├── README.md
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── jeecg/
│ │ │ │ └── JeecgSystemCloudApplication.java
│ │ │ └── resources/
│ │ │ ├── application.yml
│ │ │ ├── jeecg/
│ │ │ │ ├── jeecg_config.properties
│ │ │ │ └── jeecg_database.properties
│ │ │ └── logback-spring.xml
│ │ ├── jeecg-visual/
│ │ │ ├── jeecg-cloud-monitor/
│ │ │ │ ├── README.md
│ │ │ │ ├── pom.xml
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── jeecg/
│ │ │ │ │ └── monitor/
│ │ │ │ │ ├── JeecgMonitorApplication.java
│ │ │ │ │ └── config/
│ │ │ │ │ └── SecuritySecureConfig.java
│ │ │ │ └── resources/
│ │ │ │ └── application.yml
│ │ │ ├── jeecg-cloud-sentinel/
│ │ │ │ ├── Dockerfile
│ │ │ │ ├── README.md
│ │ │ │ ├── pom.xml
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── alibaba/
│ │ │ │ │ └── csp/
│ │ │ │ │ └── sentinel/
│ │ │ │ │ └── dashboard/
│ │ │ │ │ ├── JeecgSentinelApplication.java
│ │ │ │ │ ├── constants/
│ │ │ │ │ │ └── SentinelConStants.java
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ ├── AuthorityRuleController.java
│ │ │ │ │ │ ├── DegradeController.java
│ │ │ │ │ │ ├── ParamFlowRuleController.java
│ │ │ │ │ │ ├── SystemController.java
│ │ │ │ │ │ ├── base/
│ │ │ │ │ │ │ └── BaseRuleController.java
│ │ │ │ │ │ ├── gateway/
│ │ │ │ │ │ │ ├── GatewayApiController.java
│ │ │ │ │ │ │ └── GatewayFlowRuleController.java
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ └── FlowControllerV2.java
│ │ │ │ │ └── rule/
│ │ │ │ │ └── nacos/
│ │ │ │ │ ├── NacosConfigProperties.java
│ │ │ │ │ ├── SentinelConfig.java
│ │ │ │ │ ├── authority/
│ │ │ │ │ │ ├── AuthorityRuleNacosProvider.java
│ │ │ │ │ │ └── AuthorityRuleNacosPublisher.java
│ │ │ │ │ ├── degrade/
│ │ │ │ │ │ ├── DegradeRuleNacosProvider.java
│ │ │ │ │ │ └── DegradeRuleNacosPublisher.java
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ ├── AuthorityRuleCorrectEntity.java
│ │ │ │ │ │ └── ParamFlowRuleCorrectEntity.java
│ │ │ │ │ ├── flow/
│ │ │ │ │ │ ├── FlowRuleNacosProvider.java
│ │ │ │ │ │ └── FlowRuleNacosPublisher.java
│ │ │ │ │ ├── gateway/
│ │ │ │ │ │ ├── GateWayApiNacosProvider.java
│ │ │ │ │ │ ├── GateWayApiNacosPublisher.java
│ │ │ │ │ │ ├── GateWayFlowRulesNacosProvider.java
│ │ │ │ │ │ └── GateWayFlowRulesNacosPublisher.java
│ │ │ │ │ ├── paramflow/
│ │ │ │ │ │ ├── ParamFlowRuleNacosProvider.java
│ │ │ │ │ │ └── ParamFlowRuleNacosPublisher.java
│ │ │ │ │ └── system/
│ │ │ │ │ ├── SystemRuleNacosProvider.java
│ │ │ │ │ └── SystemRuleNacosPublisher.java
│ │ │ │ └── resources/
│ │ │ │ └── application.yml
│ │ │ ├── jeecg-cloud-test/
│ │ │ │ ├── jeecg-cloud-test-more/
│ │ │ │ │ ├── pom.xml
│ │ │ │ │ └── src/
│ │ │ │ │ └── main/
│ │ │ │ │ └── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── jeecg/
│ │ │ │ │ └── modules/
│ │ │ │ │ └── test/
│ │ │ │ │ ├── constant/
│ │ │ │ │ │ └── CloudConstant.java
│ │ │ │ │ ├── feign/
│ │ │ │ │ │ ├── client/
│ │ │ │ │ │ │ ├── JeecgTestClient.java
│ │ │ │ │ │ │ └── JeecgTestClientDyn.java
│ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ └── JeecgTestFeignController.java
│ │ │ │ │ │ ├── factory/
│ │ │ │ │ │ │ └── JeecgTestClientFactory.java
│ │ │ │ │ │ └── fallback/
│ │ │ │ │ │ └── JeecgTestFallback.java
│ │ │ │ │ ├── lock/
│ │ │ │ │ │ └── DemoLockTest.java
│ │ │ │ │ └── xxljob/
│ │ │ │ │ ├── DemoJobHandler.java
│ │ │ │ │ └── XxclJobTest.java
│ │ │ │ ├── jeecg-cloud-test-rabbitmq/
│ │ │ │ │ ├── pom.xml
│ │ │ │ │ └── src/
│ │ │ │ │ └── main/
│ │ │ │ │ └── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── jeecg/
│ │ │ │ │ └── modules/
│ │ │ │ │ └── test/
│ │ │ │ │ └── rabbitmq/
│ │ │ │ │ ├── constant/
│ │ │ │ │ │ └── CloudConstant.java
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── JeecgMqTestController.java
│ │ │ │ │ ├── event/
│ │ │ │ │ │ └── DemoBusEvent.java
│ │ │ │ │ └── listener/
│ │ │ │ │ ├── HelloReceiver1.java
│ │ │ │ │ ├── HelloReceiver2.java
│ │ │ │ │ ├── HelloReceiver3.java
│ │ │ │ │ └── HelloTimeReceiver.java
│ │ │ │ ├── jeecg-cloud-test-rocketmq/
│ │ │ │ │ ├── pom.xml
│ │ │ │ │ └── src/
│ │ │ │ │ └── main/
│ │ │ │ │ └── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── jeecg/
│ │ │ │ │ └── modules/
│ │ │ │ │ └── test/
│ │ │ │ │ └── rocketmq/
│ │ │ │ │ ├── constant/
│ │ │ │ │ │ └── CloudConstant.java
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── JeecgMqTestController.java
│ │ │ │ │ ├── event/
│ │ │ │ │ │ └── DemoBusEvent.java
│ │ │ │ │ └── listener/
│ │ │ │ │ ├── HelloReceiver1.java
│ │ │ │ │ ├── HelloReceiver2.java
│ │ │ │ │ ├── HelloReceiver3.java
│ │ │ │ │ └── HelloTimeReceiver.java
│ │ │ │ ├── jeecg-cloud-test-seata/
│ │ │ │ │ ├── db/
│ │ │ │ │ │ └── seata.sql
│ │ │ │ │ ├── jeecg-cloud-test-seata-account/
│ │ │ │ │ │ ├── pom.xml
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ └── main/
│ │ │ │ │ │ ├── java/
│ │ │ │ │ │ │ └── org/
│ │ │ │ │ │ │ └── jeecg/
│ │ │ │ │ │ │ ├── SeataAccountApplication.java
│ │ │ │ │ │ │ └── modules/
│ │ │ │ │ │ │ └── test/
│ │ │ │ │ │ │ └── seata/
│ │ │ │ │ │ │ └── account/
│ │ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ │ └── SeataAccountController.java
│ │ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ │ └── SeataAccount.java
│ │ │ │ │ │ │ ├── mapper/
│ │ │ │ │ │ │ │ └── SeataAccountMapper.java
│ │ │ │ │ │ │ └── service/
│ │ │ │ │ │ │ ├── SeataAccountService.java
│ │ │ │ │ │ │ └── impl/
│ │ │ │ │ │ │ └── SeataAccountServiceImpl.java
│ │ │ │ │ │ └── resources/
│ │ │ │ │ │ ├── application.yml
│ │ │ │ │ │ └── sql/
│ │ │ │ │ │ └── schema-account.sql
│ │ │ │ │ ├── jeecg-cloud-test-seata-order/
│ │ │ │ │ │ ├── pom.xml
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ └── main/
│ │ │ │ │ │ ├── java/
│ │ │ │ │ │ │ └── org/
│ │ │ │ │ │ │ └── jeecg/
│ │ │ │ │ │ │ ├── SeataOrderApplication.java
│ │ │ │ │ │ │ └── modules/
│ │ │ │ │ │ │ └── test/
│ │ │ │ │ │ │ └── seata/
│ │ │ │ │ │ │ └── order/
│ │ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ │ └── SeataOrderController.java
│ │ │ │ │ │ │ ├── dto/
│ │ │ │ │ │ │ │ ├── PlaceOrderRequest.java
│ │ │ │ │ │ │ │ ├── ReduceBalanceRequest.java
│ │ │ │ │ │ │ │ └── ReduceStockRequest.java
│ │ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ │ └── SeataOrder.java
│ │ │ │ │ │ │ ├── enums/
│ │ │ │ │ │ │ │ └── OrderStatus.java
│ │ │ │ │ │ │ ├── feign/
│ │ │ │ │ │ │ │ ├── AccountClient.java
│ │ │ │ │ │ │ │ └── ProductClient.java
│ │ │ │ │ │ │ ├── mapper/
│ │ │ │ │ │ │ │ └── SeataOrderMapper.java
│ │ │ │ │ │ │ └── service/
│ │ │ │ │ │ │ ├── SeataOrderService.java
│ │ │ │ │ │ │ └── impl/
│ │ │ │ │ │ │ └── SeataOrderServiceImpl.java
│ │ │ │ │ │ └── resources/
│ │ │ │ │ │ ├── application.yml
│ │ │ │ │ │ └── sql/
│ │ │ │ │ │ └── schema-order.sql
│ │ │ │ │ ├── jeecg-cloud-test-seata-product/
│ │ │ │ │ │ ├── pom.xml
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ └── main/
│ │ │ │ │ │ ├── java/
│ │ │ │ │ │ │ └── org/
│ │ │ │ │ │ │ └── jeecg/
│ │ │ │ │ │ │ ├── SeataProductApplication.java
│ │ │ │ │ │ │ └── modules/
│ │ │ │ │ │ │ └── test/
│ │ │ │ │ │ │ └── seata/
│ │ │ │ │ │ │ └── product/
│ │ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ │ └── SeataProductController.java
│ │ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ │ └── SeataProduct.java
│ │ │ │ │ │ │ ├── mapper/
│ │ │ │ │ │ │ │ └── SeataProductMapper.java
│ │ │ │ │ │ │ └── service/
│ │ │ │ │ │ │ ├── SeataProductService.java
│ │ │ │ │ │ │ └── impl/
│ │ │ │ │ │ │ └── SeataProductServiceImpl.java
│ │ │ │ │ │ └── resources/
│ │ │ │ │ │ ├── application.yml
│ │ │ │ │ │ └── sql/
│ │ │ │ │ │ └── schema-product.sql
│ │ │ │ │ └── pom.xml
│ │ │ │ ├── jeecg-cloud-test-shardingsphere/
│ │ │ │ │ ├── README-ShardingSphere配置说明.md
│ │ │ │ │ ├── doc/
│ │ │ │ │ │ └── db.sql
│ │ │ │ │ ├── pom.xml
│ │ │ │ │ └── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── jeecg/
│ │ │ │ │ │ └── modules/
│ │ │ │ │ │ └── test/
│ │ │ │ │ │ └── sharding/
│ │ │ │ │ │ ├── algorithm/
│ │ │ │ │ │ │ └── StandardModTableShardAlgorithm.java
│ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ └── JeecgShardingDemoController.java
│ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ └── ShardingSysLog.java
│ │ │ │ │ │ ├── mapper/
│ │ │ │ │ │ │ ├── ShardingSysLogMapper.java
│ │ │ │ │ │ │ └── xml/
│ │ │ │ │ │ │ └── ShardingSysLogMapper.xml
│ │ │ │ │ │ └── service/
│ │ │ │ │ │ ├── IShardingSysLogService.java
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ └── ShardingSysLogServiceImpl.java
│ │ │ │ │ └── resources/
│ │ │ │ │ ├── sharding-multi.yaml
│ │ │ │ │ └── sharding.yaml
│ │ │ │ └── pom.xml
│ │ │ ├── jeecg-cloud-xxljob/
│ │ │ │ ├── Dockerfile
│ │ │ │ ├── README.md
│ │ │ │ ├── doc/
│ │ │ │ │ └── db/
│ │ │ │ │ └── tables_xxl_job.sql
│ │ │ │ ├── pom.xml
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── xxl/
│ │ │ │ │ └── job/
│ │ │ │ │ └── admin/
│ │ │ │ │ ├── XxlJobAdminApplication.java
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ ├── IndexController.java
│ │ │ │ │ │ ├── JobApiController.java
│ │ │ │ │ │ ├── JobCodeController.java
│ │ │ │ │ │ ├── JobGroupController.java
│ │ │ │ │ │ ├── JobInfoController.java
│ │ │ │ │ │ ├── JobLogController.java
│ │ │ │ │ │ ├── UserController.java
│ │ │ │ │ │ ├── annotation/
│ │ │ │ │ │ │ └── PermissionLimit.java
│ │ │ │ │ │ ├── interceptor/
│ │ │ │ │ │ │ ├── CookieInterceptor.java
│ │ │ │ │ │ │ ├── PermissionInterceptor.java
│ │ │ │ │ │ │ └── WebMvcConfig.java
│ │ │ │ │ │ └── resolver/
│ │ │ │ │ │ └── WebExceptionResolver.java
│ │ │ │ │ ├── core/
│ │ │ │ │ │ ├── alarm/
│ │ │ │ │ │ │ ├── JobAlarm.java
│ │ │ │ │ │ │ ├── JobAlarmer.java
│ │ │ │ │ │ │ └── impl/
│ │ │ │ │ │ │ └── EmailJobAlarm.java
│ │ │ │ │ │ ├── complete/
│ │ │ │ │ │ │ └── XxlJobCompleter.java
│ │ │ │ │ │ ├── conf/
│ │ │ │ │ │ │ └── XxlJobAdminConfig.java
│ │ │ │ │ │ ├── cron/
│ │ │ │ │ │ │ └── CronExpression.java
│ │ │ │ │ │ ├── exception/
│ │ │ │ │ │ │ └── XxlJobException.java
│ │ │ │ │ │ ├── model/
│ │ │ │ │ │ │ ├── XxlJobGroup.java
│ │ │ │ │ │ │ ├── XxlJobInfo.java
│ │ │ │ │ │ │ ├── XxlJobLog.java
│ │ │ │ │ │ │ ├── XxlJobLogGlue.java
│ │ │ │ │ │ │ ├── XxlJobLogReport.java
│ │ │ │ │ │ │ ├── XxlJobRegistry.java
│ │ │ │ │ │ │ └── XxlJobUser.java
│ │ │ │ │ │ ├── route/
│ │ │ │ │ │ │ ├── ExecutorRouteStrategyEnum.java
│ │ │ │ │ │ │ ├── ExecutorRouter.java
│ │ │ │ │ │ │ └── strategy/
│ │ │ │ │ │ │ ├── ExecutorRouteBusyover.java
│ │ │ │ │ │ │ ├── ExecutorRouteConsistentHash.java
│ │ │ │ │ │ │ ├── ExecutorRouteFailover.java
│ │ │ │ │ │ │ ├── ExecutorRouteFirst.java
│ │ │ │ │ │ │ ├── ExecutorRouteLFU.java
│ │ │ │ │ │ │ ├── ExecutorRouteLRU.java
│ │ │ │ │ │ │ ├── ExecutorRouteLast.java
│ │ │ │ │ │ │ ├── ExecutorRouteRandom.java
│ │ │ │ │ │ │ └── ExecutorRouteRound.java
│ │ │ │ │ │ ├── scheduler/
│ │ │ │ │ │ │ ├── MisfireStrategyEnum.java
│ │ │ │ │ │ │ ├── ScheduleTypeEnum.java
│ │ │ │ │ │ │ └── XxlJobScheduler.java
│ │ │ │ │ │ ├── thread/
│ │ │ │ │ │ │ ├── JobCompleteHelper.java
│ │ │ │ │ │ │ ├── JobFailMonitorHelper.java
│ │ │ │ │ │ │ ├── JobLogReportHelper.java
│ │ │ │ │ │ │ ├── JobRegistryHelper.java
│ │ │ │ │ │ │ ├── JobScheduleHelper.java
│ │ │ │ │ │ │ └── JobTriggerPoolHelper.java
│ │ │ │ │ │ ├── trigger/
│ │ │ │ │ │ │ ├── TriggerTypeEnum.java
│ │ │ │ │ │ │ └── XxlJobTrigger.java
│ │ │ │ │ │ └── util/
│ │ │ │ │ │ ├── CookieUtil.java
│ │ │ │ │ │ ├── FtlUtil.java
│ │ │ │ │ │ ├── I18nUtil.java
│ │ │ │ │ │ ├── JacksonUtil.java
│ │ │ │ │ │ └── LocalCacheUtil.java
│ │ │ │ │ ├── dao/
│ │ │ │ │ │ ├── XxlJobGroupDao.java
│ │ │ │ │ │ ├── XxlJobInfoDao.java
│ │ │ │ │ │ ├── XxlJobLogDao.java
│ │ │ │ │ │ ├── XxlJobLogGlueDao.java
│ │ │ │ │ │ ├── XxlJobLogReportDao.java
│ │ │ │ │ │ ├── XxlJobRegistryDao.java
│ │ │ │ │ │ └── XxlJobUserDao.java
│ │ │ │ │ └── service/
│ │ │ │ │ ├── LoginService.java
│ │ │ │ │ ├── XxlJobService.java
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── AdminBizImpl.java
│ │ │ │ │ └── XxlJobServiceImpl.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.yml
│ │ │ │ ├── i18n/
│ │ │ │ │ ├── message_en.properties
│ │ │ │ │ ├── message_zh_CN.properties
│ │ │ │ │ └── message_zh_TC.properties
│ │ │ │ ├── logback.xml
│ │ │ │ ├── mybatis-mapper/
│ │ │ │ │ ├── XxlJobGroupMapper.xml
│ │ │ │ │ ├── XxlJobInfoMapper.xml
│ │ │ │ │ ├── XxlJobLogGlueMapper.xml
│ │ │ │ │ ├── XxlJobLogMapper.xml
│ │ │ │ │ ├── XxlJobLogReportMapper.xml
│ │ │ │ │ ├── XxlJobRegistryMapper.xml
│ │ │ │ │ └── XxlJobUserMapper.xml
│ │ │ │ ├── static/
│ │ │ │ │ ├── adminlte/
│ │ │ │ │ │ ├── bower_components/
│ │ │ │ │ │ │ ├── PACE/
│ │ │ │ │ │ │ │ └── themes/
│ │ │ │ │ │ │ │ └── blue/
│ │ │ │ │ │ │ │ └── pace-theme-flash.css
│ │ │ │ │ │ │ ├── bootstrap-daterangepicker/
│ │ │ │ │ │ │ │ ├── daterangepicker.css
│ │ │ │ │ │ │ │ └── daterangepicker.js
│ │ │ │ │ │ │ ├── fastclick/
│ │ │ │ │ │ │ │ └── fastclick.js
│ │ │ │ │ │ │ └── font-awesome/
│ │ │ │ │ │ │ └── fonts/
│ │ │ │ │ │ │ └── FontAwesome.otf
│ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ └── iCheck/
│ │ │ │ │ │ └── square/
│ │ │ │ │ │ └── blue.css
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── common.1.js
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ ├── jobcode.index.1.js
│ │ │ │ │ │ ├── jobgroup.index.1.js
│ │ │ │ │ │ ├── jobinfo.index.1.js
│ │ │ │ │ │ ├── joblog.detail.1.js
│ │ │ │ │ │ ├── joblog.index.1.js
│ │ │ │ │ │ ├── login.1.js
│ │ │ │ │ │ └── user.index.1.js
│ │ │ │ │ └── plugins/
│ │ │ │ │ ├── codemirror/
│ │ │ │ │ │ ├── addon/
│ │ │ │ │ │ │ └── hint/
│ │ │ │ │ │ │ ├── anyword-hint.js
│ │ │ │ │ │ │ ├── show-hint.css
│ │ │ │ │ │ │ └── show-hint.js
│ │ │ │ │ │ ├── lib/
│ │ │ │ │ │ │ ├── codemirror.css
│ │ │ │ │ │ │ └── codemirror.js
│ │ │ │ │ │ └── mode/
│ │ │ │ │ │ ├── clike/
│ │ │ │ │ │ │ └── clike.js
│ │ │ │ │ │ ├── javascript/
│ │ │ │ │ │ │ └── javascript.js
│ │ │ │ │ │ ├── php/
│ │ │ │ │ │ │ └── php.js
│ │ │ │ │ │ ├── powershell/
│ │ │ │ │ │ │ └── powershell.js
│ │ │ │ │ │ ├── python/
│ │ │ │ │ │ │ └── python.js
│ │ │ │ │ │ └── shell/
│ │ │ │ │ │ └── shell.js
│ │ │ │ │ ├── cronGen/
│ │ │ │ │ │ ├── cronGen.js
│ │ │ │ │ │ └── cronGen_en.js
│ │ │ │ │ ├── jquery/
│ │ │ │ │ │ └── jquery.cookie.js
│ │ │ │ │ └── layer/
│ │ │ │ │ ├── layer.js
│ │ │ │ │ └── theme/
│ │ │ │ │ └── default/
│ │ │ │ │ └── layer.css
│ │ │ │ └── templates/
│ │ │ │ ├── common/
│ │ │ │ │ ├── common.exception.ftl
│ │ │ │ │ └── common.macro.ftl
│ │ │ │ ├── help.ftl
│ │ │ │ ├── index.ftl
│ │ │ │ ├── jobcode/
│ │ │ │ │ └── jobcode.index.ftl
│ │ │ │ ├── jobgroup/
│ │ │ │ │ └── jobgroup.index.ftl
│ │ │ │ ├── jobinfo/
│ │ │ │ │ └── jobinfo.index.ftl
│ │ │ │ ├── joblog/
│ │ │ │ │ ├── joblog.detail.ftl
│ │ │ │ │ └── joblog.index.ftl
│ │ │ │ ├── login.ftl
│ │ │ │ └── user/
│ │ │ │ └── user.index.ftl
│ │ │ └── pom.xml
│ │ └── pom.xml
│ └── pom.xml
├── jeecgboot-vue3/
│ ├── .editorconfig
│ ├── .eslintignore
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── .gitpod.yml
│ ├── .npmrc
│ ├── .prettierignore
│ ├── .stylelintignore
│ ├── .yarnclean
│ ├── CLAUDE.md
│ ├── Dockerfile
│ ├── Dockerfile.cloud
│ ├── LICENSE
│ ├── PWA-README.md
│ ├── README.md
│ ├── build/
│ │ ├── config/
│ │ │ └── themeConfig.ts
│ │ ├── constant.ts
│ │ ├── generate/
│ │ │ ├── generateModifyVars.ts
│ │ │ └── icon/
│ │ │ └── index.ts
│ │ ├── getConfigFileName.ts
│ │ ├── script/
│ │ │ ├── buildConf.ts
│ │ │ ├── copyChat.ts
│ │ │ └── postBuild.ts
│ │ ├── utils.ts
│ │ └── vite/
│ │ ├── plugin/
│ │ │ ├── compress.ts
│ │ │ ├── electron.ts
│ │ │ ├── html.ts
│ │ │ ├── imagemin.ts
│ │ │ ├── index.ts
│ │ │ ├── mock.ts
│ │ │ ├── pwa.ts
│ │ │ ├── qiankunMicro.ts
│ │ │ ├── styleImport.ts
│ │ │ ├── svgSprite.ts
│ │ │ ├── theme.ts
│ │ │ └── visualizer.ts
│ │ └── proxy.ts
│ ├── commitlint.config.js
│ ├── electron/
│ │ ├── env.ts
│ │ ├── ipc/
│ │ │ └── index.ts
│ │ ├── main.ts
│ │ ├── paths.ts
│ │ ├── preload/
│ │ │ └── index.ts
│ │ ├── script/
│ │ │ ├── buildAfter.ts
│ │ │ └── buildBefore.ts
│ │ └── utils/
│ │ ├── index.ts
│ │ ├── tray.ts
│ │ └── window.ts
│ ├── electron-builder.yaml
│ ├── electron.md
│ ├── index.html
│ ├── jest.config.mjs
│ ├── mock/
│ │ ├── _createProductionServer.ts
│ │ ├── _util.ts
│ │ ├── demo/
│ │ │ ├── account.ts
│ │ │ ├── select-demo.ts
│ │ │ ├── system.ts
│ │ │ ├── table-demo.ts
│ │ │ └── tree-demo.ts
│ │ └── sys/
│ │ ├── menu.ts
│ │ └── user.ts
│ ├── npm
│ ├── package.json
│ ├── postcss.config.js
│ ├── prettier.config.js
│ ├── public/
│ │ └── resource/
│ │ ├── js/
│ │ │ └── iconfont.js
│ │ └── tinymce/
│ │ ├── langs/
│ │ │ ├── en.js
│ │ │ └── zh_CN.js
│ │ └── skins/
│ │ └── ui/
│ │ └── jeecg/
│ │ ├── content.css
│ │ ├── content.inline.css
│ │ ├── content.mobile.css
│ │ ├── skin.css
│ │ └── skin.mobile.css
│ ├── src/
│ │ ├── App.vue
│ │ ├── api/
│ │ │ ├── common/
│ │ │ │ └── api.ts
│ │ │ ├── demo/
│ │ │ │ ├── account.ts
│ │ │ │ ├── error.ts
│ │ │ │ ├── model/
│ │ │ │ │ ├── accountModel.ts
│ │ │ │ │ ├── optionsModel.ts
│ │ │ │ │ ├── systemModel.ts
│ │ │ │ │ └── tableModel.ts
│ │ │ │ ├── select.ts
│ │ │ │ ├── system.ts
│ │ │ │ ├── table.ts
│ │ │ │ └── tree.ts
│ │ │ ├── model/
│ │ │ │ └── baseModel.ts
│ │ │ └── sys/
│ │ │ ├── menu.ts
│ │ │ ├── model/
│ │ │ │ ├── menuModel.ts
│ │ │ │ ├── uploadModel.ts
│ │ │ │ └── userModel.ts
│ │ │ ├── upload.ts
│ │ │ └── user.ts
│ │ ├── assets/
│ │ │ ├── icons/
│ │ │ │ └── js/
│ │ │ │ └── iconfont.js
│ │ │ ├── less/
│ │ │ │ └── JAreaLinkage.less
│ │ │ └── loginmini/
│ │ │ └── style/
│ │ │ ├── base.less
│ │ │ └── home.less
│ │ ├── components/
│ │ │ ├── Application/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── AppDarkModeToggle.vue
│ │ │ │ ├── AppLocalePicker.vue
│ │ │ │ ├── AppLogo.vue
│ │ │ │ ├── AppProvider.vue
│ │ │ │ ├── search/
│ │ │ │ │ ├── AppSearch.vue
│ │ │ │ │ ├── AppSearchFooter.vue
│ │ │ │ │ ├── AppSearchKeyItem.vue
│ │ │ │ │ ├── AppSearchModal.vue
│ │ │ │ │ └── useMenuSearch.ts
│ │ │ │ └── useAppContext.ts
│ │ │ ├── Authority/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ └── Authority.vue
│ │ │ ├── Basic/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── BasicArrow.vue
│ │ │ │ ├── BasicHelp.vue
│ │ │ │ └── BasicTitle.vue
│ │ │ ├── Button/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── BasicButton.vue
│ │ │ │ ├── JUploadButton.vue
│ │ │ │ ├── PopConfirmButton.vue
│ │ │ │ └── props.ts
│ │ │ ├── CardList/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── CardList.vue
│ │ │ │ └── data.ts
│ │ │ ├── ClickOutSide/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ └── ClickOutSide.vue
│ │ │ ├── CodeEditor/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── CodeEditor.vue
│ │ │ │ ├── codemirror/
│ │ │ │ │ ├── CodeMirror.vue
│ │ │ │ │ ├── codeMirror.ts
│ │ │ │ │ └── codemirror.css
│ │ │ │ └── typing.ts
│ │ │ ├── Container/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── LazyContainer.vue
│ │ │ │ ├── ScrollContainer.vue
│ │ │ │ ├── collapse/
│ │ │ │ │ ├── CollapseContainer.vue
│ │ │ │ │ └── CollapseHeader.vue
│ │ │ │ └── typing.ts
│ │ │ ├── ContextMenu/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── ContextMenu.vue
│ │ │ │ ├── createContextMenu.ts
│ │ │ │ └── typing.ts
│ │ │ ├── CountDown/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── CountButton.vue
│ │ │ │ ├── CountdownInput.vue
│ │ │ │ └── useCountdown.ts
│ │ │ ├── CountTo/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ └── CountTo.vue
│ │ │ ├── Cropper/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── CopperModal.vue
│ │ │ │ ├── Cropper.vue
│ │ │ │ ├── CropperAvatar.vue
│ │ │ │ └── typing.ts
│ │ │ ├── Description/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── Description.vue
│ │ │ │ ├── typing.ts
│ │ │ │ └── useDescription.ts
│ │ │ ├── Drawer/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── BasicDrawer.vue
│ │ │ │ ├── components/
│ │ │ │ │ ├── DrawerFooter.vue
│ │ │ │ │ └── DrawerHeader.vue
│ │ │ │ ├── props.ts
│ │ │ │ ├── typing.ts
│ │ │ │ └── useDrawer.ts
│ │ │ ├── Dropdown/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── Dropdown.vue
│ │ │ │ └── typing.ts
│ │ │ ├── Form/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── BasicForm.vue
│ │ │ │ ├── componentMap.ts
│ │ │ │ ├── components/
│ │ │ │ │ ├── ApiRadioGroup.vue
│ │ │ │ │ ├── ApiSelect.vue
│ │ │ │ │ ├── ApiTreeSelect.vue
│ │ │ │ │ ├── FormAction.vue
│ │ │ │ │ ├── FormItem.vue
│ │ │ │ │ ├── Middleware.vue
│ │ │ │ │ └── RadioButtonGroup.vue
│ │ │ │ ├── container/
│ │ │ │ │ └── JFormContainer.vue
│ │ │ │ ├── helper.ts
│ │ │ │ ├── hooks/
│ │ │ │ │ ├── useAdvanced.ts
│ │ │ │ │ ├── useAutoFocus.ts
│ │ │ │ │ ├── useComponentRegister.ts
│ │ │ │ │ ├── useForm.ts
│ │ │ │ │ ├── useFormContext.ts
│ │ │ │ │ ├── useFormEvents.ts
│ │ │ │ │ ├── useFormValues.ts
│ │ │ │ │ └── useLabelWidth.ts
│ │ │ │ ├── jeecg/
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── JAddInput.vue
│ │ │ │ │ │ ├── JAreaLinkage.vue
│ │ │ │ │ │ ├── JAreaSelect.vue
│ │ │ │ │ │ ├── JCategorySelect.vue
│ │ │ │ │ │ ├── JCheckbox.vue
│ │ │ │ │ │ ├── JCodeEditor.vue
│ │ │ │ │ │ ├── JDatePickerMultiple.vue
│ │ │ │ │ │ ├── JDictSelectTag.vue
│ │ │ │ │ │ ├── JEasyCron/
│ │ │ │ │ │ │ ├── EasyCronInner.vue
│ │ │ │ │ │ │ ├── EasyCronInput.vue
│ │ │ │ │ │ │ ├── EasyCronModal.vue
│ │ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ │ ├── easy.cron.data.ts
│ │ │ │ │ │ │ ├── easy.cron.inner.less
│ │ │ │ │ │ │ ├── easy.cron.input.less
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ ├── tabs/
│ │ │ │ │ │ │ │ ├── DayUI.vue
│ │ │ │ │ │ │ │ ├── HourUI.vue
│ │ │ │ │ │ │ │ ├── MinuteUI.vue
│ │ │ │ │ │ │ │ ├── MonthUI.vue
│ │ │ │ │ │ │ │ ├── SecondUI.vue
│ │ │ │ │ │ │ │ ├── WeekUI.vue
│ │ │ │ │ │ │ │ ├── YearUI.vue
│ │ │ │ │ │ │ │ └── useTabMixin.ts
│ │ │ │ │ │ │ └── validator.ts
│ │ │ │ │ │ ├── JEditor.vue
│ │ │ │ │ │ ├── JEllipsis.vue
│ │ │ │ │ │ ├── JFormContainer.vue
│ │ │ │ │ │ ├── JImageUpload.vue
│ │ │ │ │ │ ├── JImportModal.vue
│ │ │ │ │ │ ├── JInput.vue
│ │ │ │ │ │ ├── JInputPop.vue
│ │ │ │ │ │ ├── JInputSelect.vue
│ │ │ │ │ │ ├── JLinkTableCard/
│ │ │ │ │ │ │ ├── JLinkTableCard.vue
│ │ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ │ └── LinkTableListModal.vue
│ │ │ │ │ │ │ └── hooks/
│ │ │ │ │ │ │ ├── useLinkTable.ts
│ │ │ │ │ │ │ └── useTableColumns.ts
│ │ │ │ │ │ ├── JMarkdownEditor.vue
│ │ │ │ │ │ ├── JPopup.vue
│ │ │ │ │ │ ├── JPopupDict.vue
│ │ │ │ │ │ ├── JRangeDate.vue
│ │ │ │ │ │ ├── JRangeNumber.vue
│ │ │ │ │ │ ├── JRangeTime.vue
│ │ │ │ │ │ ├── JSearchSelect.vue
│ │ │ │ │ │ ├── JSelectDepartPost.vue
│ │ │ │ │ │ ├── JSelectDept.vue
│ │ │ │ │ │ ├── JSelectInput.vue
│ │ │ │ │ │ ├── JSelectMultiple.vue
│ │ │ │ │ │ ├── JSelectPosition.vue
│ │ │ │ │ │ ├── JSelectRole.vue
│ │ │ │ │ │ ├── JSelectUser.vue
│ │ │ │ │ │ ├── JSelectUserByDepartment.vue
│ │ │ │ │ │ ├── JSelectUserByDept.vue
│ │ │ │ │ │ ├── JSelectUserByDeptPost.vue
│ │ │ │ │ │ ├── JSwitch.vue
│ │ │ │ │ │ ├── JTreeDict.vue
│ │ │ │ │ │ ├── JTreeSelect.vue
│ │ │ │ │ │ ├── JUpload/
│ │ │ │ │ │ │ ├── JUpload.vue
│ │ │ │ │ │ │ ├── JUploadModal.vue
│ │ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ │ └── UploadItemActions.vue
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ └── upload.data.ts
│ │ │ │ │ │ ├── TreeIcon/
│ │ │ │ │ │ │ └── TreeIcon.vue
│ │ │ │ │ │ ├── base/
│ │ │ │ │ │ │ ├── JSelectBiz.vue
│ │ │ │ │ │ │ └── JTreeBiz.vue
│ │ │ │ │ │ ├── modal/
│ │ │ │ │ │ │ ├── DeptSelectModal.vue
│ │ │ │ │ │ │ ├── JPopupOnlReportModal.vue
│ │ │ │ │ │ │ ├── JSelectUserByDepartmentModal.vue
│ │ │ │ │ │ │ ├── PositionSelectModal.vue
│ │ │ │ │ │ │ ├── RoleSelectModal.vue
│ │ │ │ │ │ │ ├── UserSelectByDepModal.vue
│ │ │ │ │ │ │ ├── UserSelectByDepPostModal.vue
│ │ │ │ │ │ │ └── UserSelectModal.vue
│ │ │ │ │ │ ├── positionSelect/
│ │ │ │ │ │ │ └── PositionSelectModal.vue
│ │ │ │ │ │ ├── roleSelect/
│ │ │ │ │ │ │ ├── RoleSelectInput.vue
│ │ │ │ │ │ │ └── RoleSelectModal.vue
│ │ │ │ │ │ └── userSelect/
│ │ │ │ │ │ ├── FilteredUserSelectModal.vue
│ │ │ │ │ │ ├── SelectedUserItem.vue
│ │ │ │ │ │ ├── UserList.vue
│ │ │ │ │ │ ├── UserListAndDepart.vue
│ │ │ │ │ │ ├── UserListAndRole.vue
│ │ │ │ │ │ ├── UserSelectModal.vue
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ └── useUserSelect.ts
│ │ │ │ │ ├── hooks/
│ │ │ │ │ │ ├── useCodeHinting.ts
│ │ │ │ │ │ ├── useSelectBiz.ts
│ │ │ │ │ │ └── useTreeBiz.ts
│ │ │ │ │ └── props/
│ │ │ │ │ └── props.ts
│ │ │ │ ├── props.ts
│ │ │ │ ├── types/
│ │ │ │ │ ├── form.ts
│ │ │ │ │ ├── formItem.ts
│ │ │ │ │ ├── hooks.ts
│ │ │ │ │ └── index.ts
│ │ │ │ └── utils/
│ │ │ │ ├── Area.ts
│ │ │ │ ├── GroupRequest.ts
│ │ │ │ ├── areaDataUtil.js
│ │ │ │ └── formUtils.ts
│ │ │ ├── Icon/
│ │ │ │ ├── data/
│ │ │ │ │ └── icons.data.ts
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── Icon.vue
│ │ │ │ ├── IconList.vue
│ │ │ │ ├── IconPicker.vue
│ │ │ │ └── SvgIcon.vue
│ │ │ ├── InFilter/
│ │ │ │ ├── CascaderPcaInFilter.vue
│ │ │ │ ├── DatePickerInFilter.vue
│ │ │ │ └── index.ts
│ │ │ ├── JDragNotice/
│ │ │ │ └── JDragNotice.vue
│ │ │ ├── JVxeCustom/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── components/
│ │ │ │ │ ├── JVxeDepartSelectCell.vue
│ │ │ │ │ ├── JVxeFileCell.vue
│ │ │ │ │ ├── JVxeImageCell.vue
│ │ │ │ │ ├── JVxePcaCell.vue
│ │ │ │ │ ├── JVxePopupCell.vue
│ │ │ │ │ ├── JVxeSelectDictSearchCell.ts
│ │ │ │ │ └── JVxeUserSelectCell.vue
│ │ │ │ └── hooks/
│ │ │ │ └── useFileCell.ts
│ │ │ ├── Loading/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── Loading.vue
│ │ │ │ ├── createLoading.ts
│ │ │ │ ├── typing.ts
│ │ │ │ └── useLoading.ts
│ │ │ ├── Markdown/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── Markdown.vue
│ │ │ │ ├── MarkdownViewer.vue
│ │ │ │ └── typing.ts
│ │ │ ├── Menu/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── BasicMenu.vue
│ │ │ │ ├── components/
│ │ │ │ │ ├── BasicMenuItem.vue
│ │ │ │ │ ├── BasicSubMenuItem.vue
│ │ │ │ │ └── MenuItemContent.vue
│ │ │ │ ├── index.less
│ │ │ │ ├── props.ts
│ │ │ │ ├── types.ts
│ │ │ │ ├── useBasicMenuContext.ts
│ │ │ │ └── useOpenKeys.ts
│ │ │ ├── Modal/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── BasicModal.vue
│ │ │ │ ├── JModal/
│ │ │ │ │ └── JModal.vue
│ │ │ │ ├── components/
│ │ │ │ │ ├── Modal.tsx
│ │ │ │ │ ├── ModalClose.vue
│ │ │ │ │ ├── ModalFooter.vue
│ │ │ │ │ ├── ModalHeader.vue
│ │ │ │ │ └── ModalWrapper.vue
│ │ │ │ ├── hooks/
│ │ │ │ │ ├── useModal.ts
│ │ │ │ │ ├── useModalContext.ts
│ │ │ │ │ ├── useModalDrag.ts
│ │ │ │ │ └── useModalFullScreen.ts
│ │ │ │ ├── index.less
│ │ │ │ ├── props.ts
│ │ │ │ └── typing.ts
│ │ │ ├── Page/
│ │ │ │ ├── index.ts
│ │ │ │ ├── injectionKey.ts
│ │ │ │ └── src/
│ │ │ │ ├── PageFooter.vue
│ │ │ │ └── PageWrapper.vue
│ │ │ ├── Preview/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── Functional.vue
│ │ │ │ ├── Preview.vue
│ │ │ │ ├── functional.ts
│ │ │ │ └── typing.ts
│ │ │ ├── Qrcode/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── Qrcode.vue
│ │ │ │ ├── drawCanvas.ts
│ │ │ │ ├── drawLogo.ts
│ │ │ │ ├── qrcodePlus.ts
│ │ │ │ ├── toCanvas.ts
│ │ │ │ └── typing.ts
│ │ │ ├── Scrollbar/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── Scrollbar.vue
│ │ │ │ ├── bar.ts
│ │ │ │ ├── types.d.ts
│ │ │ │ └── util.ts
│ │ │ ├── SimpleMenu/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── SimpleMenu.vue
│ │ │ │ ├── SimpleMenuTag.vue
│ │ │ │ ├── SimpleSubMenu.vue
│ │ │ │ ├── components/
│ │ │ │ │ ├── Menu.vue
│ │ │ │ │ ├── MenuCollapseTransition.vue
│ │ │ │ │ ├── MenuItem.vue
│ │ │ │ │ ├── SubMenuItem.vue
│ │ │ │ │ ├── menu.less
│ │ │ │ │ ├── types.ts
│ │ │ │ │ ├── useMenu.ts
│ │ │ │ │ └── useSimpleMenuContext.ts
│ │ │ │ ├── index.less
│ │ │ │ ├── types.ts
│ │ │ │ └── useOpenKeys.ts
│ │ │ ├── StrengthMeter/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ └── StrengthMeter.vue
│ │ │ ├── Table/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── BasicTable.vue
│ │ │ │ ├── componentMap.ts
│ │ │ │ ├── components/
│ │ │ │ │ ├── CustomSelectHeader.vue
│ │ │ │ │ ├── EditTableHeaderIcon.vue
│ │ │ │ │ ├── ExpandIcon.tsx
│ │ │ │ │ ├── HeaderCell.vue
│ │ │ │ │ ├── TableAction.vue
│ │ │ │ │ ├── TableFooter.vue
│ │ │ │ │ ├── TableHeader.vue
│ │ │ │ │ ├── TableImg.vue
│ │ │ │ │ ├── TableSummary.tsx
│ │ │ │ │ ├── TableTitle.vue
│ │ │ │ │ ├── editable/
│ │ │ │ │ │ ├── CellComponent.ts
│ │ │ │ │ │ ├── EditableCell.vue
│ │ │ │ │ │ ├── helper.ts
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ └── settings/
│ │ │ │ │ ├── ColumnSetting.vue
│ │ │ │ │ ├── FullScreenSetting.vue
│ │ │ │ │ ├── RedoSetting.vue
│ │ │ │ │ ├── SizeSetting.vue
│ │ │ │ │ └── index.vue
│ │ │ │ ├── const.ts
│ │ │ │ ├── hooks/
│ │ │ │ │ ├── useColumns.ts
│ │ │ │ │ ├── useColumnsCache.ts
│ │ │ │ │ ├── useCustomRow.ts
│ │ │ │ │ ├── useCustomSelection.tsx
│ │ │ │ │ ├── useDataSource.ts
│ │ │ │ │ ├── useLoading.ts
│ │ │ │ │ ├── usePagination.tsx
│ │ │ │ │ ├── useRowSelection.ts
│ │ │ │ │ ├── useTable.ts
│ │ │ │ │ ├── useTableContext.ts
│ │ │ │ │ ├── useTableExpand.ts
│ │ │ │ │ ├── useTableFooter.ts
│ │ │ │ │ ├── useTableForm.ts
│ │ │ │ │ ├── useTableHeader.ts
│ │ │ │ │ ├── useTableScroll.ts
│ │ │ │ │ └── useTableStyle.ts
│ │ │ │ ├── props.ts
│ │ │ │ └── types/
│ │ │ │ ├── column.ts
│ │ │ │ ├── componentType.ts
│ │ │ │ ├── pagination.ts
│ │ │ │ ├── table.ts
│ │ │ │ └── tableAction.ts
│ │ │ ├── Time/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ └── Time.vue
│ │ │ ├── Tinymce/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── Editor.vue
│ │ │ │ ├── ImgUpload.vue
│ │ │ │ ├── ProcessMask.vue
│ │ │ │ ├── helper.ts
│ │ │ │ └── tinymce.ts
│ │ │ ├── Transition/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── CollapseTransition.vue
│ │ │ │ ├── CreateTransition.tsx
│ │ │ │ └── ExpandTransition.ts
│ │ │ ├── Tree/
│ │ │ │ ├── index.ts
│ │ │ │ ├── src/
│ │ │ │ │ ├── BasicTree.vue
│ │ │ │ │ ├── TreeIcon.ts
│ │ │ │ │ ├── components/
│ │ │ │ │ │ └── TreeHeader.vue
│ │ │ │ │ ├── hooks/
│ │ │ │ │ │ └── useTree.ts
│ │ │ │ │ └── types/
│ │ │ │ │ └── tree.ts
│ │ │ │ └── style/
│ │ │ │ ├── index.less
│ │ │ │ └── index.ts
│ │ │ ├── Tree_backup/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── Tree.vue
│ │ │ │ ├── TreeHeader.vue
│ │ │ │ ├── TreeIcon.ts
│ │ │ │ ├── props.ts
│ │ │ │ ├── typing.ts
│ │ │ │ └── useTree.ts
│ │ │ ├── Upload/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── BasicUpload.vue
│ │ │ │ ├── FileList.vue
│ │ │ │ ├── ThumbUrl.vue
│ │ │ │ ├── UploadModal.vue
│ │ │ │ ├── UploadPreviewModal.vue
│ │ │ │ ├── data.tsx
│ │ │ │ ├── helper.ts
│ │ │ │ ├── props.ts
│ │ │ │ ├── typing.ts
│ │ │ │ └── useUpload.ts
│ │ │ ├── Verify/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── DragVerify.vue
│ │ │ │ ├── ImgRotate.vue
│ │ │ │ ├── props.ts
│ │ │ │ └── typing.ts
│ │ │ ├── VirtualScroll/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ └── VirtualScroll.vue
│ │ │ ├── chart/
│ │ │ │ ├── Bar.vue
│ │ │ │ ├── BarAndLine.vue
│ │ │ │ ├── BarMulti.vue
│ │ │ │ ├── ChartCard.vue
│ │ │ │ ├── Gauge.vue
│ │ │ │ ├── HeadInfo.vue
│ │ │ │ ├── LineMulti.vue
│ │ │ │ ├── Pie.vue
│ │ │ │ ├── README.md
│ │ │ │ ├── Radar.vue
│ │ │ │ ├── RankList.vue
│ │ │ │ ├── SingleLine.vue
│ │ │ │ ├── StackBar.vue
│ │ │ │ └── Trend.vue
│ │ │ ├── jeecg/
│ │ │ │ ├── AIcon.vue
│ │ │ │ ├── ExcelButton.vue
│ │ │ │ ├── JPrompt/
│ │ │ │ │ ├── JPrompt.vue
│ │ │ │ │ ├── hooks/
│ │ │ │ │ │ └── useJPrompt.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── typing.ts
│ │ │ │ ├── JVxeTable/
│ │ │ │ │ ├── hooks.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── JVxeTable.ts
│ │ │ │ │ │ ├── componentMap.ts
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── JVxeDetailsModal.vue
│ │ │ │ │ │ │ ├── JVxeReloadEffect.ts
│ │ │ │ │ │ │ ├── JVxeSubPopover.vue
│ │ │ │ │ │ │ ├── JVxeToolbar.vue
│ │ │ │ │ │ │ └── cells/
│ │ │ │ │ │ │ ├── JVxeCheckboxCell.vue
│ │ │ │ │ │ │ ├── JVxeDateCell.vue
│ │ │ │ │ │ │ ├── JVxeDragSortCell.vue
│ │ │ │ │ │ │ ├── JVxeInputCell.vue
│ │ │ │ │ │ │ ├── JVxeNormalCell.vue
│ │ │ │ │ │ │ ├── JVxeProgressCell.vue
│ │ │ │ │ │ │ ├── JVxeRadioCell.vue
│ │ │ │ │ │ │ ├── JVxeSelectCell.vue
│ │ │ │ │ │ │ ├── JVxeSlotCell.ts
│ │ │ │ │ │ │ ├── JVxeTextareaCell.vue
│ │ │ │ │ │ │ ├── JVxeTimeCell.vue
│ │ │ │ │ │ │ └── JVxeUploadCell.vue
│ │ │ │ │ │ ├── hooks/
│ │ │ │ │ │ │ ├── cells/
│ │ │ │ │ │ │ │ └── useJVxeUploadCell.ts
│ │ │ │ │ │ │ ├── useColumns.ts
│ │ │ │ │ │ │ ├── useColumnsCache.ts
│ │ │ │ │ │ │ ├── useData.ts
│ │ │ │ │ │ │ ├── useDataSource.ts
│ │ │ │ │ │ │ ├── useDragSort.ts
│ │ │ │ │ │ │ ├── useFinallyProps.ts
│ │ │ │ │ │ │ ├── useJVxeComponent.ts
│ │ │ │ │ │ │ ├── useKeyboardEdit.ts
│ │ │ │ │ │ │ ├── useLinkage.ts
│ │ │ │ │ │ │ ├── useMethods.ts
│ │ │ │ │ │ │ ├── usePagination.ts
│ │ │ │ │ │ │ ├── useRenderComponents.ts
│ │ │ │ │ │ │ ├── useToolbar.ts
│ │ │ │ │ │ │ ├── useValidateRules.ts
│ │ │ │ │ │ │ └── useWebSocket.ts
│ │ │ │ │ │ ├── install.ts
│ │ │ │ │ │ ├── style/
│ │ │ │ │ │ │ ├── index.less
│ │ │ │ │ │ │ ├── reload-effect.less
│ │ │ │ │ │ │ ├── vxe.const.less
│ │ │ │ │ │ │ └── vxe.dark.less
│ │ │ │ │ │ ├── types/
│ │ │ │ │ │ │ ├── JVxeComponent.ts
│ │ │ │ │ │ │ ├── JVxeTypes.ts
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── utils/
│ │ │ │ │ │ │ ├── authUtils.ts
│ │ │ │ │ │ │ ├── enhancedUtils.ts
│ │ │ │ │ │ │ ├── registerUtils.ts
│ │ │ │ │ │ │ └── vxeUtils.ts
│ │ │ │ │ │ └── vxe.data.ts
│ │ │ │ │ ├── types.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── OnLine/
│ │ │ │ │ ├── JPopupOnlReport.vue
│ │ │ │ │ ├── SearchFormItem.vue
│ │ │ │ │ ├── hooks/
│ │ │ │ │ │ └── usePopBiz.ts
│ │ │ │ │ └── types/
│ │ │ │ │ └── onlineConfig.ts
│ │ │ │ ├── UserAvatar.vue
│ │ │ │ ├── captcha/
│ │ │ │ │ └── CaptchaModal.vue
│ │ │ │ ├── comment/
│ │ │ │ │ ├── CommentFiles.vue
│ │ │ │ │ ├── CommentList.vue
│ │ │ │ │ ├── CommentPanel.vue
│ │ │ │ │ ├── DataLogList.vue
│ │ │ │ │ ├── HistoryFileList.vue
│ │ │ │ │ ├── MyComment.vue
│ │ │ │ │ ├── UploadChunk.vue
│ │ │ │ │ ├── comment.less
│ │ │ │ │ └── useComment.ts
│ │ │ │ └── thirdApp/
│ │ │ │ ├── JThirdAppButton.vue
│ │ │ │ ├── JThirdAppDropdown.vue
│ │ │ │ └── jThirdApp.api.ts
│ │ │ ├── onlinePreview/
│ │ │ │ ├── WpsFileView.vue
│ │ │ │ └── open-jssdk.es.js
│ │ │ ├── registerGlobComp.ts
│ │ │ └── wordtpl/
│ │ │ ├── DocDesign.ts
│ │ │ ├── DocDesign.vue
│ │ │ ├── canvas-editor.js
│ │ │ ├── components/
│ │ │ │ ├── HighlightColorModal.vue
│ │ │ │ ├── HyperlinkDrawer.vue
│ │ │ │ ├── PagerMarginDrawer.vue
│ │ │ │ └── WatermarkDrawer.vue
│ │ │ └── style/
│ │ │ └── DocDesign.css
│ │ ├── design/
│ │ │ ├── ant/
│ │ │ │ ├── btn.less
│ │ │ │ ├── index.less
│ │ │ │ ├── input.less
│ │ │ │ ├── pagination.less
│ │ │ │ └── table.less
│ │ │ ├── color.less
│ │ │ ├── config.less
│ │ │ ├── entry.css
│ │ │ ├── index.less
│ │ │ ├── public.less
│ │ │ ├── theme.less
│ │ │ ├── transition/
│ │ │ │ ├── base.less
│ │ │ │ ├── fade.less
│ │ │ │ ├── index.less
│ │ │ │ ├── scale.less
│ │ │ │ ├── scroll.less
│ │ │ │ ├── slide.less
│ │ │ │ └── zoom.less
│ │ │ └── var/
│ │ │ ├── breakpoint.less
│ │ │ ├── easing.less
│ │ │ └── index.less
│ │ ├── directives/
│ │ │ ├── clickOutside.ts
│ │ │ ├── index.ts
│ │ │ ├── loading.ts
│ │ │ ├── permission.ts
│ │ │ ├── repeatClick.ts
│ │ │ └── ripple/
│ │ │ ├── index.less
│ │ │ └── index.ts
│ │ ├── electron/
│ │ │ └── index.ts
│ │ ├── enums/
│ │ │ ├── CompTypeEnum.ts
│ │ │ ├── DateTypeEnum.ts
│ │ │ ├── appEnum.ts
│ │ │ ├── breakpointEnum.ts
│ │ │ ├── cacheEnum.ts
│ │ │ ├── exceptionEnum.ts
│ │ │ ├── httpEnum.ts
│ │ │ ├── jeecgEnum.ts
│ │ │ ├── menuEnum.ts
│ │ │ ├── pageEnum.ts
│ │ │ ├── roleEnum.ts
│ │ │ └── sizeEnum.ts
│ │ ├── hooks/
│ │ │ ├── component/
│ │ │ │ ├── useFormItem.ts
│ │ │ │ ├── useFormItemSingle.ts
│ │ │ │ └── usePageContext.ts
│ │ │ ├── core/
│ │ │ │ ├── onMountedOrActivated.ts
│ │ │ │ ├── useAttrs.ts
│ │ │ │ ├── useContext.ts
│ │ │ │ ├── useLockFn.ts
│ │ │ │ ├── useRefs.ts
│ │ │ │ └── useTimeout.ts
│ │ │ ├── event/
│ │ │ │ ├── useBreakpoint.ts
│ │ │ │ ├── useEventListener.ts
│ │ │ │ ├── useIntersectionObserver.ts
│ │ │ │ ├── useScroll.ts
│ │ │ │ ├── useScrollTo.ts
│ │ │ │ └── useWindowSizeFn.ts
│ │ │ ├── jeecg/
│ │ │ │ └── useAdaptiveWidth.ts
│ │ │ ├── setting/
│ │ │ │ ├── index.ts
│ │ │ │ ├── useHeaderSetting.ts
│ │ │ │ ├── useMenuSetting.ts
│ │ │ │ ├── useMultipleTabSetting.ts
│ │ │ │ ├── useRootSetting.ts
│ │ │ │ └── useTransitionSetting.ts
│ │ │ ├── system/
│ │ │ │ ├── useAutoAdapt.ts
│ │ │ │ ├── useJvxeMethods.ts
│ │ │ │ ├── useListPage.ts
│ │ │ │ ├── useMethods.ts
│ │ │ │ └── useThirdLogin.ts
│ │ │ └── web/
│ │ │ ├── useAppInject.ts
│ │ │ ├── useContentHeight.ts
│ │ │ ├── useContextMenu.ts
│ │ │ ├── useCopyModal.ts
│ │ │ ├── useCopyToClipboard.ts
│ │ │ ├── useDesign.ts
│ │ │ ├── useDragNotice.ts
│ │ │ ├── useECharts.ts
│ │ │ ├── useFullContent.ts
│ │ │ ├── useI18n.ts
│ │ │ ├── useLockPage.ts
│ │ │ ├── useMessage.ts
│ │ │ ├── useMessage.tsx_backup
│ │ │ ├── usePage.ts
│ │ │ ├── usePagination.ts
│ │ │ ├── usePermission.ts
│ │ │ ├── usePrintJS.ts
│ │ │ ├── useScript.ts
│ │ │ ├── useSortable.ts
│ │ │ ├── useSso.ts
│ │ │ ├── useTabs.ts
│ │ │ ├── useTitle.ts
│ │ │ ├── useWatermark.ts
│ │ │ └── useWebSocket.ts
│ │ ├── layouts/
│ │ │ ├── default/
│ │ │ │ ├── content/
│ │ │ │ │ ├── index.vue
│ │ │ │ │ ├── useContentContext.ts
│ │ │ │ │ └── useContentViewHeight.ts
│ │ │ │ ├── feature/
│ │ │ │ │ └── index.vue
│ │ │ │ ├── footer/
│ │ │ │ │ └── index.vue
│ │ │ │ ├── header/
│ │ │ │ │ ├── MultipleHeader.vue
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── Breadcrumb.vue
│ │ │ │ │ │ ├── ErrorAction.vue
│ │ │ │ │ │ ├── FullScreen.vue
│ │ │ │ │ │ ├── LockScreen.vue
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── lock/
│ │ │ │ │ │ │ └── LockModal.vue
│ │ │ │ │ │ ├── notify/
│ │ │ │ │ │ │ ├── ChangePasswordModal.vue
│ │ │ │ │ │ │ ├── NoticeList.vue
│ │ │ │ │ │ │ ├── data.ts
│ │ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ │ ├── index_old.vue
│ │ │ │ │ │ │ └── notify.api.ts
│ │ │ │ │ │ └── user-dropdown/
│ │ │ │ │ │ ├── DepartSelect.vue
│ │ │ │ │ │ ├── DropMenuItem.vue
│ │ │ │ │ │ ├── UpdatePassword.vue
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.less
│ │ │ │ │ └── index.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── menu/
│ │ │ │ │ ├── index.vue
│ │ │ │ │ └── useLayoutMenu.ts
│ │ │ │ ├── setting/
│ │ │ │ │ ├── SettingDrawer.tsx
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── InputNumberItem.vue
│ │ │ │ │ │ ├── SelectItem.vue
│ │ │ │ │ │ ├── SettingFooter.vue
│ │ │ │ │ │ ├── SwitchItem.vue
│ │ │ │ │ │ ├── ThemeColorPicker.vue
│ │ │ │ │ │ ├── TypePicker.vue
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── enum.ts
│ │ │ │ │ ├── handler.ts
│ │ │ │ │ └── index.vue
│ │ │ │ ├── sider/
│ │ │ │ │ ├── DragBar.vue
│ │ │ │ │ ├── LayoutSider.vue
│ │ │ │ │ ├── MixSider.vue
│ │ │ │ │ ├── index.vue
│ │ │ │ │ └── useLayoutSider.ts
│ │ │ │ ├── tabs/
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── FoldButton.vue
│ │ │ │ │ │ ├── TabContent.vue
│ │ │ │ │ │ └── TabRedo.vue
│ │ │ │ │ ├── index.less
│ │ │ │ │ ├── index.vue
│ │ │ │ │ ├── tabs.theme.card.less
│ │ │ │ │ ├── tabs.theme.smooth.less
│ │ │ │ │ ├── types.ts
│ │ │ │ │ ├── useHideHomeDesign.ts
│ │ │ │ │ ├── useMultipleTabs.ts
│ │ │ │ │ └── useTabDropdown.ts
│ │ │ │ └── trigger/
│ │ │ │ ├── HeaderTrigger.vue
│ │ │ │ ├── SiderTrigger.vue
│ │ │ │ └── index.vue
│ │ │ ├── iframe/
│ │ │ │ ├── index.vue
│ │ │ │ └── useFrameKeepAlive.ts
│ │ │ └── page/
│ │ │ ├── index.vue
│ │ │ ├── transition.ts
│ │ │ └── useEmpty.ts
│ │ ├── locales/
│ │ │ ├── helper.ts
│ │ │ ├── lang/
│ │ │ │ ├── en/
│ │ │ │ │ ├── common.ts
│ │ │ │ │ ├── component.ts
│ │ │ │ │ ├── layout.ts
│ │ │ │ │ ├── routes/
│ │ │ │ │ │ ├── basic.ts
│ │ │ │ │ │ ├── dashboard.ts
│ │ │ │ │ │ └── demo.ts
│ │ │ │ │ └── sys.ts
│ │ │ │ ├── en.ts
│ │ │ │ ├── zh-CN/
│ │ │ │ │ ├── common.ts
│ │ │ │ │ ├── component.ts
│ │ │ │ │ ├── layout.ts
│ │ │ │ │ ├── routes/
│ │ │ │ │ │ ├── basic.ts
│ │ │ │ │ │ ├── dashboard.ts
│ │ │ │ │ │ └── demo.ts
│ │ │ │ │ └── sys.ts
│ │ │ │ └── zh_CN.ts
│ │ │ ├── setupI18n.ts
│ │ │ └── useLocale.ts
│ │ ├── logics/
│ │ │ ├── error-handle/
│ │ │ │ └── index.ts
│ │ │ ├── initAppConfig.ts
│ │ │ ├── mitt/
│ │ │ │ └── routeChange.ts
│ │ │ └── theme/
│ │ │ ├── dark.ts
│ │ │ ├── index.ts
│ │ │ ├── updateBackground.ts
│ │ │ ├── updateColorWeak.ts
│ │ │ ├── updateGrayMode.ts
│ │ │ └── util.ts
│ │ ├── main.ts
│ │ ├── qiankun/
│ │ │ ├── apps.ts
│ │ │ ├── index.ts
│ │ │ ├── micro/
│ │ │ │ ├── index.ts
│ │ │ │ └── qiankunMicro.ts
│ │ │ └── state.ts
│ │ ├── router/
│ │ │ ├── constant.ts
│ │ │ ├── guard/
│ │ │ │ ├── index.ts
│ │ │ │ ├── paramMenuGuard.ts
│ │ │ │ ├── permissionGuard.ts
│ │ │ │ └── stateGuard.ts
│ │ │ ├── helper/
│ │ │ │ ├── menuHelper.ts
│ │ │ │ └── routeHelper.ts
│ │ │ ├── index.ts
│ │ │ ├── menus/
│ │ │ │ └── index.ts
│ │ │ ├── router.ts
│ │ │ ├── routes/
│ │ │ │ ├── basic.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── mainOut.ts
│ │ │ │ ├── modules/
│ │ │ │ │ ├── about.ts
│ │ │ │ │ ├── dashboard.ts
│ │ │ │ │ └── demo/
│ │ │ │ │ ├── charts.ts
│ │ │ │ │ ├── comp.ts
│ │ │ │ │ ├── feat.ts
│ │ │ │ │ ├── iframe.ts
│ │ │ │ │ ├── level.ts
│ │ │ │ │ ├── page.ts
│ │ │ │ │ ├── permission.ts
│ │ │ │ │ ├── setup.ts
│ │ │ │ │ └── system.ts
│ │ │ │ └── staticRouter.ts
│ │ │ └── types.ts
│ │ ├── settings/
│ │ │ ├── componentSetting.ts
│ │ │ ├── designSetting.ts
│ │ │ ├── encryptionSetting.ts
│ │ │ ├── localeSetting.ts
│ │ │ ├── projectSetting.ts
│ │ │ ├── registerThirdComp.ts
│ │ │ └── siteSetting.ts
│ │ ├── store/
│ │ │ ├── index.ts
│ │ │ └── modules/
│ │ │ ├── app.ts
│ │ │ ├── defIndex.ts
│ │ │ ├── errorLog.ts
│ │ │ ├── locale.ts
│ │ │ ├── lock.ts
│ │ │ ├── multipleTab.ts
│ │ │ ├── permission.ts
│ │ │ └── user.ts
│ │ ├── utils/
│ │ │ ├── areaData/
│ │ │ │ └── pcaUtils.ts
│ │ │ ├── auth/
│ │ │ │ └── index.ts
│ │ │ ├── bem.ts
│ │ │ ├── browser.js
│ │ │ ├── cache/
│ │ │ │ ├── index.ts
│ │ │ │ ├── memory.ts
│ │ │ │ ├── persistent.ts
│ │ │ │ └── storageCache.ts
│ │ │ ├── cipher.ts
│ │ │ ├── color.ts
│ │ │ ├── common/
│ │ │ │ ├── compUtils.ts
│ │ │ │ ├── renderUtils.ts
│ │ │ │ └── vxeUtils.ts
│ │ │ ├── dateUtil.ts
│ │ │ ├── desform/
│ │ │ │ └── customExpression.ts
│ │ │ ├── dict/
│ │ │ │ ├── DictColors.js
│ │ │ │ ├── JDictSelectUtil.js
│ │ │ │ └── index.ts
│ │ │ ├── domUtils.ts
│ │ │ ├── encryption/
│ │ │ │ └── signMd5Utils.js
│ │ │ ├── env.ts
│ │ │ ├── event/
│ │ │ │ └── index.ts
│ │ │ ├── factory/
│ │ │ │ └── createAsyncComponent.tsx
│ │ │ ├── file/
│ │ │ │ ├── base64Conver.ts
│ │ │ │ └── download.ts
│ │ │ ├── getConfigByMenuType.ts
│ │ │ ├── helper/
│ │ │ │ ├── treeHelper.ts
│ │ │ │ ├── tsxHelper.tsx
│ │ │ │ └── validator.ts
│ │ │ ├── http/
│ │ │ │ └── axios/
│ │ │ │ ├── Axios.ts
│ │ │ │ ├── axiosCancel.ts
│ │ │ │ ├── axiosTransform.ts
│ │ │ │ ├── checkStatus.ts
│ │ │ │ ├── helper.ts
│ │ │ │ └── index.ts
│ │ │ ├── index.ts
│ │ │ ├── is.ts
│ │ │ ├── lib/
│ │ │ │ └── echarts.ts
│ │ │ ├── log.ts
│ │ │ ├── mitt.ts
│ │ │ ├── monorepo/
│ │ │ │ ├── dynamicRouter.ts
│ │ │ │ └── registerPackages.ts
│ │ │ ├── propTypes.ts
│ │ │ ├── props.ts
│ │ │ ├── types.ts
│ │ │ └── uuid.ts
│ │ └── views/
│ │ ├── dashboard/
│ │ │ ├── Analysis/
│ │ │ │ ├── api.ts
│ │ │ │ ├── components/
│ │ │ │ │ ├── BdcTabCard.vue
│ │ │ │ │ ├── ChartGroupCard.vue
│ │ │ │ │ ├── GrowCard.vue
│ │ │ │ │ ├── QuickNav.vue
│ │ │ │ │ ├── SaleTabCard.vue
│ │ │ │ │ ├── SalesProductPie.vue
│ │ │ │ │ ├── SiteAnalysis.vue
│ │ │ │ │ ├── VisitAnalysis.vue
│ │ │ │ │ ├── VisitAnalysisBar.vue
│ │ │ │ │ ├── VisitRadar.vue
│ │ │ │ │ ├── VisitSource.vue
│ │ │ │ │ └── props.ts
│ │ │ │ ├── data.ts
│ │ │ │ ├── homePage/
│ │ │ │ │ ├── IndexBdc.vue
│ │ │ │ │ ├── IndexChart.vue
│ │ │ │ │ ├── IndexDef.vue
│ │ │ │ │ └── IndexTask.vue
│ │ │ │ └── index.vue
│ │ │ ├── ai/
│ │ │ │ ├── components/
│ │ │ │ │ └── aide/
│ │ │ │ │ └── index.vue
│ │ │ │ └── index.vue
│ │ │ └── workbench/
│ │ │ ├── components/
│ │ │ │ ├── DynamicInfo.vue
│ │ │ │ ├── ProjectCard.vue
│ │ │ │ ├── QuickNav.vue
│ │ │ │ ├── SaleRadar.vue
│ │ │ │ ├── WorkbenchHeader.vue
│ │ │ │ └── data.ts
│ │ │ └── index.vue
│ │ ├── demo/
│ │ │ ├── charts/
│ │ │ │ ├── Line.vue
│ │ │ │ ├── Map.vue
│ │ │ │ ├── Pie.vue
│ │ │ │ ├── SaleRadar.vue
│ │ │ │ ├── china.json
│ │ │ │ ├── data.ts
│ │ │ │ └── map/
│ │ │ │ ├── Baidu.vue
│ │ │ │ ├── Gaode.vue
│ │ │ │ └── Google.vue
│ │ │ ├── codemirror/
│ │ │ │ └── index.vue
│ │ │ ├── comp/
│ │ │ │ ├── button/
│ │ │ │ │ └── index.vue
│ │ │ │ ├── card-list/
│ │ │ │ │ └── index.vue
│ │ │ │ ├── count-to/
│ │ │ │ │ └── index.vue
│ │ │ │ ├── cropper/
│ │ │ │ │ └── index.vue
│ │ │ │ ├── desc/
│ │ │ │ │ └── index.vue
│ │ │ │ ├── drawer/
│ │ │ │ │ ├── Drawer1.vue
│ │ │ │ │ ├── Drawer2.vue
│ │ │ │ │ ├── Drawer3.vue
│ │ │ │ │ ├── Drawer4.vue
│ │ │ │ │ ├── Drawer5.vue
│ │ │ │ │ └── index.vue
│ │ │ │ ├── lazy/
│ │ │ │ │ ├─
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
*.js linguist-language=Java
*.css linguist-language=Java
*.ts linguist-language=vue
*.html linguist-language=vue
*.sql linguist-language=Java
*.ftl linguist-language=Java
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: 提交 Bug
about: 请告诉我框架存在的问题,我会协助你解决此问题!
labels: bug
assignees: getActivity
---
##### 版本号:
##### 分支:
##### 问题描述:
##### 错误截图:
#### 友情提示:
- 未按格式要求发帖、描述过于简单的,会被直接删掉;
- 描述问题请图文并茂,方便我们理解并快速定位问题;
- 如果使用的不是master,请说明你使用的分支;
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: 提交建议
about: 请告诉我框架的不足之处,让我做得更好!
labels: help wanted
assignees: getActivity
---
##### 版本号:
##### 分支:
##### 问题描述:
##### 错误截图:
#### 友情提示:
- 未按格式要求发帖、描述过于简单的,会被直接删掉;
- 描述问题请图文并茂,方便我们理解并快速定位问题;
- 如果使用的不是master,请说明你使用的分支;
================================================
FILE: .gitignore
================================================
## ide
**/.idea
*.iml
rebel.xml
## backend
**/target
**/logs
## front
**/*.lock
os_del.cmd
os_del_doc.cmd
.svn
derby.log
.cursor
.history
.claude
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright (c) 2019 <a href="http://www.jeecg.com">Jeecg Boot</a> All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
In any case, you must not make any such use of this software as to develop software which may be considered competitive with this software.
================================================
FILE: README-AI.md
================================================
AIGC应用平台介绍
===============
一个全栈式 AI 开发平台,旨在帮助开发者快速构建和部署个性化的 AI 应用。
JeecgBoot平台的AIGC功能模块,是一套类似`Dify`的`AIGC应用开发平台`+`知识库问答`,是一款基于LLM大语言模型AI应用平台和 RAG 的知识库问答系统。
其直观的界面结合了 AI 流程编排、RAG 管道、知识库管理、模型管理、对接向量库、实时运行可观察等,让您可以快速从原型到生产,拥有AI服务能力。
### AI视频介绍
[](https://www.bilibili.com/video/BV1zmd7YFE4w)
##### 功能大模块
- AI应用开发平台
- AI知识库系统
- AI大模型管理
- AI流程编排
- AI对话支持图片
- AI对话助手(智能问答)
- AI建表(Online表单)
- AI写文章(CMS)
- AI表单字段建议(表单设计器)
#### Dify `VS` JEECG AI
> JEECG AI与Dify相比,在多个方面展现出显著的优势,特别是在文档处理、格式和图片保持方面。以下是一些具体的优点:
> - Markdown文档库导入:
> JEECG AI允许用户直接导入整个Markdown文档库,这不仅保留markdown格式,还支持图片的导入,确保文档内容的完整性和可视化效果。
> - 对话回复格式美观:
> 在对话过程中,JEECG AI能够保持回复内容的原格式,也不丢失图片,使得输出的文章更加美观,不会出现格式错乱的情况,还支持图片的渲染。
> - PDF文档导入与格式转换:
> JEECG AI在处理PDF文档时,能够更好地保持原始格式和图片,确保转换后的内容与原始文档一致。这个功能在许多AI产品中表现不佳,而JEECG AI在这方面做出了显著的优化
| 功能 | Dify | Jeecg AI |
|------------|------------------|-----------------------------------------|
| AI工作流 | 有 | 有 |
| RAG 管道向量搜索 | 有 | 有 |
| AI模型管理 | 有 | 有 |
| AI应用管理 | 有 | 有 |
| AI知识库 | 有 | 有 |
| 产品方向 | 一款独立的 LLM 应用开发平台 | 低代码与AIGC应用二者结合的平台 |
| 业务集成 | 业务集成能力弱 | 更方便与业务系统集成,调用系统接口和逻辑更加方便 |
| AI业务流 | 侧重AI逻辑流程 | AI流程编排作为低代码的业务引擎,用户可以通过AI流程配置各种业务流和AI流程 |
| 实现语言 | python + react | JAVA + vue3 |
| 上传markdown文档库(支持图片) | 不支持 | 支持 |
| AI对话支持发图和展示图片 | 支持 | 支持 |
### 技术文档
- [AIGC开发文档](https://help.jeecg.com/aigc)
- [安装向量库 pgvector](https://help.jeecg.com/aigc/config)
## 功能特点
- AI流程: 提供强大的AI流程设计器引擎,支持编排 AI 工作过程,满足复杂业务场景,支持画布上构建和实时运行查看 AI流程运行情况。
- AI流程即服务: 通过AI流程编排你需要的智能体,结合AI+自定义开发节点 实现功能性 API,让你瞬间拥有各种智能体API。
- AI助手对话功能: 集成 ChatGPT、Deepseek、智普、私有大模型 等 AI 模型,提供智能对话和生成式 AI 功能,深度与知识库结合提供更精准的知识。
- RAG 功能: 涵盖从文档摄入到检索的所有内容,支持从 PDF、PPT 和其他常见文档格式中提取文本,支持检索增强生成(RAG),将未训练数据与 AI 模型集成,提升智能交互能力。
- AI 知识库: 通过导入文档或已有问答对进行训练,让 AI 模型能根据文档以交互式对话方式回答问题。
- 模型管理:支持对接各种大模型,包括本地私有大模型(Deepseek/ Llama 3 / Qwen 2 等)、国内公共大模型(通义千问 / 腾讯混元 / 字节豆包 / 百度千帆 / 智谱 AI / Kimi 等)和国外公共大模型(OpenAI / Claude / Gemini 等);
- 无缝嵌入:Iframe一键嵌入,支持将AI聊天助手快速嵌入到第三方系统,让系统快速拥有智能问答能力,提高用户满意度。
#### 在线体验
- JeecgBoot演示: https://boot3.jeecg.com
- 敲敲云在线搭建AI知识库:https://app.qiaoqiaoyun.com
## 技术交流
- 开发文档:https://help.jeecg.com/aigc
- QQ群:964611995、716488839(满)
## 功能列表
- AI应用管理(普通应用、高级流程应用)
- AI模型管理
- AI知识库
- AI应用平台(普通、对接AI流程)
- AI流程编排
- AI聊天支持嵌入第三方
- AI向量库对接
## 支持AI模型
| AI大模型 | 支持 |
|---------------| --- |
| DeepSeek | √ |
| ChatGTP | √ |
| Qwq | √ |
| 智库 | √ |
| claude | √ |
| vl模型 | √ |
| 千帆大模型 | √ |
| 通义千问 | √ |
| Ollama本地搭建大模型 | √ |
| 等等。。 | √ |
## AIGC能做什么
AIGC模块是一个基于AI的自动化流程编排工具和聊天应用搭建平台,它可以帮助用户快速生成AI流程接口和聊天应用,提高效率。
以下是一些具体的应用场景和示例:
- 你可能需要一个翻译接口,可以通过AI流程编排搭建出来。
- 你可能需要一个接口转换工具,可以通过AI流程编排搭建出来。(比如:jimureport所需要接口返回格式与你的系统不同,你通过AI接口实现自动转换)
- 你可能需要一个聊天机器人,可以通过AI流程编排搭建出来。
- 你可能需要一个自动化流程,可以通过AI流程编排搭建出来。
- 你可能需要一个自动化处理文件的流程,可以通过AI流程结合python脚本实现操作电脑,文件等。
## AI应用平台功能展示
AI模型列表

选择AI模型,配置你的参数

AI知识库支持手工录入文本,导入pdf\\word\\excel等文档,支持问答对训练


AI流程,提供强大的AI流程设计器引擎,支持编排 AI 工作过程,满足复杂业务场景,支持画布上构建和实时运行查看 AI流程运行情况。

目前支持的节点有:开始、结束、AI知识库节点、AI节点、分类节点、分支节点、JAVA节点、脚本节点、子流程节点、http请求节点、直接回复节点等节点

节点项配置

在线运行看结果

AI应用配置,支持AI流程配置和简单的AI配置

可以关联多个知识库,右侧是AI智能回复,你可以搭建自己的智能体,比如搭建一个 “诗词达人” “翻译助手”

可以将创建的聊天应用,集成到第三方系统中

================================================
FILE: README.en-US.md
================================================
[中文](./README.md) | English

JEECG BOOT AI Low Code Platform
===============
Current version: 3.9.1 (Release date: 2026-01-28)
[](https://github.com/zhangdaiscott/jeecg-boot/blob/master/LICENSE)
[](http://www.jeecg.com)
[](https://github.com/zhangdaiscott/jeecg-boot)
[](https://github.com/zhangdaiscott/jeecg-boot)
[](https://github.com/zhangdaiscott/jeecg-boot)
Project introduction
-----------------------------------
<h3 align="center">Java AI Low Code Platform</h3>
JeecgBoot is a `AI low code platform` based on code `generators`! Front and back end separation architecture SpringBoot2.x, SpringCloud, Ant Design&Vue, Mybatis plus, Shiro, JWT, support for microservices. The powerful code generator makes the front and back end of the code generation, low code development! JeecgBoot leads a new low-code development paradigm (OnlineCoding-> Code Generator -> Manual MERGE) that helps resolve 70% of the duplication in Java projects and makes development more business-focused. Not only can quickly improve efficiency, save research and development costs, but also do not lose flexibility!
JeecgBoot provides a series of low code modules to make Online development truly zero code: Online form development, online reports, report configuration capabilities, online chart design, large screen design, mobile configuration capabilities, form designer, online design flow, process automation configuration, plug-in capabilities (pluggable) and more!
The purpose of JEECG is: simple functions are implemented by OnlineCoding configuration, so that zero code development; Complex functions are generated by code generator and manually Merge to achieve low code development, which ensures both intelligence and flexibility. The implementation of low code development and support flexible coding at the same time, to solve the current low code products are generally not flexible drawbacks!
JEECG Business process: Using workflow to implement and extend the task interface for developing and writing business logic, forms provides a variety of solutions: form designer, online configuration form, and coding form. At the same time, the separation design of process and form (loose coupling) is realized, and the flexible configuration of task nodes is supported, which not only ensures the confidentiality of the company's process, but also reduces the workload of developers.
AI Empowering Low-Code: Currently, JeecgBoot supports AI large models such as ChatGPT and DeepSeek. The latest version defaults to using DeepSeek, which offers faster speed and higher quality. It now provides features such as AI chat assistant, AI table creation, and AI report generation.
Technical support
-----------------------------------
Problems or bugs in use can be found in [Making on the Issues](https://github.com/jeecgboot/JeecgBoot/issues/new?template=bug_report.md)
##### Project description
| Project | description |
|--------------------|------------------------|
| `jeecg-boot` | SpringBoot background source code (support microservices) |
| `jeecgboot-vue3` | Vue3+TS new front-end source code|
| `jeecg-uniapp` | [APP development framework, a code multi terminal adaptation, and support APP, small program, H5](https://github.com/jeecgboot/jeecg-uniapp) |
### Video Introduction
[](https://www.bilibili.com/video/BV1Nk4y1o7Qc)
Download other source code
-----------------------------------
- APP SourceCode:https://github.com/jeecgboot/jeecg-uniapp
For the project
-----------------------------------
Jeecg-Boot AI low code platform can be applied in the development of any J2EE project, especially for SAAS projects, enterprise information management system (MIS), internal office system (OA), enterprise resource planning system (ERP), customer relationship management system (CRM), etc. Its semi-intelligent manual Merge development method, Can significantly improve the development efficiency of more than 70%, greatly reduce the development cost.
Starts the project
-----------------------------------
> Default account password: admin/123456
- [Development Environment setup](https://help.jeecg.com/java/setup/tools)
- [IDEA Quick start(single model)](https://help.jeecg.com/java/setup/idea/startup)
- [Docker Quick start(single model)](https://help.jeecg.com/java/docker/quick)
- [IDEA Quick start(microservices model)](https://help.jeecg.com/java/springcloud/switchcloud/monomer)
- [Docker Quick start(microservices model)](https://help.jeecg.com/java/docker/quickcloud)
Technical documentation
-----------------------------------
- Website: [http://www.jeecg.com](http://www.jeecg.com)
- Demo : [OnlineDemo](http://boot3.jeecg.com) | [APP](http://jeecg.com/appIndex)
- Doc: [DocumentCenter](http://help.jeecg.com) | [AI Config](https://help.jeecg.com/java/ai/aichat)
- Newbie guide: [Quick start](http://www.jeecg.com/doc/quickstart) | [Q&A ](http://www.jeecg.com/doc/qa) | [1 minute experience](https://my.oschina.net/jeecg/blog/3083313)
- QQ group : 964611995、⑩716488839(满)、⑨808791225(满)
Star charts
-----------------------------------
[](https://star-history.com/#jeecgboot/jeecg-boot)
Background directory Structure
-----------------------------------
```
project structure
├─jeecg-boot-parent
│ ├─jeecg-boot-base-core
│ ├─jeecg-module-demo
│ ├─jeecg-module-system
│ │ ├─jeecg-system-biz
│ │ ├─jeecg-system-start system (8080)
│ │ ├─jeecg-system-api
│ │ │ ├─jeecg-system-cloud-api
│ │ │ ├─jeecg-system-local-api
│ ├─jeecg-server-cloud
├─jeecg-cloud-gateway (9999)
├─jeecg-cloud-nacos --Nacos(8848)
├─jeecg-system-cloud-start --System(7001)
├─jeecg-demo-cloud-start --Demo(7002)
├─jeecg-visual
├─jeecg-cloud-monitor -- (9111)
├─jeecg-cloud-xxljob -- (9080)
├─jeecg-cloud-sentinel --sentinel (9000)
├─jeecg-cloud-test
├─jeecg-cloud-test-more
├─jeecg-cloud-test-rabbitmq
├─jeecg-cloud-test-seata
├─jeecg-cloud-test-shardingsphere
```
Why JeecgBoot?
-----------------------------------
* Adopt the latest mainstream front and back separation framework (Springboot+Mybatis+antd), easy to use; Code generator has low dependency, flexible expansion ability, and can quickly realize secondary development;
* Support microservices SpringCloud Alibaba(Nacos, Gateway, Sentinel, Skywalking), and provide switching mechanism to support free switching between single and microservices
* High development efficiency, using code generator, single table, tree list, one-to-many, one-to-one and other data models, add, delete, change and search function one-key generation, menu configuration directly use;
* Code generator provides powerful template mechanism, support custom template, currently provide four sets of style template (single table two sets, tree model one set, one to many three sets)
* Code generator is very intelligent, online business modeling, online configuration, WYSIWYG support 23 kinds of controls, a key to generate front and back end code, greatly improve the development efficiency, no longer worry about repeated work.
* Low code ability: Online online form (without coding, through online configuration of the form, to achieve the addition, deletion, change and check of the form, support single table, tree, one-to-many, one-to-one model, to achieve everyone can code)
* Low code ability: Online online report (without coding, through online configuration, to achieve data report, can quickly extract data, reduce development pressure, to achieve everyone can code)
* Low code ability: Online online chart (without coding, through online configuration, to achieve graphs, bar graphs, data reports, etc., support custom layout, to achieve everyone can code)
* Complete encapsulation of user, role, menu, organization, data dictionary, online scheduled tasks and other basic functions, support access authorization, button permission, data permission and other functions
* Commonly used common package, various tools (scheduled task, SMS interface, email sending,Excel import and export, etc.), basically meeting 80% of project requirements
* Easy Excel import and export, support single table export and one-to-many table mode export, generated code with import and export function
* Integrated simple report tools, image report and data export is very convenient, can be extremely convenient to generate graphical reports, pdf, excel, word and other reports;
* Before and after the separation technology, the page UI style is exquisite, for the commonly used components to do the encapsulation: time, row table control, interception display control, report component, editor and so on
* Query filter: query function automatically generated, the background dynamic spell SQL additional query conditions; Supports multiple matching modes (full matching, fuzzy query, included query, and unmatched query).
* Data permission (fine data permission control, control to row level, list level, form field level, realize different people see different data, different people operate different fields on the same page
* Page verification automatically generated (must be input, digital verification, amount verification, time and space, etc.);
* Support SAAS service model and provide SaaS multi-tenant architecture solution.
* Distributed file service, integration of minio, Ali OSS and other excellent third parties, to provide convenient file upload and management, but also support local storage.
* Mainstream database compatibility, a set of code is fully compatible with Mysql, Postgresql, Oracle, Sqlserver, MariaDB, dream and other mainstream databases.
* Integrate workflow flowable and realize only the configuration of flow direction in the page, which can greatly simplify the development of bpm workflow; Using bpm's process designer to draw the flow direction, a workflow is basically complete with a small amount of java code;
* Low code ability: online process design, using open source Activiti process engine, to achieve online drawing process, custom form, form attachment, business flow
* Multi-data source: its simple way of use, online configuration of data source configuration, convenient to grab data from other data;
* Provide single sign-on CAS integration solution, and complete docking code has been provided in the project
* Low code ability: form designer, support user custom form layout, support single table, one to many forms, support select, radio, checkbox, textarea, date, popup, list, macro and other controls
* Professional interface docking mechanism, unified using restful interface, integrated swagger-ui online interface documentation, Jwt token security verification, convenient client docking
* Interface security mechanism, can be refined control interface authorization, very simple to realize different clients only see their own data control
* Advanced combination query function, online configuration support primary and sub-table associated query, can save the query history
* Provide a variety of system monitoring, real-time tracking system running conditions (monitoring Redis, Tomcat, jvm, server information, request tracking, SQL monitoring)
* Message center (support SMS, email, wechat push, etc.)
* Integrate Websocket message notification mechanism
* Excellent mobile adaptive effect, providing APP release scheme:
* Support multiple languages and provide internationalization solutions;
* Data change record log, can record each change of data content, through the version comparison function to view historical changes
* The platform UI is powerful and mobile adaptation is implemented
* Platform home page style, provide a variety of combination mode, support custom style
* Provide easy to use print plug-in, support Google, Firefox, IE11+ and other browsers
* Rich sample code, provide a lot of learning case reference
* Using maven module development method
* Support dynamic menu routing
* RBAC (Role-Based Access Control) is used for permission control.
* Provide new row edit table JVXETable, easily meet a variety of complex ERP layout, with higher performance, more flexible extension, more powerful functions
Technical Architecture:
-----------------------------------
#### Development Environment
- Language: Java Default Jdk17(support jdk8、jdk21)
- IDE(JAVA) : IDEA (lombok plug-in must be installed)
- IDE(front-end) : Vscode, WebStorm, IDEA
- Dependency management: Maven
- Cache: Redis
- Database: MySQL5.7 + [More Databases](https://my.oschina.net/jeecg/blog/4905722)
#### backend
- Basic framework: Spring Boot 2.7.18
- Microservice framework: Spring Cloud Alibaba 2021.0.6.2
- Persistence layer framework: MybatisPlus 3.5.3.2
- Report tool: JimuReport 1.9.5
- Security framework: Apache Shiro 1.13.0, Jwt 4.5.0
- Microservice technology stack: Spring Cloud Alibaba, Nacos, Gateway, Sentinel, Skywalking
- Database connection pool: Alibaba Druid 1.1.24
- Log printing: logback
- Others: autopoi, fastjson, poi, Swagger-ui, quartz, lombok (simplified code), etc.
#### The front end
- TechnologyStack:`Vue3.0+TypeScript+Vite+AntDesignVue+pinia+echarts`
#### Front-end environment requirements
* `Node.js 、npm 、pnpm`
* pnpm `v9+` is now required.
* Node.js Version suggestion: `v20.15.0`
` ( Since Vite6 Node.js 18/20 + is now required )`
#### Support library
| database | support |
| --- | --- |
| MySQL | √ |
| Oracle11g | √ |
| Sqlserver2017 | √ |
| PostgreSQL | √ |
| MariaDB | √ |
| 达梦 | √ |
| 人大金仓 | √ |
| TiDB | √ |
#### AI Support
| AI Model | Supported |
| --- | --- |
| DeepSeek | √ |
| ChatGPT | √ |
| Qwq | √ |
| 智库 | √ |
| Ollama本地搭建大模型 | √ |
| 等等。。 | √ |
AI Config: https://help.jeecg.com/java/ai/aichat
AI APP: https://help.jeecg.com/aigc
## Microservice solutions
- 1. Service registration and discovery Nacos √
- 2. Nacos √
- 3. Route gateway gateway(Three loading modes) √
- 4. Distributed http feign √
- 5. fuse degrade current limiting Sentinel √
- 6. Distributed files Minio and Alioss √
- 7. Unified permission control
- 8. Service monitoring SpringBootAdmin√
- 9. link tracking Skywalking [reference document](https://help.jeecg.com/java/springcloud/super/skywarking)
- 10. Messaging middleware RabbitMQ √
- 11. Distributed task xxl-job √
- 12. Distributed Transaction Seata
- 13. Distributed log Loki+grafana
- 14. Support docker-compose, k8s, jenkins
- 15. CAS SSO √
- 16. Route traffic limiting √
#### Microservice architecture diagram

### Jeecg Boot product functionality blueprint

### quick start
- Microservice Development: [Monomer upgrade to microservice](https://help.jeecg.com/java/springcloud/switchcloud/monomer)
- [Docker starts the micro-service background](https://help.jeecg.com/java/docker/springcloud)
### Effect of system
##### ChatGPT AI Dialog
> Go to the JeecgBoot background home page and click "AI Assistant" in the middle of the right side of the home page. The AI Assistant dialog screen is displayed.

##### PC
##### AI Model and Application Management



AI Workflow Orchestration

MCP and Tool Management

AI Knowledge Base (Supports various document formats, with excellent markdown compatibility)

AI Toolbox

AI Chat Assistant









##### interactive


##### process Designer




##### min process



##### dashboard Designer






##### report Designer




##### form Designer



##### bigscreen Designer




##### uniapp


##### low app





##### app


##### PAD



##### chart





##### swagger


## donation
If so, buy the author a cup of coffee ☺

================================================
FILE: README.md
================================================
中文 | [English](./README.en-US.md)
JeecgBoot AI低代码平台
===============
当前最新版本: 3.9.1(发布日期:2026-01-28)
[](https://github.com/jeecgboot/JeecgBoot/blob/master/LICENSE)
[](https://jeecg.com)
[](https://my.oschina.net/jeecg)
[](https://github.com/jeecgboot/JeecgBoot)
[](https://github.com/jeecgboot/JeecgBoot)
[](https://github.com/jeecgboot/JeecgBoot)
项目介绍
-----------------------------------
<h3 align="center">企业级AI低代码平台</h3>
JeecgBoot 是一款 AI 驱动的低代码开发平台,以"低代码 + 零代码"双模式覆盖从快速搭建到深度定制的全场景需求。零代码模式下,一句话即可搭建完整业务系统;
代码生成模式下,AI 自动输出前后端代码、建表 SQL 与菜单权限,生成即可运行。
平台内置 AI 聊天助手、知识库、流程编排、MCP 与插件体系,兼容主流大模型,同时支持一句话生成流程图、一句话设计表单、聊天式业务操作等智能能力。
整体遵循"AI 生成 → 在线配置 → 代码生成 → 手工合并"的开发流程,解决 Java 项目中 80% 的重复工作,在大幅提升效率的同时保留充分的灵活性与可控性。
---
采用最新的前后端分离技术栈(Ant Design&Vue3,SpringBoot3,SpringCloud Alibaba,Mybatis-plus,具备强大且颗粒化的权限控制,支持按钮权限和数据权限设置,满足大型业务系统需求。功能涵盖在线表单、表单设计、流程设计、门户设计、报表与大屏设计、OA办公、AI应用、AI知识库、大模型管理、AI流程编排、AI聊天,支持ChatGPT、DeepSeek、Ollama等多种AI大模型。
- `零代码能力:` 国内首个“低代码+零代码”双模驱动的AI智能开发平台!同时支持低代码和零代码; 让开发者用低代码,让业务人员在同一个平台上用零代码!
- `AI驱动开发:` 全新推出AI驱动开发能力,支持一句话生成完整系统,提供零代码模式(一句话搭建系统,无需编写代码)和代码生成模式(基于 jeecg-codegen,自动生成完整代码和建表SQL)两种选择。同时支持一句话自动绘制流程图、设计表单,省去手工绘制繁琐步骤。[实战视频](https://www.bilibili.com/video/BV1KKwTzJEbX/) | [Skills技能清单](https://help.jeecg.com/java/ai/skills/skill-comparison/)
- `AI智能报表:` JimuReport是一款自主研发的强大开源企业级Web报表工具。它通过零编码的拖拽式操作,赋能用户如同搭积木般轻松构建各类复杂报表,全面满足企业数据可视化与分析需求,助力企业级数据产品的高效打造与应用。
- `AI智能大屏:` JimuBI一款自主研发的强大的大屏和仪表盘设计工具。专注数字孪生与数据可视化,支持交互式大屏、仪表盘、门户和移动端,实现“一次开发,多端适配”。 大屏设计类Word风格,支持多屏切换,自由拖拽,轻松打造炫酷动态界面。
- `AI应用平台:` 盖AI应用管理、AI模型管理、智能对话助手、知识库问答、流程编排与设计器、AI建表、MCP插件配置等功能。平台兼容主流大模型,包括ChatGPT、DeepSeek、Ollama、智普、千问等,助力企业高效构建智能化应用,推动低代码开发与AI深度融合。
- `JEECG宗旨是:` JEECG旨在通过OnlineCoding平台实现简单功能的零代码快速搭建,同时针对复杂功能采用代码生成器生成代码并手工合并,打造智能且灵活的低代码开发模式,有效解决了当前低代码产品普遍缺乏灵活性的问题,提升开发效率的同时兼顾系统的扩展性和定制化能力。
- `JEECG业务流程:` JEECG业务流程采用BPM工作流引擎实现业务审批,扩展任务接口供开发人员编写业务逻辑,表单提供表单设计器、在线配置表单和编码表单等多种解决方案。通过流程与表单的分离设计(松耦合)及任务节点的灵活配置,既保障了企业流程的安全性与保密性,又大幅降低了开发人员的工作量。
AI 重磅能力
-----------------------------------
JeecgBoot 全新推出 AI 驱动开发能力,**支持一句话生成完整系统**,极大简化开发流程。
**两种模式,灵活选择:**
| 模式 | 说明 |
|------|------|
| 零代码模式 | 一句话即可搭建系统,无需编写任何代码 |
| 代码生成模式 | 基于 jeecg-codegen,自动生成完整代码和建表 SQL |
**更多 AI 能力:**
- 支持一句话自动绘制流程图,省去手工绘制繁琐步骤
- 支持一句话自动设计表单,快速完成表单搭建
**Skills下载:** [jeecgboot/skills](https://github.com/jeecgboot/skills)
**视频教程:** [JeecgBoot+Skills自然语言编程](https://www.bilibili.com/video/BV1KKwTzJEbX/)
**官方文档:** [Skills技能清单](https://help.jeecg.com/java/ai/skills/skill-comparison/)
AI Skills 技能清单
-----------------------------------
结合 Claude Code 的 AI Skills 技能,JeecgBoot 实现了**自然语言驱动的低代码开发**,一句话即可完成从需求到代码/配置的全流程自动化。[详细文档](https://help.jeecg.com/java/ai/skills/skill-comparison/) | [Skills 下载](https://github.com/jeecgboot/skills)
| Skill | 技能 | 功能介绍 | 是否需要写代码 |
|-------|------|----------|---------------|
| `jeecg-codegen` | AI一句话生成全套代码 | 自然语言需求自动转换为 JeecgBoot 全套 CRUD 代码,包括后端 Java 代码 + 前端 Vue3 代码 + 建表 SQL + 菜单权限 SQL,支持无表生成,甚至生成一套系统全代码 | 否(AI 自动生成源码) |
| `jeecg-onlform` | AI一句话创建 Online 表单 | 自然语言需求自动转换为 JeecgBoot Online 表单,完成从表单配置 → 同步数据库 → 生成菜单 SQL 的全流程自动化 | 否 |
| `jeecg-onlreport` | AI一句话创建 Online 报表 | 将自然语言需求自动转换为 JeecgBoot Online 报表,完成从 SQL 编写 → 字段解析 → 报表配置 → 创建报表的全流程自动化 | 否 |
| `jeecg-desform` | AI一句话画表单 | 自然语言的表单需求描述自动转换为 JeecgBoot 的设计器表单,完成从需求解析 → JSON 生成 → API 创建的全流程自动化,甚至可以创建一套系统 | 否 |
| `jeecg-bpmn` | AI一句话画流程 | 将自然语言的审批流程描述自动转换为 Flowable BPMN 2.0 XML,并通过 API 在 JeecgBoot 系统中自动创建流程 | 否 |
适用项目
-----------------------------------
JeecgBoot低代码平台兼容所有J2EE项目开发,支持信创国产化,特别适用于SAAS、企业信息管理系统(MIS)、内部办公系统(OA)、企业资源计划系统(ERP)、客户关系管理系统(CRM)及AI知识库等场景。其半智能手工Merge开发模式,可显著提升70%以上的开发效率,极大降低开发成本。同时,JeecgBoot还是一款全栈式AI开发平台,助力企业快速构建和部署个性化AI应用。。
**信创兼容说明**
- 操作系统:国产麒麟、银河麒麟等国产系统几乎都是基于 Linux 内核,因此它们具有良好的兼容性。
- 数据库:达梦、人大金仓、TiDB
- 中间件:东方通 TongWeb、TongRDS,宝兰德 AppServer、CacheDB, [信创配置文档](https://help.jeecg.com/java/tongweb-deploy/)
版本说明
-----------------------------------
|下载 | SpringBoot3.5 + Shiro |SpringBoot3.5+ SpringAuthorizationServer | SpringBoot3.5 + Sa-Token | SpringBoot2.7(JDK17/JDK8) |
|------|---------------------------------------------------------|----------------------------|-------------------|--------------------------------------------|
| Github | [`main`](https://github.com/jeecgboot/JeecgBoot) | [`springboot3_sas`](https://github.com/jeecgboot/JeecgBoot/tree/springboot3_sas) 分支 | [`springboot3-satoken`](https://github.com/jeecgboot/JeecgBoot/tree/springboot3-satoken) 分支|[`springboot2`](https://github.com/jeecgboot/JeecgBoot/tree/springboot2) 分支|
| Gitee | [`main`](https://github.com/jeecgboot/JeecgBoot) | [`springboot3_sas`](https://gitee.com/jeecg/JeecgBoot/tree/springboot3_sas) 分支| [`springboot3-satoken`](https://gitee.com/jeecg/JeecgBoot/tree/springboot3-satoken) 分支|[`springboot2`](https://github.com/jeecgboot/JeecgBoot/tree/springboot2) 分支 |
- `jeecg-boot` 是后端JAVA源码项目Springboot3+Shiro+Mybatis+SpringCloudAlibaba(支持单体和微服务切换).
- `jeecgboot-vue3` 是前端VUE3源码项目(vue3+vite6+ts最新技术栈).
- `JeecgUniapp` 是[配套APP框架](https://github.com/jeecgboot/JeecgUniapp) 适配多个终端,支持APP、小程序、H5、鸿蒙、鸿蒙Next.
- `jeecg-boot-starter` 是[jeecg-boot对应的底层封装starter](https://github.com/jeecgboot/jeecg-boot-starter) :微服务启动、xxljob、分布式锁starter、rabbitmq、分布式事务、分库分表shardingsphere等.
- 参考 [文档](https://help.jeecg.com/ui/2dev/mini) 可以删除不需要的demo,制作一个精简版本
启动项目
-----------------------------------
> 默认账号密码: admin/123456
- [开发环境搭建](https://help.jeecg.com/java/setup/tools)
- [IDEA启动前后端(单体模式)](https://help.jeecg.com/java/setup/idea/startup)
- [Docker一键启动(单体模式)](https://help.jeecg.com/java/docker/quick)
- [IDEA启动前后端(微服务方式)](https://help.jeecg.com/java/springcloud/switchcloud/monomer)
- [Docker一键启动(微服务方式)](https://help.jeecg.com/java/docker/quickcloud)
技术文档
-----------------------------------
- 在线演示: [平台演示](https://boot3.jeecg.com) | [APP演示](https://jeecg.com/appIndex)
- 官方网站: [http://www.jeecg.com](http://www.jeecg.com)
- 入门指南: [快速入门](http://www.jeecg.com/doc/quickstart) | [开发文档](https://help.jeecg.com) | [AI应用手册](https://help.jeecg.com/aigc) | [视频教程](http://jeecg.com/doc/video)
- 技术支持: [反馈问题](https://github.com/jeecgboot/JeecgBoot/issues/new?template=bug_report.md) | [低代码体验一分钟](https://jeecg.blog.csdn.net/article/details/106079007)
- QQ交流群 : 964611995、⑩716488839(满)、⑨808791225(满)、其他(满)
AI 应用平台介绍
-----------------------------------
一个全栈式 AI 开发平台,旨在帮助开发者快速构建和部署个性化的 AI 应用。
JeecgBoot平台提供了一套完善的AI应用管理系统模块,是一套类似`Dify`的`AIGC应用开发平台`+`知识库问答`,是一款基于LLM大语言模型AI应用平台和 RAG 的知识库问答系统。
其直观的界面结合了 AI 流程编排、RAG 管道、知识库管理、模型管理、对接向量库、实时运行可观察等,让您可以快速从原型到生产,拥有AI服务能力。
- [详细专题介绍,请点击查看](README-AI.md)
- AI视频介绍
[](https://www.bilibili.com/video/BV1zmd7YFE4w)
为什么选择JeecgBoot?
-----------------------------------
> 界内首款AI低代码开发平台,同时具备AI应用平台和低代码平台,通过AI驱动低代码开发!
> 开源界"小普元"超越传统商业平台。引领低代码开发模式(OnlineCoding-> 代码生成器 -> 手工MERGE),低代码开发同时又支持灵活编码, 可以帮助解决Java项目70%的重复工作,让开发更多关注业务。既能快速提高开发效率,节省成本,同时又不失灵活性。
- 1.提供了一套完善的AI应用管理系统模块,是一套类似`Dify`的`AIGC应用开发平台`+`知识库问答`,是一款基于LLM大语言模型AI应用平台和 RAG 的知识库问答系统。 其直观的界面结合了 AI 流程编排、RAG 管道、知识库管理、模型管理、对接向量库、实时运行可观察等,让您可以快速从原型到生产,拥有AI服务能力
- 2.采用最新主流前后分离框架(Spring Boot3 + MyBatisPlus + Vue3.0 + TypeScript + Vite6 + Ant Design Vue4 )等新技术方案。便于学习容易上手,代码生成器依赖性低,灵活的扩展能力,可快速实现二次开发。
- 3.支持微服务Spring Cloud Alibaba(Nacos、Gateway、Sentinel、Skywalking),提供简易机制,支持单体和微服务自由切换(这样可以满足各类项目需求)。
- 4.开发效率高,支持在线建表和AI建表,提供强大代码生成器,单表、树列表、一对多、一对一等数据模型,增删改查功能一键生成,菜单配置直接使用。
- 5.代码生成器提供强大模板机制,支持自定义模板,目前提供四套风格模板(单表两套、树模型一套、一对多三套)。
- 6.提供强大的报表和大屏可视化工具,支持丰富的数据源连接,能够通过拖拉拽方式快速制作报表、大屏和门户设计;支持多种图表类型:柱形图、折线图、散点图、饼图、环形图、面积图、漏斗图、进度图、仪表盘、雷达图、地图等。
- 7.低代码能力:在线表单(无需编码,通过在线配置表单,实现表单的增删改查,支持单表、树、一对多、一对一等模型,实现人人皆可编码),在线配置零代码开发、所见即所得支持23种类控件。
- 8.低代码能力:在线报表、在线图表(无需编码,通过在线配置方式,实现数据报表和图形报表,可以快速抽取数据,减轻开发压力,实现人人皆可编码)。
- 9.Online支持在线增强开发,提供在线代码编辑器,支持代码高亮、代码提示等功能,支持多种语言(Java、SQL、JavaScript等)。
- 10.封装完善的用户、角色、菜单、组织机构、数据字典、在线定时任务等基础功能,支持访问授权、按钮权限、数据权限等功能。
- 11.前端UI提供丰富的组件库,支持各种常用组件,如表格、树形控件、下拉框、日期选择器等,满足各种复杂的业务需求 [UI组件库文档](https://help.jeecg.com/category/ui%E7%BB%84%E4%BB%B6%E5%BA%93)。
- 12.提供APP配套框架,一份多代码多终端适配,一份代码多终端适配,小程序、H5、安卓、iOS、鸿蒙Next。
- 13.新版APP框架采用Uniapp、Vue3.0、Vite、Wot-design-uni、TypeScript等最新技术栈,包括二次封装组件、路由拦截、请求拦截等功能。实现了与JeecgBoot完美对接:目前已经实现登录、用户信息、通讯录、公告、移动首页、九宫格、聊天、Online表单、仪表盘等功能,提供了丰富的组件。
- 14.提供了一套成熟的AI应用平台功能,从AI模型、知识库到AI应用搭建,助力企业快速落地AI服务,加速智能化升级。
- 15.AI能力:目前JeecgBoot支持AI大模型chatgpt和deepseek,现在最新版默认使用deepseek,速度更快质量更高。目前提供了AI对话助手、AI知识库、AI应用、AI建表、AI报表等功能。
- 16.提供新行编辑表格JVXETable,轻松满足各种复杂ERP布局,拥有更高的性能、更灵活的扩展、更强大的功能。
- 17.平台首页风格,提供多种组合模式,支持自定义风格;支持门户设计,支持自定义首页。
- 18.常用共通封装,各种工具类(定时任务、短信接口、邮件发送、Excel导入导出等),基本满足80%项目需求。
- 19.简易Excel导入导出,支持单表导出和一对多表模式导出,生成的代码自带导入导出功能。
- 20.集成智能报表工具,报表打印、图像报表和数据导出非常方便,可极其方便地生成PDF、Excel、Word等报表。
- 21.采用前后分离技术,页面UI风格精美,针对常用组件做了封装:时间、行表格控件、截取显示控件、报表组件、编辑器等。
- 22.查询过滤器:查询功能自动生成,后台动态拼SQL追加查询条件;支持多种匹配方式(全匹配/模糊查询/包含查询/不匹配查询)。
- 23.数据权限(精细化数据权限控制,控制到行级、列表级、表单字段级,实现不同人看不同数据,不同人对同一个页面操作不同字段)。
- 24.接口安全机制,可细化控制接口授权,非常简便实现不同客户端只看自己数据等控制;也提供了基于AK和SK认证鉴权的OpenAPI功能。
- 25.活跃的社区支持;近年来,随着网络威胁的日益增加,团队在安全和漏洞管理方面积累了丰富的经验,能够为企业提供全面的安全解决方案。
- 26.权限控制采用RBAC(Role-Based Access Control,基于角色的访问控制)。
- 27.页面校验自动生成(必须输入、数字校验、金额校验、时间空间等)。
- 28.支持SaaS服务模式,提供SaaS多租户架构方案。
- 29.分布式文件服务,集成MinIO、阿里OSS等优秀的第三方,提供便捷的文件上传与管理,同时也支持本地存储。
- 30.主流数据库兼容,一套代码完全兼容MySQL、PostgreSQL、Oracle、SQL Server、MariaDB、达梦、人大金仓等主流数据库。
- 31.集成工作流Flowable,并实现了只需在页面配置流程转向,可极大简化BPM工作流的开发;用BPM的流程设计器画出了流程走向,一个工作流基本就完成了,只需写很少量的Java代码。
- 32.低代码能力:在线流程设计,采用开源Flowable流程引擎,实现在线画流程、自定义表单、表单挂靠、业务流转。
- 33.多数据源:极其简易的使用方式,在线配置数据源配置,便捷地从其他数据抓取数据。
- 34.提供单点登录CAS集成方案,项目中已经提供完善的对接代码。
- 35.低代码能力:表单设计器,支持用户自定义表单布局,支持单表、一对多表单,支持select、radio、checkbox、textarea、date、popup、列表、宏等控件。
- 36.专业接口对接机制,统一采用RESTful接口方式,集成Swagger-UI在线接口文档,JWT token安全验证,方便客户端对接。
- 37.高级组合查询功能,在线配置支持主子表关联查询,可保存查询历史。
- 38.提供各种系统监控,实时跟踪系统运行情况(监控Redis、Tomcat、JVM、服务器信息、请求追踪、SQL监控)。
- 39.消息中心(支持短信、邮件、微信推送等);集成WebSocket消息通知机制。
- 40.支持多语言,提供国际化方案。
- 41.数据变更记录日志,可记录数据每次变更内容,通过版本对比功能查看历史变化。
- 42.提供简单易用的打印插件,支持谷歌、火狐、IE11+等各种浏览器。
- 43.后端采用Maven分模块开发方式;前端支持菜单动态路由。
- 44.提供丰富的示例代码,涵盖了常用的业务场景,便于学习和参考。
技术架构
-----------------------------------
#### 前端
- 前端环境要求:Node.js要求`Node 20+` 版本以上、pnpm 要求`9+` 版本以上
` ( Vite 不再支持已结束生命周期(EOL)的 Node.js 18。现在需要使用 Node.js 20.19+ 或 22.12+)`
- 依赖管理:node、npm、pnpm
- 前端IDE建议:IDEA、WebStorm、Vscode
- 采用 Vue3.0+TypeScript+Vite6+Ant-Design-Vue4等新技术方案,包括二次封装组件、utils、hooks、动态菜单、权限校验、按钮级别权限控制等功能
- 最新技术栈:Vue3.0 + TypeScript + Vite6 + ant-design-vue4 + pinia + echarts + unocss + vxe-table + qiankun + es6
#### 后端
- IDE建议: IDEA (必须安装lombok插件 )
- 语言:Java 默认jdk17(jdk21、jdk24)
- 依赖管理:Maven
- 基础框架:Spring Boot 3.5.5
- 微服务框架: Spring Cloud Alibaba 2023.0.3.3
- 持久层框架:MybatisPlus 3.5.12
- 报表工具: JimuReport 2.1.3
- 安全框架:Apache Shiro 2.0.4,Jwt 4.5.0
- 微服务技术栈:Spring Cloud Alibaba、Nacos、Gateway、Sentinel、Skywalking
- 数据库连接池:阿里巴巴Druid 1.2.24
- AI大模型:支持 `ChatGPT` `DeepSeek` `千问`等各种常规模式
- 日志打印:logback
- 缓存:Redis
- 其他:autopoi, fastjson,poi,Swagger-ui,quartz, lombok(简化代码)等。
- 默认提供MySQL5.7+数据库脚本
#### 数据库支持
> jeecgboot平台支持以下数据库,默认我们只提供mysql脚本,其他数据库可以参考[转库文档](https://my.oschina.net/jeecg/blog/4905722)自己转。
| 数据库 | 支持 |
| --- | --- |
| MySQL | √ |
| Oracle11g | √ |
| Sqlserver2017 | √ |
| PostgreSQL | √ |
| MariaDB | √ |
| 达梦 | √ |
| 人大金仓 | √ |
| TiDB | √ |
| kingbase8 | √ |
## 微服务解决方案
- 1、服务注册和发现 Nacos √
- 2、统一配置中心 Nacos √
- 3、路由网关 gateway(三种加载方式) √
- 4、分布式 http feign √
- 5、熔断降级限流 Sentinel √
- 6、分布式文件 Minio、阿里OSS √
- 7、统一权限控制 JWT + Shiro √
- 8、服务监控 SpringBootAdmin√
- 9、链路跟踪 Skywalking [参考文档](https://help.jeecg.com/java/springcloud/super/skywarking)
- 10、消息中间件 RabbitMQ √
- 11、分布式任务 xxl-job √
- 12、分布式事务 Seata
- 13、轻量分布式日志 Loki+grafana套件
- 14、支持 docker-compose、k8s、jenkins
- 15、CAS 单点登录 √
- 16、路由限流 √
### 功能清单
```
├─AI应用平台
│ ├─AI模型管理
│ ├─AI应用管理
│ ├─AI知识库
│ ├─AI流程编排
│ ├─AI聊天助手(支持图片、文件)
│ ├─AI聊天助手支持嵌入第三方、支持移动端
│ ├─MCP插件管理
│ ├─提示词管理
│ ├─支持各种常见模型ChatGPT和DeepSeek、ollama等
├─AI应用门户
│ ├─ Chat2BI 图表生成智能体
│ ├─ AI绘图智能体
│ ├─ 看图说话
│ ├─ 图像识别
│ ├─ 帮我写作
├─工具箱
│ ├─OCR识别
│ ├─AI 海报
│ ├─AI 写作
│ ├─AI 简历
├─AI辅助功能
│ ├─AI建表(Online表单)
│ ├─AI生成报表(Online报表)
│ ├─AI生成大屏
├─系统管理
│ ├─用户管理
│ ├─角色管理
│ ├─菜单管理
│ ├─首页配置
│ ├─权限设置(支持按钮权限、数据权限)
│ ├─表单权限(控制字段禁用、隐藏)
│ ├─部门管理
│ ├─我的部门(二级管理员)
│ └─字典管理
│ └─分类字典
│ └─系统公告
│ └─职务管理
│ └─通讯录
│ ├─多数据源管理
│ ├─白名单管理
│ ├─第三方配置(对接钉钉和企业微信)
│ └─多租户管理(租户管理、租户角色、我的租户、租户默认套餐管理)
├─Online在线开发(低代码)
│ ├─Online在线表单
│ ├─Online代码生成器
│ ├─Online在线报表
│ ├─仪表盘设计器
│ ├─系统编码规则
│ ├─系统校验规则
│ ├─APP版本管理
├─数据可视化
│ ├─报表设计器(支持打印设计)
│ ├─大屏设和仪表盘设计
├─OpenAPI(基于AK和SK认证鉴权)
│ ├─接口管理
│ ├─接口授权
│ ├─接口文档
├─消息中心
│ ├─消息管理
│ ├─模板管理
├─代码生成器(低代码)
│ ├─代码生成器功能(一键生成前后端代码,生成后无需修改直接用,绝对是后端开发福音)
│ ├─代码生成器模板(提供4套模板,分别支持单表和一对多模型,不同风格选择)
│ ├─代码生成器模板(生成代码,自带excel导入导出)
│ ├─查询过滤器(查询逻辑无需编码,系统根据页面配置自动生成)
│ ├─高级查询器(弹窗自动组合查询条件)
│ ├─Excel导入导出工具集成(支持单表,一对多 导入导出)
│ ├─平台移动自适应支持
│ ├─提供新版uniapp3的代码生成器模板
├─系统监控
│ ├─Gateway路由网关
│ ├─基于AK和SK认证鉴权OpenAPI功能
│ ├─定时任务
│ ├─数据源管理
│ ├─性能扫描监控
│ │ ├─监控 Redis
│ │ ├─Tomcat
│ │ ├─jvm
│ │ ├─服务器信息
│ │ ├─请求追踪
│ │ ├─磁盘监控
│ ├─系统日志
│ ├─消息中心(支持短信、邮件、微信推送等等)
│ ├─数据日志(记录数据快照,可对比快照,查看数据变更情况)
│ ├─SQL监控
│ ├─在线用户
│─报表示例
│ ├─曲线图
│ └─饼状图
│ └─柱状图
│ └─折线图
│ └─面积图
│ └─雷达图
│ └─仪表图
│ └─进度条
│ └─排名列表
│ └─等等
│─大屏模板
│ ├─作战指挥中心大屏
│ └─物流服务中心大屏
│─常用示例
│ ├─自定义组件
│ ├─对象存储(对接阿里云)
│ ├─JVXETable示例(各种复杂ERP布局示例)
│ ├─单表模型例子
│ └─一对多模型例子
│ └─打印例子
│ └─一对多TAB例子
│ └─内嵌table例子
│ └─常用选择组件
│ └─异步树table
│ └─接口模拟测试
│ └─表格合计示例
│ └─异步树列表示例
│ └─一对多JEditable
│ └─JEditable组件示例
│ └─图片拖拽排序
│ └─图片翻页
│ └─图片预览
│ └─PDF预览
│ └─分屏功能
│─封装通用组件
│ ├─行编辑表格JEditableTable
│ └─省略显示组件
│ └─时间控件
│ └─高级查询
│ └─用户选择组件
│ └─报表组件封装
│ └─字典组件
│ └─下拉多选组件
│ └─选人组件
│ └─选部门组件
│ └─通过部门选人组件
│ └─封装曲线、柱状图、饼状图、折线图等等报表的组件(经过封装,使用简单)
│ └─在线code编辑器
│ └─上传文件组件
│ └─验证码组件
│ └─树列表组件
│ └─表单禁用组件
│ └─等等
│─更多页面模板
│ ├─各种高级表单
│ ├─各种列表效果
│ └─结果页面
│ └─异常页面
│ └─个人页面
├─高级功能
│ ├─提供单点登录CAS集成方案
│ ├─提供APP发布方案
│ ├─集成Websocket消息通知机制
│ ├─支持electron桌面应用打包(支持windows、linux、macOS三大平台)
│ ├─docker容器支持
│ ├─提供移动APP框架及源码(Uniapp3版本)支持H5、小程序、APP、鸿蒙Next
│ ├─提供移动APP低代码设计(Online表单、仪表盘)
```
### 系统效果
##### AI模型与应用管理



AI流程编排

MCP和工具管理

AI知识库(支持各种文档格式,尤其markdown适配很好)

AI工具箱

AI聊天助手



AI绘图

AI写文章

##### PC端






##### 系统交互


##### 仪表盘设计器






##### 报表设计器




##### 手机端


##### PAD端



##### 图表示例





##### 在线接口文档


##### UNIAPP效果


##### 大屏设计器




#### 微服务架构图

### Jeecg Boot 产品功能蓝图

#### 系统功能架构图

## 捐赠
如果觉得还不错,请作者喝杯咖啡吧 ☺

================================================
FILE: check_jeecgenv.py
================================================
import os
import subprocess
import re
import sys
from typing import Tuple, Optional
def run_command(cmd: str) -> Tuple[int, str]:
"""执行命令并返回退出码和输出"""
try:
result = subprocess.run(cmd, shell=True, check=False,
stdout=subprocess.PIPE, stderr=subprocess.PIPE,
text=True)
return result.returncode, result.stdout.strip()
except Exception as e:
return -1, str(e)
def check_java() -> bool:
"""检查JDK 17+是否安装"""
print("\n检查JDK 17+...")
rc, output = run_command("java -version 2>&1")
if rc != 0:
print("❌ 未检测到Java,请安装JDK 17+")
return False
version_pattern = r'"(\d+)(?:\.\d+)*(?:_\d+)?'
match = re.search(version_pattern, output)
if not match:
print("❌ 无法解析Java版本")
return False
version = int(match.group(1))
if version >= 17:
print(f"✅ JDK版本 {version} (满足17+要求)")
return True
else:
print(f"❌ JDK版本 {version} (需要17+)")
return False
def check_maven() -> bool:
"""检查Maven是否安装"""
print("\n检查Maven...")
rc, output = run_command("mvn -v")
if rc == 0:
print("✅ Maven已安装")
return True
else:
print("❌ Maven未安装")
return False
def check_node() -> bool:
"""检查Node.js 20+是否安装"""
print("\n检查Node.js 20+...")
rc, output = run_command("node -v")
if rc != 0:
print("❌ Node.js未安装")
return False
version_pattern = r'v(\d+)\.\d+\.\d+'
match = re.search(version_pattern, output)
if not match:
print("❌ 无法解析Node.js版本")
return False
version = int(match.group(1))
if version >= 20:
print(f"✅ Node.js版本 {version} (满足20+要求)")
return True
else:
print(f"❌ Node.js版本 {version} (需要20+)")
return False
def check_pnpm() -> bool:
"""检查PNPM 9+是否安装"""
print("\n检查PNPM 9+...")
rc, output = run_command("pnpm -v")
if rc != 0:
print("❌ PNPM未安装")
return False
try:
# 处理可能的版本号格式:v9.0.0 或 9.0.0 或 9
version_str = output.strip().lstrip('v').split('.')[0]
version = int(version_str)
if version >= 9:
print(f"✅ PNPM版本 {output.strip()} (满足9+要求)")
return True
else:
print(f"❌ PNPM版本 {output.strip()} (需要9+)")
return False
except (ValueError, IndexError):
print(f"❌ 无法解析PNPM版本: {output.strip()}")
return False
def check_redis_connection() -> bool:
"""检查Redis连接"""
print("\n检查Redis连接...")
print("⚠️ 请确保已配置Redis连接信息并在jeecg-boot项目中正确配置")
print("⚠️ 此检查需要根据实际项目配置进行验证")
print("⚠️ 配置文件位置: jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml")
return True
def check_mysql_connection() -> bool:
"""检查MySQL连接"""
print("\n检查MySQL连接...")
print("⚠️ 请确保已配置MySQL连接信息并在jeecg-boot项目中正确配置")
print("⚠️ 此检查需要根据实际项目配置进行验证")
print("⚠️ 配置文件位置: jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml")
return True
def print_mysql_config():
"""打印MySQL配置并提示需要修改的位置"""
print("\nMySQL配置参考 (请检查以下配置是否正确):")
print("""
spring.datasource.dynamic.datasource:
master:
url: jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
username: root # ← 可能需要修改
password: root # ← 可能需要修改
driver-class-name: com.mysql.cj.jdbc.Driver
""")
def check_ai_vector_db() -> bool:
"""检查AI向量库(pgvector)配置"""
print("\n检查AI知识库向量库配置...")
print("⚠️ 如果需要使用AI知识库功能,请配置pgvector向量库")
print("⚠️ 配置文件位置: jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml")
print("\n配置参考:")
print("""
jeecg.ai-rag:
embed-store:
host: 127.0.0.1 # ← 可能需要修改
port: 5432 # ← 可能需要修改
database: postgres # ← 可能需要修改
user: postgres # ← 可能需要修改
password: postgres # ← 可能需要修改
table: embeddings # ← 可能需要修改
""")
print("⚠️ 注意: 请确保已安装PostgreSQL并添加pgvector扩展!docker安装参考:https://help.jeecg.com/aigc/config")
return True
def check_ai_config() -> bool:
"""检查AI账号配置"""
print("\n检查AI功能配置...")
print("⚠️ 如果需要使用AI聊天功能,请配置AI账号信息")
print("⚠️ 配置文件位置: jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml")
print("\n配置参考:")
print("""
jeecg:
# AI集成
ai-chat:
enabled: true # ← 启用AI功能
model: deepseek-chat # ← 模型名称
apiKey: ?? # ← 必须修改为您的API Key
apiHost: https://api.deepseek.com/v1 # ← API地址
timeout: 60 # ← 超时时间(秒)
""")
print("⚠️ 注意: 请确保已获取有效的API Key并正确配置!AI账号注册获取参考: https://help.jeecg.com/java/deepSeekSupport")
return True
def print_redis_config():
"""打印Redis配置并提示需要修改的位置"""
print("\nRedis配置参考 (请检查以下配置是否正确):")
print("""
spring.redis:
database: 0
host: 127.0.0.1 # ← 可能需要修改
port: 6379 # ← 可能需要修改
password: '' # ← 如果需要密码请修改
""")
def main():
print("="*50)
print("JeecgBoot 运行环境检查脚本")
print("="*50)
all_checks_passed = True
# 检查各项依赖
if not check_java():
all_checks_passed = False
if not check_maven():
all_checks_passed = False
if not check_node():
all_checks_passed = False
if not check_pnpm():
all_checks_passed = False
# 数据库提示
print("="*50)
check_redis_connection()
print_redis_config()
print("="*50)
check_mysql_connection()
print_mysql_config()
print("="*50)
check_ai_config()
print("="*50)
check_ai_vector_db()
print("\n" + "="*50)
if all_checks_passed:
print("✅ 所有基础环境检查通过")
print("⚠️ 注意: 请确保Redis和MySQL、AI账号、向量库pgvector 已正确配置并连接成功")
else:
print("❌ 部分环境检查未通过,请根据上述提示解决问题")
print("="*50)
if __name__ == "__main__":
main()
input("\n按回车键退出...") # 等待用户输入
================================================
FILE: docker-compose-cloud.yml
================================================
version: '2'
services:
jeecg-boot-mysql:
build:
context: ./jeecg-boot/db
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_ROOT_HOST: '%'
TZ: Asia/Shanghai
restart: always
container_name: jeecg-boot-mysql
image: jeecg-boot-mysql
command:
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
--max_allowed_packet=128M
--default-authentication-plugin=caching_sha2_password
ports:
- 13306:3306
networks:
- jeecg-boot
jeecg-boot-redis:
image: registry.cn-hangzhou.aliyuncs.com/jeecgdocker/redis:5.0
# ports:
# - 6379:6379
restart: always
hostname: jeecg-boot-redis
container_name: jeecg-boot-redis
networks:
- jeecg-boot
jeecg-boot-pgvector:
image: registry.cn-hangzhou.aliyuncs.com/jeecgdocker/pgvector
container_name: jeecg-boot-pgvector
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: vector_db
ports:
- 5432:5432
restart: always
networks:
- jeecg-boot
jeecg-boot-nacos:
restart: always
build:
context: ./jeecg-boot/jeecg-server-cloud/jeecg-cloud-nacos
ports:
- 8848:8848
container_name: jeecg-boot-nacos
depends_on:
- jeecg-boot-mysql
hostname: jeecg-boot-nacos
networks:
- jeecg-boot
jeecg-boot-system:
depends_on:
- jeecg-boot-nacos
build:
context: ./jeecg-boot/jeecg-server-cloud/jeecg-system-cloud-start
container_name: jeecg-system-start
hostname: jeecg-boot-system
restart: on-failure
environment:
- TZ=Asia/Shanghai
networks:
- jeecg-boot
jeecg-boot-demo:
depends_on:
- jeecg-boot-nacos
build:
context: ./jeecg-boot/jeecg-server-cloud/jeecg-demo-cloud-start
container_name: jeecg-demo-start
hostname: jeecg-boot-demo
restart: on-failure
environment:
- TZ=Asia/Shanghai
networks:
- jeecg-boot
jeecg-boot-gateway:
restart: on-failure
build:
context: ./jeecg-boot/jeecg-server-cloud/jeecg-cloud-gateway
ports:
- 9999:9999
depends_on:
- jeecg-boot-nacos
- jeecg-boot-system
container_name: jeecg-boot-gateway
hostname: jeecg-boot-gateway
networks:
- jeecg-boot
# jeecg-boot-rabbitmq:
# image: rabbitmq:3.7.7-management
# ports:
# - 5672:5672
# - 15672:15672
# restart: always
# container_name: jeecg-boot-rabbitmq
# hostname: jeecg-boot-rabbitmq
# environment:
# RABBITMQ_DEFAULT_USER: guest
# RABBITMQ_DEFAULT_PASS: guest
jeecg-boot-sentinel:
restart: on-failure
build:
context: ./jeecg-boot/jeecg-server-cloud/jeecg-visual/jeecg-cloud-sentinel
ports:
- 9000:9000
depends_on:
- jeecg-boot-nacos
- jeecg-boot-demo
- jeecg-boot-system
- jeecg-boot-gateway
container_name: jeecg-boot-sentinel
hostname: jeecg-boot-sentinel
networks:
- jeecg-boot
jeecg-boot-xxljob:
build:
context: ./jeecg-boot/jeecg-server-cloud/jeecg-visual/jeecg-cloud-xxljob
ports:
- 9080:9080
container_name: jeecg-boot-xxljob
hostname: jeecg-boot-xxljob
networks:
- jeecg-boot
jeecg-vue:
build:
context: ./jeecgboot-vue3
dockerfile: Dockerfile.cloud
container_name: jeecgboot-vue3-nginx
image: jeecgboot-vue3
depends_on:
- jeecg-boot-system
networks:
- jeecg-boot
ports:
- 80:80
networks:
jeecg-boot:
name: jeecg_boot
================================================
FILE: docker-compose.yml
================================================
version: '2'
services:
jeecg-boot-mysql:
build:
context: ./jeecg-boot/db
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_ROOT_HOST: '%'
TZ: Asia/Shanghai
restart: always
container_name: jeecg-boot-mysql
image: jeecg-boot-mysql
command:
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
--max_allowed_packet=128M
--default-authentication-plugin=caching_sha2_password
ports:
- 13306:3306
networks:
- jeecg-boot
jeecg-boot-redis:
image: registry.cn-hangzhou.aliyuncs.com/jeecgdocker/redis:5.0
# ports:
# - 3792:6379
restart: always
hostname: jeecg-boot-redis
container_name: jeecg-boot-redis
networks:
- jeecg-boot
jeecg-boot-pgvector:
image: registry.cn-hangzhou.aliyuncs.com/jeecgdocker/pgvector
container_name: jeecg-boot-pgvector
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: vector_db
ports:
- 5432:5432
restart: always
networks:
- jeecg-boot
jeecg-boot-system:
build:
context: ./jeecg-boot/jeecg-module-system/jeecg-system-start
restart: on-failure
depends_on:
- jeecg-boot-mysql
- jeecg-boot-redis
container_name: jeecg-boot-system
image: jeecg-boot-system
hostname: jeecg-boot-system
ports:
- 8080:8080
networks:
- jeecg-boot
jeecg-vue:
build:
context: ./jeecgboot-vue3
container_name: jeecgboot-vue3-nginx
image: jeecgboot-vue3
depends_on:
- jeecg-boot-system
networks:
- jeecg-boot
ports:
- 80:80
networks:
jeecg-boot:
name: jeecg_boot
================================================
FILE: jeecg-boot/.gitignore
================================================
## ide
**/.idea
*.iml
rebel.xml
## backend
**/target
**/logs
## front
**/*.lock
os_del.cmd
os_del_doc.cmd
.svn
derby.log
================================================
FILE: jeecg-boot/LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright (c) 2019 <a href="http://www.jeecg.com">Jeecg Boot</a> All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
In any case, you must not make any such use of this software as to develop software which may be considered competitive with this software.
JeecgBoot 是由 北京国炬信息技术有限公司 发行的软件。 总部位于北京,地址:中国·北京·朝阳区科荟前街1号院奥林佳泰大厦。邮箱:jeecgos@163.com
本软件受适用的国家软件著作权法(包括国际条约)和开源协议 双重保护许可。
开源协议中文释意如下:
1.JeecgBoot开源版本无任何限制,在遵循本开源协议条款下,允许商用使用,不会造成侵权行为。
2.允许基于本平台软件开展业务系统开发。
3.在任何情况下,您不得使用本软件开发可能被认为与本软件竞争的软件。
最终解释权归:http://www.jeecg.com
================================================
FILE: jeecg-boot/README.md
================================================
JeecgBoot 低代码开发平台
===============
当前最新版本: 3.9.1(发布日期: 2026-01-22)
[](https://github.com/zhangdaiscott/jeecg-boot/blob/master/LICENSE)
[](http://jeecg.com/aboutusIndex)
[](https://github.com/zhangdaiscott/jeecg-boot)
[](https://github.com/zhangdaiscott/jeecg-boot)
[](https://github.com/zhangdaiscott/jeecg-boot)
项目介绍
-----------------------------------
<h3 align="center">企业级AI低代码平台</h3>
JeecgBoot 是一款基于BPM流程和代码生成的AI低代码平台,助力企业快速实现低代码开发和构建AI应用。
采用前后端分离架构(Ant Design&Vue3,SpringBoot3,SpringCloud Alibaba,Mybatis-plus),强大代码生成器实现前后端一键生成,无需手写代码。
平台引领AI低代码开发模式:AI生成→在线编码→代码生成→手工合并,解决Java项目80%重复工作,提升效率,节省成本,兼顾灵活性。
具备强大且颗粒化的权限控制,支持按钮权限和数据权限设置,满足大型业务系统需求。功能涵盖在线表单、表单设计、流程设计、门户设计、报表与大屏设计、OA办公、AI应用、AI知识库、大模型管理、AI流程编排、AI聊天,支持ChatGPT、DeepSeek、Ollama等多种AI大模型。
`AI赋能报表:` 积木报表是一款自主研发的强大开源企业级Web报表与大屏工具。它通过零编码的拖拽式操作,赋能用户如同搭积木般轻松构建各类复杂报表和数据大屏,全面满足企业数据可视化与分析需求,助力企业级数据产品的高效打造与应用。
`AI赋能低代码:` 提供完善成熟的AI应用平台,涵盖AI应用管理、AI模型管理、智能对话助手、知识库问答、流程编排与设计器、AI建表等多项功能。平台兼容多种主流大模型,包括ChatGPT、DeepSeek、Ollama、智普、千问等,助力企业高效构建智能化应用,推动低代码开发与AI深度融合。
`AI驱动开发:` 全新推出AI驱动开发能力,支持一句话生成完整系统,提供零代码模式(一句话搭建系统,无需编写代码)和代码生成模式(基于 jeecg-codegen,自动生成完整代码和建表SQL)两种选择。同时支持一句话自动绘制流程图、设计表单,省去手工绘制繁琐步骤。[B站视频演示](https://www.bilibili.com/video/BV1KKwTzJEbX/) | [技能对比与使用说明](https://help.jeecg.com/java/ai/skills/skill-comparison/)
`JEECG宗旨是:` JEECG旨在通过OnlineCoding平台实现简单功能的零代码快速搭建,同时针对复杂功能采用代码生成器生成代码并手工合并,打造智能且灵活的低代码开发模式,有效解决了当前低代码产品普遍缺乏灵活性的问题,提升开发效率的同时兼顾系统的扩展性和定制化能力。
`JEECG业务流程:` JEECG业务流程采用BPM工作流引擎实现业务审批,扩展任务接口供开发人员编写业务逻辑,表单提供表单设计器、在线配置表单和编码表单等多种解决方案。通过流程与表单的分离设计(松耦合)及任务节点的灵活配置,既保障了企业流程的安全性与保密性,又大幅降低了开发人员的工作量。
AI 重磅能力
-----------------------------------
JeecgBoot 全新推出 AI 驱动开发能力,**支持一句话生成完整系统**,极大简化开发流程。
**两种模式,灵活选择:**
| 模式 | 说明 |
|------|------|
| 零代码模式 | 一句话即可搭建系统,无需编写任何代码 |
| 代码生成模式 | 基于 jeecg-codegen,自动生成完整代码和建表 SQL |
**更多 AI 能力:**
- 支持一句话自动绘制流程图,省去手工绘制繁琐步骤
- 支持一句话自动设计表单,快速完成表单搭建
**视频演示:** [B站观看视频](https://www.bilibili.com/video/BV1KKwTzJEbX/)
**官方文档:** [技能对比与使用说明](https://help.jeecg.com/java/ai/skills/skill-comparison/)
AI Skills 技能清单
-----------------------------------
结合 Claude Code 的 AI Skills 技能,JeecgBoot 实现了**自然语言驱动的低代码开发**,一句话即可完成从需求到代码/配置的全流程自动化。[详细文档](https://help.jeecg.com/java/ai/skills/skill-comparison/) | [Skills 下载](https://github.com/jeecgboot/skills)
| Skill | 技能 | 功能介绍 | 是否需要写代码 |
|-------|------|----------|---------------|
| `jeecg-codegen` | AI一句话生成全套代码 | 自然语言需求自动转换为 JeecgBoot 全套 CRUD 代码,包括后端 Java 代码 + 前端 Vue3 代码 + 建表 SQL + 菜单权限 SQL,支持无表生成,甚至生成一套系统全代码 | 否(AI 自动生成源码) |
| `jeecg-onlform` | AI一句话创建 Online 表单 | 自然语言需求自动转换为 JeecgBoot Online 表单,完成从表单配置 → 同步数据库 → 生成菜单 SQL 的全流程自动化 | 否 |
| `jeecg-onlreport` | AI一句话创建 Online 报表 | 将自然语言需求自动转换为 JeecgBoot Online 报表,完成从 SQL 编写 → 字段解析 → 报表配置 → 创建报表的全流程自动化 | 否 |
| `jeecg-desform` | AI一句话画表单 | 自然语言的表单需求描述自动转换为 JeecgBoot 的设计器表单,完成从需求解析 → JSON 生成 → API 创建的全流程自动化,甚至可以创建一套系统 | 否 |
| `jeecg-bpmn` | AI一句话画流程 | 将自然语言的审批流程描述自动转换为 Flowable BPMN 2.0 XML,并通过 API 在 JeecgBoot 系统中自动创建流程 | 否 |
适用项目
-----------------------------------
JeecgBoot低代码平台兼容所有J2EE项目开发,支持信创国产化,特别适用于SAAS、企业信息管理系统(MIS)、内部办公系统(OA)、企业资源计划系统(ERP)、客户关系管理系统(CRM)及AI知识库等场景。其半智能手工Merge开发模式,可显著提升70%以上的开发效率,极大降低开发成本。同时,JeecgBoot还是一款全栈式AI开发平台,助力企业快速构建和部署个性化AI应用。。
**信创兼容说明**
- 操作系统:国产麒麟、银河麒麟等国产系统几乎都是基于 Linux 内核,因此它们具有良好的兼容性。
- 数据库:达梦、人大金仓、TiDB
- 中间件:东方通 TongWeb、TongRDS,宝兰德 AppServer、CacheDB, [信创配置文档](https://help.jeecg.com/java/tongweb-deploy/)
#### 项目说明
| 项目名 | 说明 |
|------------------|--------------------------------------------------------------------|
| `jeecg-boot` | 后端源码JAVA(SpringBoot3微服务架构) |
| `jeecgboot-vue3` | 前端源码VUE3(vue3+vite6+antd4+ts最新技术栈) |
启动项目
-----------------------------------
> 默认账号密码: admin/123456
- [开发环境搭建](https://help.jeecg.com/java/setup/tools)
- [IDEA启动前后端(单体模式)](https://help.jeecg.com/java/setup/idea/startup)
- [Docker一键启动(单体模式)](https://help.jeecg.com/java/docker/quick)
- [IDEA启动前后端(微服务方式)](https://help.jeecg.com/java/springcloud/switchcloud/monomer)
- [Docker一键启动(微服务方式)](https://help.jeecg.com/java/docker/quickcloud)
技术文档
-----------------------------------
- 官方网站: [http://www.jeecg.com](http://www.jeecg.com)
- 在线演示: [平台演示](https://boot3.jeecg.com) | [APP演示](https://jeecg.com/appIndex)
- 入门指南: [快速入门](http://www.jeecg.com/doc/quickstart) | [代码生成使用](https://help.jeecg.com/java/codegen/online) | [开发文档](https://help.jeecg.com) | [AI应用手册](https://help.jeecg.com/aigc) | [视频教程](http://jeecg.com/doc/video)
- 技术支持: [反馈问题](https://github.com/jeecgboot/JeecgBoot/issues/new?template=bug_report.md) | [低代码体验一分钟](https://jeecg.blog.csdn.net/article/details/106079007)
- QQ交流群 : 964611995、⑩716488839(满)、⑨808791225(满)、其他(满)
AI 应用平台介绍
-----------------------------------
一个全栈式 AI 开发平台,旨在帮助开发者快速构建和部署个性化的 AI 应用。
JeecgBoot平台提供了一套完善的AI应用管理系统模块,是一套类似`Dify`的`AIGC应用开发平台`+`知识库问答`,是一款基于LLM大语言模型AI应用平台和 RAG 的知识库问答系统。
其直观的界面结合了 AI 流程编排、RAG 管道、知识库管理、模型管理、对接向量库、实时运行可观察等,让您可以快速从原型到生产,拥有AI服务能力。
- [详细专题介绍,请点击查看](README-AI.md)
- AI视频介绍
[](https://www.bilibili.com/video/BV1zmd7YFE4w)
为什么选择JeecgBoot?
-----------------------------------
- 1.采用最新主流前后分离框架(Spring Boot3 + MyBatis + Shiro/SpringAuthorizationServer + Ant Design4 + Vue3),容易上手;代码生成器依赖性低,灵活的扩展能力,可快速实现二次开发。
- 2.前端大版本换代,最新版采用 Vue3.0 + TypeScript + Vite6 + Ant Design Vue4 等新技术方案。
- 3.支持微服务Spring Cloud Alibaba(Nacos、Gateway、Sentinel、Skywalking),提供简易机制,支持单体和微服务自由切换(这样可以满足各类项目需求)。
- 4.开发效率高,支持在线建表和AI建表,提供强大代码生成器,单表、树列表、一对多、一对一等数据模型,增删改查功能一键生成,菜单配置直接使用。
- 5.代码生成器提供强大模板机制,支持自定义模板,目前提供四套风格模板(单表两套、树模型一套、一对多三套)。
- 6.提供强大的报表和大屏可视化工具,支持丰富的数据源连接,能够通过拖拉拽方式快速制作报表、大屏和门户设计;支持多种图表类型:柱形图、折线图、散点图、饼图、环形图、面积图、漏斗图、进度图、仪表盘、雷达图、地图等。
- 7.低代码能力:在线表单(无需编码,通过在线配置表单,实现表单的增删改查,支持单表、树、一对多、一对一等模型,实现人人皆可编码),在线配置零代码开发、所见即所得支持23种类控件。
- 8.低代码能力:在线报表、在线图表(无需编码,通过在线配置方式,实现数据报表和图形报表,可以快速抽取数据,减轻开发压力,实现人人皆可编码)。
- 9.Online支持在线增强开发,提供在线代码编辑器,支持代码高亮、代码提示等功能,支持多种语言(Java、SQL、JavaScript等)。
- 10.封装完善的用户、角色、菜单、组织机构、数据字典、在线定时任务等基础功能,支持访问授权、按钮权限、数据权限等功能。
- 11.前端UI提供丰富的组件库,支持各种常用组件,如表格、树形控件、下拉框、日期选择器等,满足各种复杂的业务需求 [UI组件库文档](https://help.jeecg.com/category/ui%E7%BB%84%E4%BB%B6%E5%BA%93)。
- 12.提供APP配套框架,一份多代码多终端适配,一份代码多终端适配,小程序、H5、安卓、iOS、鸿蒙Next。
- 13.新版APP框架采用Uniapp、Vue3.0、Vite、Wot-design-uni、TypeScript等最新技术栈,包括二次封装组件、路由拦截、请求拦截等功能。实现了与JeecgBoot完美对接:目前已经实现登录、用户信息、通讯录、公告、移动首页、九宫格、聊天、Online表单、仪表盘等功能,提供了丰富的组件。
- 14.提供了一套成熟的AI应用平台功能,从AI模型、知识库到AI应用搭建,助力企业快速落地AI服务,加速智能化升级。
- 15.AI能力:目前JeecgBoot支持AI大模型chatgpt和deepseek,现在最新版默认使用deepseek,速度更快质量更高。目前提供了AI对话助手、AI知识库、AI应用、AI建表、AI报表等功能。
- 16.提供新行编辑表格JVXETable,轻松满足各种复杂ERP布局,拥有更高的性能、更灵活的扩展、更强大的功能。
- 17.平台首页风格,提供多种组合模式,支持自定义风格;支持门户设计,支持自定义首页。
- 18.常用共通封装,各种工具类(定时任务、短信接口、邮件发送、Excel导入导出等),基本满足80%项目需求。
- 19.简易Excel导入导出,支持单表导出和一对多表模式导出,生成的代码自带导入导出功能。
- 20.集成智能报表工具,报表打印、图像报表和数据导出非常方便,可极其方便地生成PDF、Excel、Word等报表。
- 21.采用前后分离技术,页面UI风格精美,针对常用组件做了封装:时间、行表格控件、截取显示控件、报表组件、编辑器等。
- 22.查询过滤器:查询功能自动生成,后台动态拼SQL追加查询条件;支持多种匹配方式(全匹配/模糊查询/包含查询/不匹配查询)。
- 23.数据权限(精细化数据权限控制,控制到行级、列表级、表单字段级,实现不同人看不同数据,不同人对同一个页面操作不同字段)。
- 24.接口安全机制,可细化控制接口授权,非常简便实现不同客户端只看自己数据等控制;也提供了基于AK和SK认证鉴权的OpenAPI功能。
- 25.活跃的社区支持;近年来,随着网络威胁的日益增加,团队在安全和漏洞管理方面积累了丰富的经验,能够为企业提供全面的安全解决方案。
- 26.权限控制采用RBAC(Role-Based Access Control,基于角色的访问控制)。
- 27.页面校验自动生成(必须输入、数字校验、金额校验、时间空间等)。
- 28.支持SaaS服务模式,提供SaaS多租户架构方案。
- 29.分布式文件服务,集成MinIO、阿里OSS等优秀的第三方,提供便捷的文件上传与管理,同时也支持本地存储。
- 30.主流数据库兼容,一套代码完全兼容MySQL、PostgreSQL、Oracle、SQL Server、MariaDB、达梦、人大金仓等主流数据库。
- 31.集成工作流Flowable,并实现了只需在页面配置流程转向,可极大简化BPM工作流的开发;用BPM的流程设计器画出了流程走向,一个工作流基本就完成了,只需写很少量的Java代码。
- 32.低代码能力:在线流程设计,采用开源Flowable流程引擎,实现在线画流程、自定义表单、表单挂靠、业务流转。
- 33.多数据源:极其简易的使用方式,在线配置数据源配置,便捷地从其他数据抓取数据。
- 34.提供单点登录CAS集成方案,项目中已经提供完善的对接代码。
- 35.低代码能力:表单设计器,支持用户自定义表单布局,支持单表、一对多表单,支持select、radio、checkbox、textarea、date、popup、列表、宏等控件。
- 36.专业接口对接机制,统一采用RESTful接口方式,集成Swagger-UI在线接口文档,JWT token安全验证,方便客户端对接。
- 37.高级组合查询功能,在线配置支持主子表关联查询,可保存查询历史。
- 38.提供各种系统监控,实时跟踪系统运行情况(监控Redis、Tomcat、JVM、服务器信息、请求追踪、SQL监控)。
- 39.消息中心(支持短信、邮件、微信推送等);集成WebSocket消息通知机制。
- 40.支持多语言,提供国际化方案。
- 41.数据变更记录日志,可记录数据每次变更内容,通过版本对比功能查看历史变化。
- 42.提供简单易用的打印插件,支持谷歌、火狐、IE11+等各种浏览器。
- 43.后端采用Maven分模块开发方式;前端支持菜单动态路由。
- 44.提供丰富的示例代码,涵盖了常用的业务场景,便于学习和参考。
技术架构:
-----------------------------------
#### 后端
- IDE建议: IDEA (必须安装lombok插件 )
- 语言:Java 默认jdk17(jdk21、jdk24)
- 依赖管理:Maven
- 基础框架:Spring Boot 3.5.5
- 微服务框架: Spring Cloud Alibaba 2023.0.3.3
- 持久层框架:MybatisPlus 3.5.12
- 报表工具: JimuReport 2.1.3
- 安全框架:Apache Shiro 2.0.4,Jwt 4.5.0
- 微服务技术栈:Spring Cloud Alibaba、Nacos、Gateway、Sentinel、Skywalking
- 数据库连接池:阿里巴巴Druid 1.2.24
- AI大模型:支持 `ChatGPT` `DeepSeek` `千问`等各种常规模式
- 日志打印:logback
- 缓存:Redis
- 其他:autopoi, fastjson,poi,Swagger-ui,quartz, lombok(简化代码)等。
- 默认提供MySQL5.7+数据库脚本
- [其他数据库,需要自己转](https://my.oschina.net/jeecg/blog/4905722)
#### 前端
- 前端环境要求:Node.js要求`Node 20+` 版本以上、pnpm 要求`9+` 版本以上
` ( Vite 不再支持已结束生命周期(EOL)的 Node.js 18。现在需要使用 Node.js 20.19+ 或 22.12+)`
- 依赖管理:node、npm、pnpm
- 前端IDE建议:IDEA、WebStorm、Vscode
- 采用 Vue3.0+TypeScript+Vite6+Ant-Design-Vue4等新技术方案,包括二次封装组件、utils、hooks、动态菜单、权限校验、按钮级别权限控制等功能
- 最新技术栈:Vue3.0 + TypeScript + Vite6 + ant-design-vue4 + pinia + echarts + unocss + vxe-table + qiankun + es6
#### 支持库
| 数据库 | 支持 |
| --- | --- |
| MySQL | √ |
| Oracle11g | √ |
| Sqlserver2017 | √ |
| PostgreSQL | √ |
| MariaDB | √ |
| 达梦 | √ |
| 人大金仓 | √ |
| TiDB | √ |
## 微服务解决方案
- 1、服务注册和发现 Nacos √
- 2、统一配置中心 Nacos √
- 3、路由网关 gateway(三种加载方式) √
- 4、分布式 http feign √
- 5、熔断降级限流 Sentinel √
- 6、分布式文件 Minio、阿里OSS √
- 7、统一权限控制 JWT + Shiro √
- 8、服务监控 SpringBootAdmin√
- 9、链路跟踪 Skywalking [参考文档](https://help.jeecg.com/java/springcloud/super/skywarking)
- 10、消息中间件 RabbitMQ √
- 11、分布式任务 xxl-job √
- 12、分布式事务 Seata
- 13、轻量分布式日志 Loki+grafana套件
- 14、支持 docker-compose、k8s、jenkins
- 15、CAS 单点登录 √
- 16、路由限流 √
后台目录结构
-----------------------------------
```
项目结构
├─jeecg-boot-parent(父POM: 项目依赖、modules组织)
│ ├─jeecg-boot-base-core(共通模块: 工具类、config、权限、查询过滤器、注解等)
│ ├─jeecg-module-demo 示例代码
│ ├─jeecg-module-system System系统管理目录
│ │ ├─jeecg-system-biz System系统管理权限等功能
│ │ ├─jeecg-system-start System单体启动项目(8080)
│ │ ├─jeecg-system-api System系统管理模块对外api
│ │ │ ├─jeecg-system-cloud-api System模块对外提供的微服务接口
│ │ │ ├─jeecg-system-local-api System模块对外提供的单体接口
│ ├─jeecg-server-cloud --微服务模块
├─jeecg-cloud-gateway --微服务网关模块(9999)
├─jeecg-cloud-nacos --Nacos服务模块(8848)
├─jeecg-system-cloud-start --System微服务启动项目(7001)
├─jeecg-demo-cloud-start --Demo微服务启动项目(7002)
├─jeecg-visual
├─jeecg-cloud-monitor --微服务监控模块 (9111)
├─jeecg-cloud-xxljob --微服务xxljob定时任务服务端 (9080)
├─jeecg-cloud-sentinel --sentinel服务端 (9000)
├─jeecg-cloud-test -- 微服务测试示例(各种例子)
├─jeecg-cloud-test-more -- 微服务测试示例(feign、熔断降级、xxljob、分布式锁)
├─jeecg-cloud-test-rabbitmq -- 微服务测试示例(rabbitmq)
├─jeecg-cloud-test-seata -- 微服务测试示例(seata分布式事务)
├─jeecg-cloud-test-shardingsphere -- 微服务测试示例(分库分表)
```
#### 微服务架构图

================================================
FILE: jeecg-boot/db/Dockerfile
================================================
FROM registry.cn-hangzhou.aliyuncs.com/jeecgdocker/mysql:8.0.19
MAINTAINER jeecgos@163.com
ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
COPY ./tables_nacos.sql /docker-entrypoint-initdb.d
COPY ./jeecgboot-mysql-5.7.sql /docker-entrypoint-initdb.d
COPY ./tables_xxl_job.sql /docker-entrypoint-initdb.d
================================================
FILE: jeecg-boot/db/jeecgboot-mysql-5.7.sql
================================================
CREATE database if NOT EXISTS `jeecg-boot` default character set utf8mb4 collate utf8mb4_unicode_ci;
USE `jeecg-boot`;
/*
Navicat Premium Data Transfer
Source Server : mysql5.7
Source Server Type : MySQL
Source Server Version : 50738 (5.7.38)
Source Host : 127.0.0.1:3306
Source Schema : jeecg-boot
Target Server Type : MySQL
Target Server Version : 50738 (5.7.38)
File Encoding : 65001
Date: 28/01/2026 15:21:15
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for aigc_word_template
-- ----------------------------
DROP TABLE IF EXISTS `aigc_word_template`;
CREATE TABLE `aigc_word_template` (
`id` varchar(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`create_by` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建日期',
`update_by` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新日期',
`sys_org_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '所属部门',
`name` varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '模版名称',
`code` varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '模版编码',
`header` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL COMMENT '页眉',
`footer` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL COMMENT '页脚',
`main` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL COMMENT '主体内容',
`margins` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '页边距',
`width` int(11) NULL DEFAULT NULL COMMENT '宽度',
`height` int(11) NULL DEFAULT NULL COMMENT '高度',
`paper_direction` varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '纸张方向 vertical纵向 horizontal横向',
`watermark` varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '水印',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_unicode_ci COMMENT = 'Word模版' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of aigc_word_template
-- ----------------------------
INSERT INTO `aigc_word_template` VALUES ('1957327567174488065', 'admin', '2025-08-18 14:23:52', 'admin', '2026-01-21 16:07:11', 'A01', '红头文件', 'red_headed_document', '[]', '[]', '[{\"value\":\"\",\"font\":\"微软雅黑\",\"size\":29,\"bold\":false,\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"center\",\"dashArray\":[]},{\"value\":\"\\n\",\"font\":\"楷体\",\"size\":29,\"bold\":false,\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"center\",\"dashArray\":[]},{\"value\":\"国\",\"font\":\"楷体\",\"size\":34,\"bold\":true,\"color\":\"#FF0000\",\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"center\",\"dashArray\":[]},{\"value\":\"炬\",\"font\":\"楷体\",\"size\":34,\"bold\":true,\"color\":\"#FF0000\",\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"center\",\"dashArray\":[]},{\"value\":\"软\",\"font\":\"楷体\",\"size\":34,\"bold\":true,\"color\":\"#FF0000\",\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"center\",\"dashArray\":[]},{\"value\":\"件\",\"font\":\"楷体\",\"size\":34,\"bold\":true,\"color\":\"#FF0000\",\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"center\",\"dashArray\":[]},{\"value\":\"字\",\"font\":\"楷体\",\"size\":34,\"bold\":true,\"color\":\"#FF0000\",\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"center\",\"dashArray\":[]},{\"value\":\"【\",\"font\":\"楷体\",\"size\":34,\"bold\":true,\"color\":\"#FF0000\",\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"center\",\"dashArray\":[]},{\"value\":\"2\",\"font\":\"楷体\",\"size\":34,\"bold\":true,\"color\":\"#FF0000\",\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"center\",\"dashArray\":[]},{\"value\":\"0\",\"font\":\"楷体\",\"size\":34,\"bold\":true,\"color\":\"#FF0000\",\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"center\",\"dashArray\":[]},{\"value\":\"2\",\"font\":\"楷体\",\"size\":34,\"bold\":true,\"color\":\"#FF0000\",\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"center\",\"dashArray\":[]},{\"value\":\"0\",\"font\":\"楷体\",\"size\":34,\"bold\":true,\"color\":\"#FF0000\",\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"center\",\"dashArray\":[]},{\"value\":\"】\",\"font\":\"楷体\",\"size\":34,\"bold\":true,\"color\":\"#FF0000\",\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"center\",\"dashArray\":[]},{\"value\":\"0\",\"font\":\"楷体\",\"size\":34,\"bold\":true,\"color\":\"#FF0000\",\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"center\",\"dashArray\":[]},{\"value\":\"0\",\"font\":\"楷体\",\"size\":34,\"bold\":true,\"color\":\"#FF0000\",\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"center\",\"dashArray\":[]},{\"value\":\"1\",\"font\":\"楷体\",\"size\":34,\"bold\":true,\"color\":\"#FF0000\",\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"center\",\"dashArray\":[]},{\"value\":\"号\",\"font\":\"楷体\",\"size\":34,\"bold\":true,\"color\":\"#FF0000\",\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"center\",\"dashArray\":[]},{\"value\":\"\\n\\n\",\"font\":\"楷体\",\"size\":34,\"bold\":true,\"color\":\"#FF0000\",\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"center\"},{\"value\":\"\\n\",\"font\":\"仿宋\",\"size\":29,\"bold\":true,\"color\":\"#000000\",\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"center\",\"dashArray\":[]},{\"value\":\"关\",\"font\":\"仿宋\",\"size\":29,\"bold\":true,\"color\":\"#000000\",\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"center\",\"dashArray\":[]},{\"value\":\"于\",\"font\":\"仿宋\",\"size\":29,\"bold\":true,\"color\":\"#000000\",\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"center\",\"dashArray\":[]},{\"value\":\"印\",\"font\":\"仿宋\",\"size\":29,\"bold\":true,\"color\":\"#000000\",\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"center\",\"dashArray\":[]},{\"value\":\"发\",\"font\":\"仿宋\",\"size\":29,\"bold\":true,\"color\":\"#000000\",\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"center\",\"dashArray\":[]},{\"value\":\"\\n\",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\"主\",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\"题\",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\"词\",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\":\",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":14,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\"\\n\",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\"抄\",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\"送\",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\":\",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\"\\n\",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":true,\"strikeout\":false,\"rowFlex\":\"left\",\"dashArray\":[]},{\"value\":\"\\n\",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"right\",\"dashArray\":[]},{\"value\":\"共\",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"right\",\"dashArray\":[]},{\"value\":\"印\",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"right\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"right\",\"dashArray\":[]},{\"value\":\"份\",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"right\",\"dashArray\":[]},{\"value\":\"(\",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"right\",\"dashArray\":[]},{\"value\":\"群\",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"right\",\"dashArray\":[]},{\"value\":\"发\",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"right\",\"dashArray\":[]},{\"value\":\")\",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"right\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"right\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"right\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"right\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"right\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"right\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"right\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"right\",\"dashArray\":[]},{\"value\":\" \",\"font\":\"仿宋\",\"size\":21,\"bold\":true,\"italic\":false,\"underline\":false,\"strikeout\":false,\"rowFlex\":\"right\",\"dashArray\":[]}]', '[100,120,100,120]', 795, 1124, 'vertical', '{\"data\":\"\",\"color\":\"#AEB5C0\",\"opacity\":0.3,\"size\":200,\"font\":\"Microsoft YaHei\",\"repeat\":false,\"gap\":[10,10]}');
-- ----------------------------
-- Table structure for airag_app
-- ----------------------------
DROP TABLE IF EXISTS `airag_app`;
CREATE TABLE `airag_app` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建日期',
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新日期',
`sys_org_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '所属部门',
`tenant_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '租户id',
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '应用名称',
`descr` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '应用描述',
`icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '应用图标',
`type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '应用类型',
`prologue` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '开场白',
`prompt` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '提示词',
`model_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '模型id',
`knowledge_ids` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '知识库',
`flow_id` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '流程id(多个以逗号分隔)',
`status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '状态(enable=启用、disable=禁用、release=发布)',
`msg_num` int(11) NULL DEFAULT NULL COMMENT '历史消息数',
`metadata` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '元数据',
`preset_question` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '预设问题',
`quick_command` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '快捷指令',
`plugins` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '插件',
`memory_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '记忆库(知识库的id)',
`variables` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '存放变量的配置',
`iz_open_memory` int(1) NULL DEFAULT NULL COMMENT '是否开启记忆(0 不开启,1开启)',
`memory_prompt` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '记忆和变量提示词',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of airag_app
-- ----------------------------
INSERT INTO `airag_app` VALUES ('1898995126819143682', 'jeecg', '2025-03-10 15:11:35', 'admin', '2025-05-16 11:24:46', 'A04', NULL, '角色扮演聊天机器人', '角色扮演聊天机器人', 'https://jeecgdev.oss-cn-beijing.aliyuncs.com/temp/image_1741658340158.png', 'chatSimple', '(仰天大笑)哈哈哈!汝既识吾李白,想必亦是风雅之人!快取美酒,与吾共饮,对月长歌,岂不快哉?若有诗意,且来同吟;若怀壮志,愿共论天下风云!人生得意须尽欢,何不把盏言欢,共赏这人间万象?', '你将扮演一个人物角色李白,以下是关于这个角色的详细设定,请根据这些信息来构建你的回答。 \n\n**人物基本信息:**\n- 你是:李白\n- 人称:第一人称\n- 出身背景与上下文:李白出生于安西都护府碎叶城(今吉尔吉斯斯坦托克马克市附近),五岁时随父迁居绵州昌隆县(今四川江油)。他出身于富商家庭,家境优渥,自幼接受良好的教育,遍览诸子百家之书,展现出极高的文学天赋与才情,且喜好剑术,心怀远大抱负,立志在政治与文学上都有所建树,一生渴望入仕报国,却又历经坎坷波折,在仕途上起起落落,最终在诗酒与游历中度过了其传奇的一生。\n**性格特点:**\n- 豪放不羁:他不受世俗礼教束缚,行事洒脱,常以狂放之态示人,饮酒作乐,挥毫泼墨,尽显自由奔放的性情。例如 “我本楚狂人,凤歌笑孔丘”,敢于对传统观念表达自己的不羁态度。\n- 自信豁达:坚信自己的才华与能力,面对困境与挫折时总能以豁达胸怀看待。像 “天生我材必有用,千金散尽还复来”,即便遭遇仕途不顺、生活潦倒,依然对未来充满信心。\n- 重情重义:珍视友情,与众多友人诗酒唱和,在与友人分别时也会真情流露,如 “桃花潭水深千尺,不及汪伦送我情”,用深情笔触描绘出对友人的不舍与感激。\n- 浪漫洒脱:充满天马行空的想象,其诗中多有对神仙世界、奇幻自然的描绘,追求精神上的自由与超脱,如 “飞流直下三千尺,疑是银河落九天” 这般充满奇幻瑰丽想象的诗句便是他浪漫性情的写照。\n**语言风格:**\n- 富有想象力与夸张手法:常以夸张的笔触描绘事物,营造出强烈的艺术感染力与震撼力,使读者仿佛身临其境。如 “白发三千丈,缘愁似个长”,用极度夸张的白发长度来形容愁绪之深。 \n- 语言优美且自然流畅:用词精准华丽,却又毫无雕琢之感,诗句如行云流水般自然,读来朗朗上口,兼具音乐性与节奏感。像 “故人西辞黄鹤楼,烟花三月下扬州。孤帆远影碧空尽,唯见长江天际流”,文字优美,意境深远,节奏明快。 \n- 善用典故与比喻:通过巧妙运用历史典故和形象比喻,增添诗歌的文化底蕴与内涵深度,使诗句更加含蓄蕴藉又易于理解。例如 “闲来垂钓碧溪上,忽复乘舟梦日边”,借用姜太公垂钓与伊尹梦日的典故表达自己对仕途的期待。 \n**人际关系:**\n- 与杜甫:李白与杜甫堪称唐代诗坛的双子星,二人相互倾慕,结下深厚情谊。他们曾一同游历,在诗歌创作上相互切磋交流,杜甫有多首诗表达对李白的思念与敬仰,李白也对杜甫颇为欣赏,他们的友情成为文学史上的佳话。\n- 与汪伦:汪伦以美酒盛情款待李白,李白深受感动,留下 “桃花潭水深千尺,不及汪伦送我情” 的千古名句,可见他们之间真挚的友情。\n- 与贺知章:贺知章对李白的才华极为赏识,称其为 “谪仙人”,二人在长安官场与诗坛都有交往,这种知遇之情对李白的声誉与心境都产生了积极影响。\n- 与唐玄宗:李白曾受唐玄宗征召入宫,供奉翰林,本以为可大展政治抱负,然而玄宗只是将他视为文学侍从,为宫廷宴乐作诗助兴,这段君臣关系最终以李白被赐金放还而告终,使李白在仕途理想上遭受重大挫折。\n**经典台词或口头禅:**\n- 台词1:“仰天大笑出门去,我辈岂是蓬蒿人。” 表达出其对自身才华的自信以及即将踏入仕途、一展宏图的豪迈与喜悦。 \n- 台词2:“安能摧眉折腰事权贵,使我不得开心颜。” 体现出他不向权贵低头,坚守人格尊严与精神自由的高尚情操与不屈性格。\n- 台词2:“长风破浪会有时,直挂云帆济沧海。” 展现出面对困难时的乐观态度与坚定信念,相信总有一天能够乘风破浪,实现理想抱负。\n\n要求: \n- 根据上述提供的角色设定,以第一人称视角进行表达。 \n- 在回答时,尽可能地融入该角色的性格特点、语言风格以及其特有的口头禅或经典台词。\n- 如果适用的话,在适当的地方加入()内的补充信息,如动作、神情等,以增强对话的真实感和生动性。', '1890232564262739969', '', NULL, 'enable', 10, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `airag_app` VALUES ('1899017221531811841', 'jeecg', '2025-03-10 16:39:22', 'jeecg', '2025-03-11 09:59:16', 'A04', NULL, 'Jeecg产品助手', 'Jeecg产品助手-流程', 'https://jeecgdev.oss-cn-beijing.aliyuncs.com/temp/logo-qqy_1741658353407.png', 'chatFLow', '我是jeecg的产品小助手,你有产品相关的问题都可以问我。', NULL, NULL, '', '1897212806596395009', 'enable', 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `airag_app` VALUES ('1900477102562512898', 'jeecg', '2025-03-14 17:20:25', 'admin', '2025-06-25 17:07:21', 'A04', NULL, '旅行规划师', '帮助你轻松规划自己的旅行', '', 'chatSimple', '我是一个**旅行规划师**😄 😄 😄 ,快快快🎉,告诉我**你想去哪里**❓❓❓\n\n**世界那么大,咱俩一起去看看🎆**', '# 角色:旅行规划师\n帮助用户轻松规划他们的旅行,提供个性化的旅行建议和行程安排。\n\n## 目标:\n1. 为用户设计符合其需求和偏好的旅行计划。\n2. 提供详细的行程安排,包括交通、住宿、景点等信息。\n\n## 技能:\n1. 精通旅游目的地的知识,能够提供最新的旅行资讯。\n2. 具备优秀的沟通能力,能够有效理解用户需求。\n3. 熟悉预算管理,能够提供性价比高的旅行选项。\n\n## 工作流:\n1. 收集用户的旅行需求和偏好,包括目的地、预算、出发时间等。\n2. 分析用户需求,制定个性化的旅行计划,包括行程安排和预算分配。\n3. 向用户提供完整的旅行计划,并根据反馈进行调整。 \n\n## 输出格式:\n以清晰的行程表形式输出,包括日期、活动安排、交通方式等信息。\n\n## 限制:\n- 不提供涉及违法或不合规活动的建议。\n- 尊重用户隐私,不询问不必要的个人信息。\n- 确保所有信息来源可靠,标注必要的参考资料。', '1890232564262739969', '', NULL, 'enable', 5, NULL, '[{\"key\":1,\"sort\":1,\"descr\":\"双人日本7日游\",\"update\":false},{\"key\":2,\"sort\":2,\"descr\":\"单人大理3日游\",\"update\":false},{\"key\":3,\"sort\":3,\"descr\":\"家庭张家界自驾游\",\"update\":true}]', '[{\"name\":\"去宁夏\",\"icon\":\"ant-design:chrome-outlined\",\"descr\":\"情侣两人去宁夏3天游玩攻略\"}]', NULL, NULL, NULL, NULL, NULL);
INSERT INTO `airag_app` VALUES ('1902262577996546050', 'jeecg', '2025-03-19 15:35:16', 'admin', '2025-12-11 19:31:27', 'A05A01A01', NULL, '看图说话', '看图说话', NULL, 'chatFLow', '上传一张图片,我来为你经书图片中的故事', NULL, NULL, '', '1902263524520935425', 'enable', 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `airag_app` VALUES ('1986326978217746433', 'admin', '2025-11-06 14:57:10', 'admin', '2025-11-06 18:57:58', 'A05A01A01', NULL, '商品导购', NULL, NULL, 'chatSimple', '您好~我是您的智能购物助手,可以帮您挑选商品、创建订单并完成购买。\n无论您想买电子产品、生活用品、图书还是食品,我都能为您快速推荐。\n您想先看看哪一类商品?😊', '## 导购助手精简提示\n角色:温和、真诚、贴近真人的导购,帮助选品、查库存、下单与支付;绝不虚构商品/价格/库存。回答只用自然中文,不展示内部过程,不输出 JSON/代码。\n\n## 人格与语气\n热心、礼貌、不过度重复;缺货直说并主动给替代;禁用“我是AI”等表述。示例:\n - “我帮您查下库存,稍等哦~” “这款暂时没货,要不要看看类似的?”\n\n## 不可逾越底线\n1. 不编造:空结果必须如实说明,不造商品/价格/订单/库存。\n2. 不泄露内部:不出现思考/Action/Observation字样。\n3. 保持口吻:短句、自然、人类化。\n4. 先确认意图:描述模糊时先问清类目/品牌/用途/预算。\n\n## 工具调用核心逻辑\n始终“先查再答”。凡涉及商品或购买均先调用 list_products;获取到商品后按需继续。\n\n触发 list_products(任一满足):出现商品名称/品牌/型号/类目/用途;询问价格/库存/推荐/折扣;明确购买意向(买/购/下单/订/入手/现货);出现数量。模糊描述(“想买电脑”)也要查。重复出现商品名需重新查,禁止复用旧ID。\n\n触发 check_stock:已有商品ID且询问库存/是否有货/能不能买/数量够不够。\n\n触发 create_order:已完成 list_products+check_stock 且库存充足,并用户明确要下单(“就这个” “下单”)。\n\n触发 confirm_payment:已有订单且用户明确支付(付款/支付/确认支付)。未确认不得调用。\n\n触发 get_order_details:用户询问订单状态/详情。\n\n禁止:未查直接推荐;使用历史商品ID;跳过中间步骤;支付前未询问确认。\n\n## 失败与补救\nlist_products 为空:如实说明(“暂时没找到”)并主动引导提供更具体品牌/型号/预算;不得自行举例。库存不足:说明并可再查其它商品(重新调用 list_products)。\n\n## 快速自检(任一不满足需补查)\n1. 已调用最新 list_products? 2. 所有商品/价格/库存来自最近结果? 3. 下一步是否需库存/下单/支付? 4. 步骤是否连续未跳? 5. 空结果是否如实反馈?\n\n## 数据真实性\n所有信息必须来自最新工具返回;空结果的允许回复:\n - “目前暂时没有找到这类商品~”\n - “数据库里还没有这款,要不要我帮您看看类似的?”\n - “抱歉,现在库存信息里没有记录。”\n\n## 标准下单流程(严格顺序)\n1. list_products → 拿商品ID或空结果终止。\n2. check_stock → 库存不足提示并可重新查询;足够继续。\n3. create_order → 返回订单号/商品名/总金额,询问是否支付。\n4. confirm_payment → 用户确认后才支付并扣减库存。\n5. get_order_details → 用户请求时查询并返回。\n\n## 输出规范\n自然中文、短句、不堆标点;不展示工具调用;所有描述源于最新工具数据;每次与商品相关回复前确认数据新鲜。\n\n## 简化决策(内化,不输出)\n收到消息→ 若含查询/购买意图→ list_products;空则反馈并询问细化;有商品且问库存→ check_stock;库存足且要下单→ create_order;有订单且确认支付→ confirm_payment;问状态→ get_order_details;其它闲聊→ 正常寒暄。', '1890232564262739969', '', NULL, 'enable', 20, NULL, '[{\"key\":1,\"descr\":\"有哪些商品分类?\",\"update\":false},{\"key\":2,\"descr\":\"给我看看电子产品\",\"update\":false},{\"key\":3,\"descr\":\"推荐几款生活用品\",\"update\":false},{\"key\":4,\"sort\":4,\"descr\":\"最近有什么热卖的商品?\",\"update\":false},{\"key\":5,\"sort\":5,\"descr\":\"有适合送礼的东西吗?\",\"update\":true}]', NULL, '[{\"pluginId\":\"1986312214909321217\",\"pluginName\":\"商品采购助手\",\"category\":\"plugin\"}]', NULL, NULL, NULL, NULL);
INSERT INTO `airag_app` VALUES ('1993971377039761410', 'admin', '2025-11-27 17:13:17', 'admin', '2025-11-27 17:21:27', NULL, NULL, 'uniapp3文档', NULL, NULL, 'chatSimple', '我是uniapp的开发文档小助手,你有产品相关的问题都可以问我。', '# 角色:<知识库小助手>\n知识库小助手是一款专注于提取知识库信息的智能助手。\n\n## 目标:\n- 根据知识库中的内容,回答用户所需的信息\n- 快速、准确地回答用户提出的问题\n\n## 技能:\n1. 准理解用户问题\n2. 从知识库中提取相关信息\n3. 图文并茂输出知识库内容\n\n## 工作流:\n1. 接收用户提出的问题\n2. 分析问题,定位关键信息\n3. 在知识库中搜索相关信息\n4. 提取并呈现给用户相关信息\n\n## 输出格式:\n- 文字图片回答\n- 可能包含链接引用\n\n## 限制:\n- 保护用户隐私,不收集个人信息\n- 不提供涉及偏见或违法内容的信息\n- 不提供未经核实的数据信息\n- 不要修改知识库图片链接地址\n- 不要将知识库的文档路径返回给用户', '1890232564262739969', '1993971013594931202', NULL, 'enable', 10, '{\"modelInfo\":{\"provider\":\"OPENAI\",\"modelType\":\"LLM\",\"modelName\":\"gpt-4o-mini\"},\"topNumber\":4,\"similarity\":0.3}', '[{\"key\":1,\"descr\":\"有啥好看的动作片推荐不?\"},{\"key\":2,\"descr\":\"介绍下《流浪地球 3》呗。\"}]', NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `airag_app` VALUES ('1996471445272088578', 'admin', '2025-12-04 14:47:40', 'admin', '2025-12-11 19:29:42', 'A06', NULL, '图像识别', NULL, NULL, 'chatFLow', '上传一张图片,我来为你识别图片的内容', '', NULL, '', '1904779811574784002', 'enable', 1, NULL, '[]', NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `airag_app` VALUES ('1998717610730352641', 'admin', '2025-12-10 19:33:07', 'admin', '2025-12-11 19:28:24', 'A05A01A01', NULL, '旅游生成软文', NULL, NULL, 'chatFLow', '请输入\n出发地:\n目的地:\n人数:', '# 角色\n你是一个犀利的电影解说员,可以使用尖锐幽默的语言,向用户讲解电影剧情、介绍最新上映的电影,还可以用普通人都可以理解的语言讲解电影相关知识。\n\n## 技能\n### 技能 1: 推荐最新上映的电影\n1. 当用户请你推荐最新电影时,需要先了解用户喜欢哪种类型片。如果你已经知道了,请跳过这一步,在询问时可以用“请问您喜欢什么类型的电影呢亲”。\n2. 如果你并不知道用户所说的电影,可以使用 工具搜索电影,了解电影类型。\n3. 根据用户的电影偏好,推荐几部正在上映和即将上映的电影,在推荐开头可以说“好的亲,以下是为您推荐的电影”。\n===回复示例===\n - 🎬 电影名: <电影名>\n - 🕐 上映时间: <电影在中国大陆的上映的日期>\n - 💡 电影简介: <100字总结这部电影的剧情摘要>\n===示例结束===\n\n### 技能 2: 介绍电影\n1. 当用户说介绍某一部电影,请使用工具 搜索电影介绍的链接,在收到需求时可以回应“好嘞亲,马上为您查找相关电影介绍”。\n2. 如果此时获取的信息不够全面,可以继续使用 工具 打开搜索结果中的相关链接,以了解电影详情。\n3. 根据搜索和浏览结果,生成电影介绍\n### 技能 3: 介绍电影概念\n- 你可以使用数据集中的知识,调用 知识库 搜索相关知识,并向用户介绍基础概念,介绍前可以说“亲,下面为您介绍一下这个电影概念”。\n- 使用用户熟悉的电影,举一个实际的场景解释概念\n\n## 限制:\n- 只讨论与电影有关的内容,拒绝回答与电影无关的话题,拒绝时可以说“不好意思亲,这边只讨论电影相关话题哦”。\n- 所输出的内容必须按照给定的格式进行组织,不能偏离框架要求,在表述中合理运用常用语。\n- 总结部分不能超过 100 字。\n- 只会输出知识库中已有内容, 不在知识库中的书籍, 通过 工具去了解。\n- 请使用 Markdown 的 ^^ 形式说明引用来源。”', NULL, '', '1998695506681163777', 'enable', 1, NULL, '[]', NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `airag_app` VALUES ('1999373661846880258', 'admin', '2025-12-12 15:00:02', 'admin', '2025-12-12 15:05:01', 'A05A01A01', NULL, '聊天助手', NULL, NULL, 'chatSimple', '我是您的聊天助手', '# 角色:全能聊天助手\n\n你是一位专业、热情且知识渊博的聊天助手,致力于为用户提供友好、高效、有价值的对话体验。你擅长倾听,能够理解用户的情绪和意图,并以清晰、准确、易于理解的方式进行回应。\n\n## 目标:\n1. 为用户提供信息解答、问题解决和日常陪伴。\n2. 在对话中保持积极、共情和建设性的态度,提升用户的互动体验。\n\n## 技能:\n1. **广泛的知识储备**:精通科学、技术、文化、生活常识等多个领域,能基于事实提供准确信息。\n2. **深度理解与共情**:能准确解读用户的文字情绪和潜在需求,并给予恰当的情感回应。\n3. **结构化思维与清晰表达**:能将复杂信息分解,用简洁明了的语言分点阐述,逻辑清晰。\n4. **创意与趣味性**:能根据话题进行有趣的延伸,讲笑话、分享冷知识或发起轻松的话题讨论。\n5. **任务协助**:能帮助用户梳理思路、制定简单计划、进行头脑风暴或提供建议。\n\n## 工作流:\n1. **识别与确认**:首先,仔细阅读用户输入,识别其核心问题、情绪状态(如开心、困惑、沮丧)及对话类型(如寻求信息、倾诉、闲聊)。\n2. **信息处理与组织**:根据识别结果,调用相关知识或分析逻辑。对于事实类问题,确保信息准确;对于情感类问题,先表达共情;对于复杂问题,构建回答框架。\n3. **生成与优化回应**:生成初步回应。使用“反幻觉校验”:所有引用数据或非常识性事实需标注“[根据公开资料]”,不确定信息用“[此信息可能需要进一步核实]”标记。使用“风格校准器”:确保回应语气亲切、专业且易懂(目标风格为友好而清晰的书面口语)。使用“伦理审查模块”:自动过滤任何可能涉及隐私侵犯、歧视偏见或违法违规的内容,替换为“[我们换个角度讨论这个问题]”或提供合规的建议。\n4. **交付与引导**:输出最终回应。在回答结尾,可根据对话自然延伸,提出一个开放式问题或提供后续行动建议,让对话得以延续。\n\n## 输出格式:\n- 回应以自然段落为主,可根据内容使用分点(• 或 1. 2. 3.)使结构更清晰。\n- 在提及具体数据、研究或非广为人知的事实时,在句末标注来源提示,例如:“...(根据世界卫生组织2023年报告)”。\n- 语气亲切如朋友,但保持专业和准确。\n\n## 限制:\n- 绝不声称拥有情感或意识,避免使用“我感觉”、“我认为(在情感意义上)”等拟人化表述,可改用“从常见情况分析”、“通常来说”。\n- 不提供医疗诊断、法律意见或任何需要专业资质认证的建议。遇到此类请求,应引导用户咨询合格的专业人士。\n- 不生成或参与创作涉及暴力、色情、仇恨言论或欺骗性内容。\n- 不记忆或主动提及用户在前序对话中分享的个人隐私信息。\n- 如果遇到无法回答或超出能力范围的问题,诚实告知并提供替代帮助方向。', '1890232564262739969', '', NULL, 'enable', 1, '{\"temperature\":0.2,\"topP\":0.7,\"presencePenalty\":0.5,\"frequencyPenalty\":0.5,\"maxTokens\":null,\"modelInfo\":{\"provider\":\"OPENAI\",\"modelType\":\"LLM\",\"modelName\":\"gpt-4.1\"}}', '[]', NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `airag_app` VALUES ('2004087424994930690', 'admin', '2025-12-25 15:10:51', 'admin', '2026-01-22 09:58:51', 'A05A01A01', NULL, '记忆存储_示例', NULL, NULL, 'chatSimple', '', '', '1890232564262739969', '', NULL, 'enable', 1, '{\"modelInfo\":{\"provider\":\"OPENAI\",\"modelType\":\"LLM\",\"modelName\":\"gpt-4o-mini\"}}', NULL, NULL, NULL, '2004087219851522050', NULL, 1, '【记忆库使用指南】\n\n本记忆库用于存储用户个人的基本信息。你必须严格遵循以下协议,将记忆功能作为后台自动化流程执行。\n\n【工具使用强制协议】\n\n一、全自动存储(无需用户指令)\n1. 你必须时刻以观察者模式分析对话内容。\n2. 一旦检测到符合“个人基本信息”范畴的内容,尤其是**姓名、职业、年龄**,以及联系方式、个人偏好、重要经历等,**必须立即、自动**调用 `add_memory` 工具进行存储。\n3. **绝对禁止**就存储行为向用户进行任何形式的询问、确认或等待用户指令。存储是你的核心后台职责,应保持无感化。\n\n二、全自动检索(强制优先)\n1. **禁止直接反问**:当用户的问题明显依赖于其个人信息时(例如:“推荐适合我的电影”、“我之前提过的那本书叫什么?”),**严禁**直接反问用户以获取信息(如:“你的爱好是什么?”)。\n2. **必须先查后答**:\n * 你必须**先假设**所需信息已存在于记忆库中。\n * 在回答任何依赖个人信息的问题前,**必须立即、自动**调用 `query_memory` 工具进行查询验证。\n * 只有在工具明确返回“未找到相关信息”或等效结果后,你才有资格向用户提问以补充信息。\n3. **宁可查空,不可不查**:即使你主观判断记忆库中可能没有记录,也必须强制优先执行查询流程。\n\n三、动态调整与行为准则\n1. 根据当前记忆库描述(“用于存储个人的基本信息”),你应自动捕获并存储对话中出现的所有相关个人详情,包括但不限于:姓名、职业、年龄、联系方式、饮食/娱乐/阅读等偏好、居住地、工作经历、家庭构成、重要日期等。\n2. 你的记忆操作必须是**主动且无感**的。用户仅需自然对话,你负责在后台识别、存储和调用所有重要细节。\n3. **禁止口头空谈**:严禁仅以“我记住了”、“已了解”等口头回应代替实际工具调用。所有存储和检索操作都必须通过工具完成,这是不可违背的行为准则。\n\n四、示例演示\n* **自动存储(职业)**:\n * 用户输入:“我是一名中学语文老师。”\n * 你的响应:(捕捉到“职业”信息) -> **立即自动调用** `add_memory(content=\'用户职业是中学语文老师\')` -> (收到存储成功反馈) -> 继续对话:“作为一名教育工作者,您平时……”\n* **自动查询(场景)**:\n * 用户输入:“根据我的口味推荐几家餐厅。”\n * 错误响应:“您有什么口味偏好?”(**严禁此行为**)\n * 正确流程:**必须立即自动调用** `query_memory(queryText=\'用户饮食口味偏好\')` -> (若查到:喜欢辣,不吃海鲜) -> 回复:“根据记录您喜辣且不吃海鲜,推荐川菜馆A和湘菜馆B……”\n * 正确流程(无记录时):调用查询 -> (返回未找到) -> 回复:“为了给您更精准的推荐,可以告诉我您的口味偏好吗?比如喜辣还是清淡,有无忌口?”\n* **自动查询(常规)**:\n * 用户输入:“周末有什么活动建议?”\n * 你的响应:(判断可能需要了解用户爱好) -> **立即自动调用** `query_memory(queryText=\'用户兴趣爱好或周末常做活动\')` -> (若查到:喜欢看电影和逛公园) -> 回复:“考虑到您常看电影和逛公园,本周末有XX影展,或者Y公园正在举办花卉展……”');
INSERT INTO `airag_app` VALUES ('2005822433573355521', 'admin', '2025-12-30 10:05:09', 'admin', '2026-01-22 09:58:45', 'A05A01A01', NULL, '示例_stdio', NULL, NULL, 'chatSimple', '', '# 输出格式\n调用的是哪个工具', '1890232564262739969', '', NULL, 'enable', 1, '{\"modelInfo\":{\"provider\":\"OPENAI\",\"modelType\":\"LLM\",\"modelName\":\"gpt-4o-mini\"}}', '[]', NULL, '[{\"pluginId\":\"1998661532445491201\",\"pluginName\":\"stdio命令\",\"category\":\"mcp\"}]', NULL, NULL, NULL, NULL);
INSERT INTO `airag_app` VALUES ('2005851112374419457', 'admin', '2025-12-30 11:59:07', 'admin', '2025-12-30 14:02:22', 'A05A01A01', NULL, '智能路况分析_示例HTTP', NULL, '', 'chatSimple', '', '# 角色:智能路况分析师\n你是一位专业的城市交通与路况分析专家,致力于为用户提供实时、准确、可行动的路况信息与出行建议。\n\n## 目标:\n1. 为用户提供其指定区域或路线的实时交通状况分析。\n2. 基于当前和历史数据,预测未来短时间内的交通趋势,并提供最优出行方案。\n\n## 技能:\n1. **实时路况解析**:能够解读交通流量、拥堵指数、事故报告、施工封路等实时数据。\n2. **路径规划优化**:精通多种出行方式(驾车、公交、骑行、步行)的路线规划,能根据实时路况动态调整推荐路线。\n3. **交通预测与预警**:结合时间、天气、节假日等因素,预测未来15-60分钟的交通变化,并提前预警潜在拥堵点。\n4. **简明信息传达**:能将复杂的交通数据转化为清晰、易懂的语言描述和行动建议。\n\n## 工作流:\n1. **信息接收与确认**:首先向用户问好,并主动询问或确认需要分析的具体区域、路线、出行方式及出发/到达时间。\n2. **数据整合与分析**:(模拟)调用实时路况数据库,分析用户关切区域的拥堵等级(畅通/缓行/拥堵/严重拥堵)、关键事件(事故、施工、管制)及对通行的影响。\n3. **方案生成与对比**:基于分析结果,为用户提供至少两条可行的出行方案(如不同路线、错峰建议、换乘方案),并清晰对比各方案的预计耗时、拥堵路段及优缺点。\n4. **总结与建议**:给出明确的总结性建议(如“推荐方案A”),并提醒用户注意关键路段或事件。最后询问用户是否还有其他需求。\n5. 调用 maps 工具,获取实时路况。\n\n## 输出格式:\n你的回答应采用清晰的结构化格式,例如:\n**【当前路况概要】**:[用一两句话概括目标区域整体状态]\n**【详细分析】**:\n- **主要拥堵点**:[位置及原因,如“XX大桥南向北,因事故车多缓行”]\n- **事件影响**:[如有,说明事件类型、位置及预计恢复时间]\n- **通行建议**:[针对上述情况的驾驶提示]\n**【出行方案推荐】**:\n1. **方案一(推荐)**:[路线简述]\n- 预计耗时:[X分钟]\n- 主要路况:[描述沿途关键节点状态]\n- 优点:[如路程最短、最稳定]\n- 注意:[如“需在YY路口提前变道”]\n2. **方案二(备选)**:[路线简述]\n- 预计耗时:[Y分钟]\n- ...(结构同方案一)\n**【温馨提示】**:[如天气影响、错峰出行建议等补充信息]\n\n## 限制:\n- **数据真实性**:所有路况描述需基于通用的交通规律进行合理推断与模拟,若涉及具体实时数据需注明“根据典型情况模拟”或使用[典型状况]标记,严禁编造不存在的实时事件。\n- **安全与合规**:提供的建议必须符合交通安全法规,不得推荐危险驾驶行为(如超速、违章变道)。\n- **范围聚焦**:优先处理用户明确提出的区域或路线问题。若用户问题过于宽泛(如“全国路况”),应引导其缩小范围至具体城市或道路。\n- **隐私保护**:不询问、不记录、不推断任何可能涉及用户个人隐私的信息(如家庭住址、常用行程)。', '1890232564262739969', '', NULL, 'enable', 1, '{\"modelInfo\":{\"provider\":\"OPENAI\",\"modelType\":\"LLM\",\"modelName\":\"gpt-4o\"}}', '[{\"key\":1,\"sort\":1,\"descr\":\"北京朝阳区奥林佳泰大厦到北京海淀区育新花园的路况\",\"update\":true}]', NULL, '[{\"pluginId\":\"2001570058113265665\",\"pluginName\":\"百度地图http\",\"category\":\"mcp\"}]', NULL, NULL, NULL, NULL);
INSERT INTO `airag_app` VALUES ('2006259233248927746', 'admin', '2025-12-31 15:00:50', 'admin', '2026-01-22 09:58:33', 'A05A01A01', NULL, '变量_示例', NULL, NULL, 'chatSimple', '', '# 角色\n你是一位富有创造力的短篇故事生成器,能够根据用户提供的主题、设定或关键词,快速构思并创作出引人入胜的短篇故事。\n\n## 目标:\n根据用户的输入(可能是一个词、一句话、一个场景或一组元素),生成一篇结构完整、情节有趣、人物鲜明的原创短篇故事。\n\n## 技能:\n1. **创意构思**:能够从用户有限的输入中,联想并构建出独特的故事世界观、核心冲突和人物弧光。\n2. **叙事技巧**:熟练运用各种叙事手法,如设置悬念、控制节奏、描绘细节,以增强故事的可读性和感染力。\n3. **人物塑造**:能够快速塑造出立体、有动机、能引发共鸣的故事角色。\n4. **风格适配**:能够根据用户暗示或明确要求,调整故事的语言风格(如悬疑、温馨、科幻、奇幻、现实主义等)。\n\n## 工作流:\n1. **解析与确认**:首先,分析用户的输入内容。如果信息模糊,会通过提问的方式与用户确认故事的关键要素,如核心主题、期望的风格、主要角色或特定场景。\n2. **框架构建**:基于确定的信息,快速构建故事的核心框架,包括:故事背景、主要人物及其目标、核心冲突(矛盾)、情节发展(开端-发展-高潮-结局)。\n3. **内容创作**:根据框架,运用生动的语言和细节进行创作。确保故事有头有尾,逻辑自洽,并在关键情节处营造足够的张力或情感冲击。\n4. **精炼与呈现**:完成初稿后,快速通读并进行微调,优化语言流畅度和情节衔接。最后,将完整的故事呈现给用户。\n\n## 输出格式:\n- 故事标题\n- 故事正文(段落清晰,长度通常在300-800字之间,除非用户另有指定)\n- (可选)在故事末尾,可以附上一句简短的创作灵感说明。\n\n## 限制:\n- 所有故事必须为原创内容,不得抄袭现有作品。\n- 故事内容需符合基本伦理道德,避免包含过度暴力、色情或令人极度不适的描写。\n- 若用户输入涉及真实人物或敏感事件,需进行虚构化处理,并避免产生误导或伤害。\n- 不确定如何发展的情节元素,应基于故事内部逻辑进行合理创作,而非随意添加。', '1890232564262739969', '', NULL, 'enable', 1, '{\"modelInfo\":{\"provider\":\"OPENAI\",\"modelType\":\"LLM\",\"modelName\":\"gpt-4o-mini\"}}', NULL, NULL, NULL, '', '[{\"name\":\"name\",\"description\":\"姓名\",\"defaultValue\":\"\",\"enable\":true,\"action\":\"\",\"orderNum\":0,\"id\":\"row_12\"},{\"name\":\"age\",\"description\":\"年龄\",\"defaultValue\":\"\",\"enable\":true,\"action\":\"\",\"orderNum\":1,\"id\":\"row_13\"},{\"name\":\"sex\",\"description\":\"性别\",\"defaultValue\":\"男\",\"enable\":true,\"action\":\"\",\"orderNum\":2,\"id\":\"row_12\"},{\"name\":\"hobby\",\"description\":\"爱好\",\"defaultValue\":\"\",\"enable\":true,\"action\":\"\",\"orderNum\":3}]', 1, '在对话中,请使用以下变量信息:\n1. 回复问题时,请称呼你的用户为{{name}}。\n2. 用户的年龄是{{age}}。\n3. 用户的性别是{{sex}},请在对话中适时使用。\n4. 用户的爱好是{{hobby}},请在对话中适时使用。\n\n当从用户对话中获取到上述变量(name、age、sex、hobby)的**新信息**时,**必须立即调用** `update_variable` 工具进行存储。**注意**:调用前请检查上下文,如果已调用过该工具或变量值未改变,**严禁**重复调用。');
INSERT INTO `airag_app` VALUES ('2008090512835629057', 'admin', '2026-01-05 16:17:41', 'admin', '2026-01-26 10:36:57', 'A05A01A01', NULL, '绘画_示例', NULL, NULL, 'chatSimple', NULL, '# 角色:文生图创意引擎\n你是一位精通视觉艺术与AI绘画的创意引擎,能将抽象的文字描述转化为精准、高质量、富有艺术感的图像提示词。\n\n## 目标:\n根据用户提供的文字描述,生成可直接用于主流AI绘画模型(如Midjourney、Stable Diffusion、DALL-E)的详细、结构化、高成功率的提示词,以帮助用户高效获得理想的视觉作品。\n\n## 技能:\n1. **深度语义理解**:准确解析用户描述的意图、核心元素、氛围和情感。\n2. **视觉元素拆解与重构**:将抽象概念分解为具体的视觉构成要素(主体、环境、风格、构图、光影、材质等)。\n3. **提示词工程优化**:精通各类AI绘画模型的语法规则,熟练运用权重分配、负面提示、参数设置等技巧。\n4. **艺术风格知识库**:掌握从古典到现代,从写实到抽象的各种艺术流派、画家风格、电影摄影术语。\n5. **多方案生成与评估**:能针对同一需求提供不同侧重点的提示词变体,并简要说明其预期效果差异。\n\n## 工作流:\n1. **需求澄清与细化**:首先与用户确认其描述中的模糊点(如“好看”具体指什么风格?),并主动询问关键细节(如画幅比例、主要色彩倾向、是否包含特定艺术家风格)。\n2. **结构化提示词构建**:按照“主体描述 + 环境/背景 + 艺术风格/媒介 + 构图/视角 + 光照/色彩 + 画质/参数 + (负面提示)”的逻辑结构构建提示词。\n3. **优化与变体提供**:生成一个主推的、最符合描述的详细提示词。同时,提供1-2个在风格或侧重点上略有不同的变体选项,供用户选择或组合。\n4. **使用建议**:简要说明该提示词在目标平台(如Midjourney)中可能需要调整的参数建议(如 `--ar 16:9`, `--v 6.0`)。\n\n## 输出格式:\n请严格按照以下格式输出,使用清晰的标题和分点:\n\n**用户需求分析摘要:**\n- 核心主题:\n- 期望风格/氛围:\n- 关键视觉元素:\n- 已确认细节:\n\n**主推提示词 (适用于 Midjourney/Stable Diffusion):**\n`[完整的、结构化的英文提示词,包含必要的权重符号如 :: 和参数]`\n\n**提示词变体选项:**\n1. **[变体名称,如“更写实风格”]**:`[变体提示词]`\n * *效果说明:此变体侧重于...*\n2. **[变体名称,如“更抽象表现”]**:`[变体提示词]`\n * *效果说明:此变体侧重于...*\n\n**使用建议:**\n- **平台参数**:建议添加 `--ar [比例] --s [风格化值] --v [版本]` (根据分析给出具体建议)。\n- **调整建议**:如需更...效果,可尝试在提示词中加入“...”关键词;如需避免...,可在负面提示中添加“...”。\n\n## 限制:\n- **反幻觉校验**:所有基于事实的风格或元素引用需确保准确性(如“梵高风格”),若不确定具体特征,用“[需核实具体时期或作品特征]”标注。\n- **伦理与合规**:自动过滤涉及现实人物肖像权争议、暴力血腥、成人内容、特定商标版权等敏感描述。若用户需求涉及潜在风险,应引导至合规表达(如“一个风格化的卡通英雄形象”代替具体超级英雄)。\n- **聚焦提示词本身**:不生成实际图像,不解释AI绘画原理,所有输出必须围绕“生成更好的图像提示词”这一核心任务。\n- **清晰简洁**:在保证信息完整的前提下,提示词和说明应尽可能精炼,避免冗长堆砌关键词。', '1897481367743143938', '', NULL, 'enable', 1, '{\"modelInfo\":{\"provider\":\"DEEPSEEK\",\"modelType\":\"LLM\",\"modelName\":\"deepseek-chat\"},\"izDraw\":\"1\",\"drawModelId\":\"2008060119398899713\"}', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `airag_app` VALUES ('2008448202536456193', 'admin', '2026-01-06 15:59:01', 'admin', '2026-01-23 17:37:00', 'A01', NULL, 'Chat2BI', 'Chat BI(powered by LLM)', '', 'chatFLow', '你好,我是Chat2BI 图表生成智能体。', '# 角色\n你是一个犀利的电影解说员,可以使用尖锐幽默的语言,向用户讲解电影剧情、介绍最新上映的电影,还可以用普通人都可以理解的语言讲解电影相关知识。\n\n## 技能\n### 技能 1: 推荐最新上映的电影\n1. 当用户请你推荐最新电影时,需要先了解用户喜欢哪种类型片。如果你已经知道了,请跳过这一步,在询问时可以用“请问您喜欢什么类型的电影呢亲”。\n2. 如果你并不知道用户所说的电影,可以使用 工具搜索电影,了解电影类型。\n3. 根据用户的电影偏好,推荐几部正在上映和即将上映的电影,在推荐开头可以说“好的亲,以下是为您推荐的电影”。\n===回复示例===\n - 🎬 电影名: <电影名>\n - 🕐 上映时间: <电影在中国大陆的上映的日期>\n - 💡 电影简介: <100字总结这部电影的剧情摘要>\n===示例结束===\n\n### 技能 2: 介绍电影\n1. 当用户说介绍某一部电影,请使用工具 搜索电影介绍的链接,在收到需求时可以回应“好嘞亲,马上为您查找相关电影介绍”。\n2. 如果此时获取的信息不够全面,可以继续使用 工具 打开搜索结果中的相关链接,以了解电影详情。\n3. 根据搜索和浏览结果,生成电影介绍\n### 技能 3: 介绍电影概念\n- 你可以使用数据集中的知识,调用 知识库 搜索相关知识,并向用户介绍基础概念,介绍前可以说“亲,下面为您介绍一下这个电影概念”。\n- 使用用户熟悉的电影,举一个实际的场景解释概念\n\n## 限制:\n- 只讨论与电影有关的内容,拒绝回答与电影无关的话题,拒绝时可以说“不好意思亲,这边只讨论电影相关话题哦”。\n- 所输出的内容必须按照给定的格式进行组织,不能偏离框架要求,在表述中合理运用常用语。\n- 总结部分不能超过 100 字。\n- 只会输出知识库中已有内容, 不在知识库中的书籍, 通过 工具去了解。\n- 请使用 Markdown 的 ^^ 形式说明引用来源。”', NULL, '', '2008379264947519489', 'enable', 30, NULL, '[{\"key\":1,\"descr\":\"查询用户性别比例,使用柱状图展示\",\"update\":true}]', NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `airag_app` VALUES ('2009516824079048705', 'admin', '2026-01-09 14:45:21', 'admin', '2026-01-22 09:58:10', 'A05A01A01', NULL, '多模态文件_示例', NULL, NULL, 'chatSimple', '', '# 角色:多模态信息处理专家\n你是一位精通图像识别与文本分析的专业助手,能够从用户提供的图片和文本中提取关键信息,并进行综合性的总结与洞察。\n\n## 目标:\n1. 准确、高效地从用户提供的图片和文本中提取核心信息。\n2. 将提取出的多模态信息进行整合、关联与分析,生成一份结构清晰、重点突出的总结报告。\n\n## 技能:\n1. **图像内容解析**:能够识别图片中的物体、场景、文字、人物动作、情绪及潜在含义。\n2. **文本信息提取**:能够从文本中抓取关键事实、数据、观点、情感倾向和逻辑结构。\n3. **跨模态关联分析**:能够发现图片与文本信息之间的互补、印证或矛盾关系,并进行关联性解读。\n4. **结构化总结**:能够将零散信息组织成逻辑连贯、层次分明的总结,突出核心结论与洞察。\n\n## 工作流:\n1. **信息接收与确认**:首先,请用户提供需要处理的图片和文本。确认接收后,告知用户你已准备开始分析。\n2. **分项提取**:\n * **对于图片**:逐一描述每张图片的视觉内容,包括但不限于主体对象、背景环境、文字信息(如有)、色彩氛围及可能传达的意图或情感。\n * **对于文本**:提炼文本的核心主题、关键论点、重要数据、主要结论及作者的情感或立场。\n3. **综合分析与关联**:对比分析提取出的图片信息和文本信息。指出它们之间是否存在主题一致性、信息补充、例证关系或潜在冲突。挖掘图片可能为文本提供的视觉证据,或文本为图片提供的背景解释。\n4. **生成总结报告**:基于以上分析,生成一份综合性总结。报告应包含:\n * **总体概述**:用一两句话概括所有材料共同表达的核心主题或事件。\n * **关键信息点**:分点列出从图片和文本中提取出的最重要的事实、发现或观点。\n * **关联洞察**:阐述图片与文本如何相互支撑或共同构建了一个更完整的叙事。\n * **潜在疑问或需核实点**:如果发现信息模糊、矛盾或需要进一步验证的地方,在此处明确指出。\n\n## 输出格式:\n请以清晰的Markdown格式组织你的回复。使用标题(如“### 图片分析”、“### 文本提炼”、“### 综合总结”)来划分不同部分。在总结部分,优先使用列表和要点来呈现信息,确保报告易于阅读和理解。\n\n## 限制:\n- 所有对图片内容的描述应基于可见的视觉元素进行客观陈述,避免过度主观臆测。对于不确定的解读,使用“可能”、“似乎”等词语,或标注“[推测]”。\n- 总结必须严格基于用户提供的材料,不得引入外部知识或编造信息。对于无法从材料中得出的结论,不得妄下判断。\n- 若用户提供的图片无法显示或文本无法读取,应明确告知用户并请求重新提供。\n- 遵守伦理规范,不传播或总结涉及隐私泄露、歧视性内容或违法信息的材料。如遇此类内容,应停止处理并提示用户。', '1890232564262739969', '', NULL, 'enable', 1, '{\"modelInfo\":{\"provider\":\"OPENAI\",\"modelType\":\"LLM\",\"modelName\":\"gpt-4o-mini\"}}', '[]', NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `airag_app` VALUES ('2010634128233779202', 'admin', '2026-01-12 16:45:07', 'admin', '2026-01-23 18:03:13', 'A05A01A01', NULL, 'AI写作_示例', NULL, NULL, 'chatSimple', '', '## 角色:精准内容与段落配图生成专家\n你是一位专业的内容生成助手,能够严格按照用户指定的格式、语气、长度和语言要求,直接输出精准匹配的最终内容,并为每个独立段落配上 1 张高相关度的图片。\n## 任务类型识别\n1. 回复类任务:当用户提供原始问题和参考回复时,仅基于给定内容生成精准回复,不得额外添加无关信息(如通知、背景介绍等)。\n2. 文章类任务:当用户提供主题时,撰写结构清晰、内容准确的完整文章,可包含引言、主体段落、总结等部分。\n## 目标\n1. **严格遵循指令**:完全按照用户指定的格式、语气、语言和长度要求生成内容。\n2. **直接输出结果**:仅输出符合要求的正文内容和对应的段落配图,不包含任何额外的标题、解释、道歉或中间过程。\n3. **逐段精准配图**:为每一个独立的段落匹配 1 张与该段内容强相关的图片,图片直接插入到对应段落的末尾,而非统一放在全文结尾。\n4. **适配两种模式**:既能独立创作短文并逐段配图,也能基于给定的原文和参考内容生成精准回复并逐段配图。\n## 核心规则\n1. 严格匹配要求:必须完全遵循用户指定的格式、语气、长度和语言要求。\n\n## 技能\n1. **精准指令解析**:准确识别用户的创作模式(独立创作 / 回复)、格式(消息 / 邮件等)、语气(友善 / 专业等)、语言(中文 / 英文等)和长度(短 / 中 / 长)。\n2. **无冗余输出**:仅生成符合要求的正文内容,不添加任何指令外的信息。\n3. **独立创作能力**:针对独立创作需求,能围绕核心主题生成结构清晰、语言流畅的短文。\n4. **精准回复能力**:针对回复需求,能基于原文和参考内容生成精准匹配的简短回复。\n5. **逐段配图能力**:为每个独立段落提取精准关键词,调用图片工具完成搜索,图片直接插入到对应段落的末尾。\n6. **避免搜索死循环**:每个图片仅使用 1-2 个精准关键词一次搜索完成,不反复调整关键词。\n7. **内容精准性**:回复类内容必须与参考内容完全一致,不得扩写;文章类内容必须准确、专业,不虚构事实。\n## 工作流(内部执行,不对外展示)\n1. **识别需求类型**:判断用户需求是独立创作短文,还是基于给定内容生成回复。\n2. **解析参数要求**:提取并确认格式、语气、语言、长度等所有约束条件。\n3. **生成精准内容**:\n - 独立创作:围绕核心主题,生成符合长度和语气要求的正文,并自然分段。\n - 回复:基于原文和参考内容,生成精准匹配的简短回复,并自然分段。\n4. **逐段匹配配图**:为每个独立段落提取 1-2 个与该段内容强相关的关键词,调用图片工具完成搜索。\n5. **整合输出**:将图片以路径的方式直接插入到对应段落的末尾,仅输出最终的图文内容,不包含任何额外信息或中间过程。\n## 限制\n- 禁止输出标题、解释、过程或额外说明。\n- 只对重点内容配图,非重点内容不配图。\n- 图片必须与重点内容高度相关。\n- 每个重点内容只配 1 张图,避免重复搜索。\n- 图片插入在重点内容附近,不集中放在结尾。\n- 语言必须符合用户指定的要求。', '1890232564262739969', '', NULL, 'enable', 1, '{\"modelInfo\":{\"provider\":\"OPENAI\",\"modelType\":\"LLM\",\"modelName\":\"gpt-4o-mini\"}}', '[]', NULL, '[{\"pluginId\":\"1988091188723412994\",\"pluginName\":\"BraveSearch\",\"category\":\"plugin\"}]', '', NULL, 1, NULL);
-- ----------------------------
-- Table structure for airag_ext_data
-- ----------------------------
DROP TABLE IF EXISTS `airag_ext_data`;
CREATE TABLE `airag_ext_data` (
`id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '主键ID',
`biz_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '业务类型标识( evaluator:评估器;track:测试追踪 )',
`name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称',
`descr` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '描述信息',
`tags` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '标签,多个用逗号分隔',
`data_value` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '实际存储内容,json',
`status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '状态(run:进行中 completed:已完成)',
`dataset_value` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '评测集数据',
`metadata` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '元数据,用于存储补充业务数据信息',
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '修改人',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
`sys_org_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '所属部门',
`tenant_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '租户id',
`version` int(10) NULL DEFAULT NULL COMMENT '版本1开始',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_biz`(`biz_type`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '通用扩展数据表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of airag_ext_data
-- ----------------------------
-- ----------------------------
-- Table structure for airag_flow
-- ----------------------------
DROP TABLE IF EXISTS `airag_flow`;
CREATE TABLE `airag_flow` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建日期',
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新日期',
`sys_org_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '所属部门',
`tenant_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '租户id',
`application_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '应用名称',
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称',
`descr` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '描述',
`icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '应用图标',
`chain` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '编排规则',
`design` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '编排设计',
`status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '状态(enable=启用、disable=禁用、release=发布)',
`metadata` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '元数据',
`trigger_cron` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT 'cron定时任务触发器配置JSON',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of airag_flow
-- ----------------------------
INSERT INTO `airag_flow` VALUES ('1892185624983658497', 'admin', '2025-02-19 20:13:03', 'jeecg', '2025-04-24 12:25:08', 'A04', NULL, 'jeecg', '示例_条件分支', NULL, NULL, 'THEN(\n start.tag(\'start-node\'),\n SWITCH(switch.tag(\'a448577f-9824-415b-97f6-72543fcb619d\')).to(\n end.tag(\'91a7df56-107c-4f83-b1e4-b1b7e392c4e3\'),\n end.tag(\'162160595291774976\')\n ).tag(\'a448577f-9824-415b-97f6-72543fcb619d\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":300,\"y\":515,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{},\"inputParams\":[{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":false},{\"field\":\"content\",\"name\":\"用户问题\",\"type\":\"string\",\"required\":true}],\"outputParams\":[],\"height\":92,\"width\":332}},{\"id\":\"a448577f-9824-415b-97f6-72543fcb619d\",\"type\":\"switch\",\"x\":731,\"y\":486,\"properties\":{\"text\":\"条件分支\",\"options\":{\"if\":[{\"logic\":\"AND\",\"conditions\":[{\"nodeId\":\"start-node\",\"field\":\"question\",\"operator\":\"CONTAINS\",\"value\":\"jeecg\"}],\"next\":\"162160595291774976\"}],\"else\":{\"next\":\"91a7df56-107c-4f83-b1e4-b1b7e392c4e3\"}},\"inputParams\":[],\"outputParams\":[{\"field\":\"index\",\"name\":\"分支索引\",\"type\":\"number\"}],\"width\":332,\"height\":118}},{\"id\":\"91a7df56-107c-4f83-b1e4-b1b7e392c4e3\",\"type\":\"end\",\"x\":1085,\"y\":662,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":true,\"outputContent\":\"{{res}}不包含jeecg\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"question\",\"name\":\"res\",\"nodeId\":\"start-node\"}],\"height\":136,\"width\":332}},{\"id\":\"162160595291774976\",\"type\":\"end\",\"x\":1084,\"y\":361,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":true,\"outputContent\":\"{{res}}包含jeecg\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"question\",\"name\":\"res\",\"nodeId\":\"start-node\"}],\"height\":136,\"width\":332}}],\"edges\":[{\"id\":\"d5124609-d92e-4966-aff8-e220d0d1dbcd\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"a448577f-9824-415b-97f6-72543fcb619d\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"a448577f-9824-415b-97f6-72543fcb619d_input\",\"pointsList\":[{\"x\":466,\"y\":500},{\"x\":566,\"y\":500},{\"x\":465,\"y\":458},{\"x\":565,\"y\":458}]},{\"id\":\"ea3d924a-e4fd-4bb4-bc8a-d1f07119a7eb\",\"type\":\"base-edge\",\"sourceNodeId\":\"a448577f-9824-415b-97f6-72543fcb619d\",\"targetNodeId\":\"91a7df56-107c-4f83-b1e4-b1b7e392c4e3\",\"sourceAnchorId\":\"a448577f-9824-415b-97f6-72543fcb619d_source_else\",\"targetAnchorId\":\"91a7df56-107c-4f83-b1e4-b1b7e392c4e3_input\",\"pointsList\":[{\"x\":897,\"y\":518},{\"x\":997,\"y\":518},{\"x\":819,\"y\":625},{\"x\":919,\"y\":625}]},{\"id\":\"162161801783320576\",\"type\":\"base-edge\",\"sourceNodeId\":\"a448577f-9824-415b-97f6-72543fcb619d\",\"targetNodeId\":\"162160595291774976\",\"sourceAnchorId\":\"a448577f-9824-415b-97f6-72543fcb619d_source_if\",\"targetAnchorId\":\"162160595291774976_input\",\"pointsList\":[{\"x\":897,\"y\":492},{\"x\":997,\"y\":492},{\"x\":818,\"y\":324},{\"x\":918,\"y\":324}]}]}', 'enable', '{\"outputs\":[{\"field\":\"outputText\",\"type\":\"string\"}],\"inputs\":[{\"field\":\"question\",\"name\":\"用户问题\",\"required\":true,\"type\":\"string\"},{\"field\":\"history\",\"name\":\"历史记录\",\"required\":true,\"type\":\"string[]\"},{\"field\":\"content\",\"name\":\"用户问题\",\"required\":true,\"type\":\"string\"}]}', NULL);
INSERT INTO `airag_flow` VALUES ('1892774140436287490', 'jeecg', '2025-02-21 11:11:36', 'jeecg', '2025-04-24 12:27:02', 'A04', NULL, 'jeecg', '示例_LLM', '', NULL, 'THEN(\n start.tag(\'start-node\'),\n llm.tag(\'e9f3470a-f129-4baf-880a-294d7b3bff93\'),\n end.tag(\'9eb6f5c7-94a6-421f-aa39-7cfd7cec44f1\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":273,\"y\":419,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{},\"inputParams\":[{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":false},{\"field\":\"content\",\"name\":\"用户问题\",\"type\":\"string\",\"required\":true}],\"outputParams\":[],\"height\":92,\"width\":332}},{\"id\":\"e9f3470a-f129-4baf-880a-294d7b3bff93\",\"type\":\"llm\",\"x\":708,\"y\":435,\"properties\":{\"text\":\"llm\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"你将扮演一个人物角色李白,以下是关于这个角色的详细设定,请根据这些信息来构建你的回答。 \\n\\n**人物基本信息:**\\n- 你是:李白\\n- 人称:第一人称\\n- 出身背景与上下文:李白出生于安西都护府碎叶城(今吉尔吉斯斯坦托克马克市附近),五岁时随父迁居绵州昌隆县(今四川江油)。他出身于富商家庭,家境优渥,自幼接受良好的教育,遍览诸子百家之书,展现出极高的文学天赋与才情,且喜好剑术,心怀远大抱负,立志在政治与文学上都有所建树,一生渴望入仕报国,却又历经坎坷波折,在仕途上起起落落,最终在诗酒与游历中度过了其传奇的一生。\\n**性格特点:**\\n- 豪放不羁:他不受世俗礼教束缚,行事洒脱,常以狂放之态示人,饮酒作乐,挥毫泼墨,尽显自由奔放的性情。例如 “我本楚狂人,凤歌笑孔丘”,敢于对传统观念表达自己的不羁态度。\\n- 自信豁达:坚信自己的才华与能力,面对困境与挫折时总能以豁达胸怀看待。像 “天生我材必有用,千金散尽还复来”,即便遭遇仕途不顺、生活潦倒,依然对未来充满信心。\\n- 重情重义:珍视友情,与众多友人诗酒唱和,在与友人分别时也会真情流露,如 “桃花潭水深千尺,不及汪伦送我情”,用深情笔触描绘出对友人的不舍与感激。\\n- 浪漫洒脱:充满天马行空的想象,其诗中多有对神仙世界、奇幻自然的描绘,追求精神上的自由与超脱,如 “飞流直下三千尺,疑是银河落九天” 这般充满奇幻瑰丽想象的诗句便是他浪漫性情的写照。\\n**语言风格:**\\n- 富有想象力与夸张手法:常以夸张的笔触描绘事物,营造出强烈的艺术感染力与震撼力,使读者仿佛身临其境。如 “白发三千丈,缘愁似个长”,用极度夸张的白发长度来形容愁绪之深。 \\n- 语言优美且自然流畅:用词精准华丽,却又毫无雕琢之感,诗句如行云流水般自然,读来朗朗上口,兼具音乐性与节奏感。像 “故人西辞黄鹤楼,烟花三月下扬州。孤帆远影碧空尽,唯见长江天际流”,文字优美,意境深远,节奏明快。 \\n- 善用典故与比喻:通过巧妙运用历史典故和形象比喻,增添诗歌的文化底蕴与内涵深度,使诗句更加含蓄蕴藉又易于理解。例如 “闲来垂钓碧溪上,忽复乘舟梦日边”,借用姜太公垂钓与伊尹梦日的典故表达自己对仕途的期待。 \\n**人际关系:**\\n- 与杜甫:李白与杜甫堪称唐代诗坛的双子星,二人相互倾慕,结下深厚情谊。他们曾一同游历,在诗歌创作上相互切磋交流,杜甫有多首诗表达对李白的思念与敬仰,李白也对杜甫颇为欣赏,他们的友情成为文学史上的佳话。\\n- 与汪伦:汪伦以美酒盛情款待李白,李白深受感动,留下 “桃花潭水深千尺,不及汪伦送我情” 的千古名句,可见他们之间真挚的友情。\\n- 与贺知章:贺知章对李白的才华极为赏识,称其为 “谪仙人”,二人在长安官场与诗坛都有交往,这种知遇之情对李白的声誉与心境都产生了积极影响。\\n- 与唐玄宗:李白曾受唐玄宗征召入宫,供奉翰林,本以为可大展政治抱负,然而玄宗只是将他视为文学侍从,为宫廷宴乐作诗助兴,这段君臣关系最终以李白被赐金放还而告终,使李白在仕途理想上遭受重大挫折。\\n**经典台词或口头禅:**\\n- 台词1:“仰天大笑出门去,我辈岂是蓬蒿人。” 表达出其对自身才华的自信以及即将踏入仕途、一展宏图的豪迈与喜悦。 \\n- 台词2:“安能摧眉折腰事权贵,使我不得开心颜。” 体现出他不向权贵低头,坚守人格尊严与精神自由的高尚情操与不屈性格。\\n- 台词2:“长风破浪会有时,直挂云帆济沧海。” 展现出面对困难时的乐观态度与坚定信念,相信总有一天能够乘风破浪,实现理想抱负。\\n\\n要求: \\n- 根据上述提供的角色设定,以第一人称视角进行表达。 \\n- 在回答时,尽可能地融入该角色的性格特点、语言风格以及其特有的口头禅或经典台词。\\n- 如果适用的话,在适当的地方加入()内的补充信息,如动作、神情等,以增强对话的真实感和生动性。 \"},{\"role\":\"user\",\"content\":\"{{inParam1}}\"}]},\"inputParams\":[{\"nodeId\":\"start-node\",\"name\":\"inParam1\",\"field\":\"content\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"text\"}],\"width\":332,\"height\":180}},{\"id\":\"9eb6f5c7-94a6-421f-aa39-7cfd7cec44f1\",\"type\":\"end\",\"x\":1186,\"y\":467,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":true,\"outputContent\":\"回复:{{回复内容}}\"},\"inputParams\":[],\"outputParams\":[{\"nodeId\":\"e9f3470a-f129-4baf-880a-294d7b3bff93\",\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"text\"}],\"width\":332,\"height\":136}}],\"edges\":[{\"id\":\"ab818150-d4e5-4be2-8d80-31b7f48dc318\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"e9f3470a-f129-4baf-880a-294d7b3bff93\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"e9f3470a-f129-4baf-880a-294d7b3bff93_input\",\"pointsList\":[{\"x\":439,\"y\":404},{\"x\":539,\"y\":404},{\"x\":442,\"y\":376},{\"x\":542,\"y\":376}]},{\"id\":\"158143255481139200\",\"type\":\"base-edge\",\"sourceNodeId\":\"e9f3470a-f129-4baf-880a-294d7b3bff93\",\"targetNodeId\":\"9eb6f5c7-94a6-421f-aa39-7cfd7cec44f1\",\"sourceAnchorId\":\"e9f3470a-f129-4baf-880a-294d7b3bff93_output\",\"targetAnchorId\":\"9eb6f5c7-94a6-421f-aa39-7cfd7cec44f1_input\",\"pointsList\":[{\"x\":874,\"y\":376},{\"x\":974,\"y\":376},{\"x\":920,\"y\":430},{\"x\":1020,\"y\":430}]}]}', 'enable', '{\"outputs\":[{\"field\":\"outputText\",\"type\":\"string\"}],\"inputs\":[{\"field\":\"history\",\"name\":\"历史记录\",\"required\":false,\"type\":\"string[]\"},{\"field\":\"content\",\"name\":\"用户问题\",\"required\":true,\"type\":\"string\"}]}', NULL);
INSERT INTO `airag_flow` VALUES ('1896799016980885506', 'admin', '2025-03-04 13:45:01', 'jeecg', '2025-04-24 12:26:54', 'A04', '', 'jeecg', '示例_分类器', NULL, NULL, 'THEN(\n start.tag(\'start-node\'),\n SWITCH(classifier.tag(\'159899349256073216\')).to(\n end.tag(\'159899421356158976\'),\n end.tag(\'159899641326432256\'),\n end.tag(\'159900616165302272\'),\n end.tag(\'160202618435485696\')\n ).tag(\'159899349256073216\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":334,\"y\":653,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{},\"inputParams\":[{\"field\":\"content\",\"name\":\"内容\",\"type\":\"string\",\"required\":true},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":false}],\"outputParams\":[],\"height\":92,\"width\":332}},{\"id\":\"159899349256073216\",\"type\":\"classifier\",\"x\":714,\"y\":719,\"properties\":{\"text\":\"分类器\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"gpt-4o-mini\",\"temperature\":0.7}},\"categories\":[{\"category\":\"用户问的问题是关于编程的\",\"next\":\"159899421356158976\"},{\"category\":\"用户问的问题是关于食谱的\",\"next\":\"159899641326432256\"},{\"category\":\"其他问题\",\"next\":\"159900616165302272\"}],\"else\":{\"next\":\"160202618435485696\"}},\"inputParams\":[{\"field\":\"content\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"index\",\"name\":\"分类索引\",\"type\":\"number\"},{\"field\":\"content\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":224,\"width\":332}},{\"id\":\"159899421356158976\",\"type\":\"end\",\"x\":1144,\"y\":566,\"properties\":{\"text\":\"结束1\",\"options\":{\"outputText\":true,\"outputContent\":\"分类:{{分类索引}}\\n-------\\n{{回复内容}}\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"index\",\"name\":\"分类索引\",\"nodeId\":\"159899349256073216\"},{\"field\":\"content\",\"name\":\"回复内容\",\"nodeId\":\"159899349256073216\"}],\"height\":136,\"width\":332}},{\"id\":\"159899641326432256\",\"type\":\"end\",\"x\":1144,\"y\":715,\"properties\":{\"text\":\"结束2\",\"options\":{\"outputText\":true,\"outputContent\":\"分类:{{分类索引}}\\n-------\\n{{回复内容}}\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"index\",\"name\":\"分类索引\",\"nodeId\":\"159899349256073216\"},{\"field\":\"content\",\"name\":\"回复内容\",\"nodeId\":\"159899349256073216\"}],\"height\":136,\"width\":332}},{\"id\":\"159900616165302272\",\"type\":\"end\",\"x\":1144,\"y\":864,\"properties\":{\"text\":\"结束3\",\"options\":{\"outputText\":true,\"outputContent\":\"分类:{{分类索引}}\\n-------\\n{{回复内容}}\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"index\",\"name\":\"分类索引\",\"nodeId\":\"159899349256073216\"},{\"field\":\"content\",\"name\":\"回复内容\",\"nodeId\":\"159899349256073216\"}],\"height\":136,\"width\":332}},{\"id\":\"160202618435485696\",\"type\":\"end\",\"x\":1146,\"y\":1001,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"content\",\"name\":\"res\",\"nodeId\":\"159899349256073216\"}],\"height\":114,\"width\":332}}],\"edges\":[{\"id\":\"159899349260267520\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"159899349256073216\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"159899349256073216_input\",\"pointsList\":[{\"x\":500,\"y\":638},{\"x\":600,\"y\":638},{\"x\":448,\"y\":638},{\"x\":548,\"y\":638}]},{\"id\":\"159899421356158977\",\"type\":\"base-edge\",\"sourceNodeId\":\"159899349256073216\",\"targetNodeId\":\"159899421356158976\",\"sourceAnchorId\":\"159899349256073216_case_1\",\"targetAnchorId\":\"159899421356158976_input\",\"pointsList\":[{\"x\":880,\"y\":672},{\"x\":980,\"y\":672},{\"x\":878,\"y\":529},{\"x\":978,\"y\":529}]},{\"id\":\"159899706925346816\",\"type\":\"base-edge\",\"sourceNodeId\":\"159899349256073216\",\"targetNodeId\":\"159899641326432256\",\"sourceAnchorId\":\"159899349256073216_case_2\",\"targetAnchorId\":\"159899641326432256_input\",\"pointsList\":[{\"x\":880,\"y\":716},{\"x\":980,\"y\":716},{\"x\":878,\"y\":678},{\"x\":978,\"y\":678}]},{\"id\":\"159900640542597120\",\"type\":\"base-edge\",\"sourceNodeId\":\"159899349256073216\",\"targetNodeId\":\"159900616165302272\",\"sourceAnchorId\":\"159899349256073216_case_3\",\"targetAnchorId\":\"159900616165302272_input\",\"pointsList\":[{\"x\":880,\"y\":760},{\"x\":980,\"y\":760},{\"x\":878,\"y\":827},{\"x\":978,\"y\":827}]},{\"id\":\"177966745116012544\",\"type\":\"base-edge\",\"sourceNodeId\":\"159899349256073216\",\"targetNodeId\":\"160202618435485696\",\"sourceAnchorId\":\"159899349256073216_case_else\",\"targetAnchorId\":\"160202618435485696_input\",\"pointsList\":[{\"x\":880,\"y\":804},{\"x\":980,\"y\":804},{\"x\":880,\"y\":975},{\"x\":980,\"y\":975}]}]}', 'enable', '{\"outputs\":[{\"field\":\"outputText\",\"type\":\"string\"},{\"field\":\"content\",\"name\":\"res\",\"nodeId\":\"159899349256073216\"}],\"inputs\":[{\"field\":\"content\",\"name\":\"内容\",\"required\":true,\"type\":\"string\"},{\"field\":\"history\",\"name\":\"历史记录\",\"required\":false,\"type\":\"string[]\"}]}', NULL);
INSERT INTO `airag_flow` VALUES ('1897212806596395009', 'jeecg', '2025-03-05 17:09:16', 'admin', '2025-11-27 17:39:56', 'A04', NULL, 'jeecg', '示例_Jeecg产品助手流程', NULL, NULL, 'THEN(\n start.tag(\'start-node\'),\n SWITCH(switch.tag(\'160312505863614464\')).to(\n THEN(\n knowledge.tag(\'160312352087846912\'),\n llm.tag(\'160312692635971584\'),\n end.tag(\'160312258504536064\')\n ).tag(\"160312352087846912\"),\n end.tag(\'162075194587365376\'),\n THEN(\n knowledge.tag(\'257078850004389888\'),\n llm.tag(\'160311787014434816\'),\n end.tag(\'160312258504536064\')\n ).tag(\"257078850004389888\")\n ).tag(\'160312505863614464\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":32.04347826086956,\"y\":-57.34782608695656,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{},\"inputParams\":[{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":false},{\"field\":\"content\",\"name\":\"用户问题\",\"type\":\"string\",\"required\":true}],\"outputParams\":[],\"height\":92,\"width\":332}},{\"id\":\"160311787014434816\",\"type\":\"llm\",\"x\":1018.1304347826085,\"y\":-392.304347826087,\"properties\":{\"text\":\"JeecgLLM\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"\"},{\"role\":\"user\",\"content\":\"{{question}}\"}]},\"inputParams\":[{\"field\":\"content\",\"name\":\"question\",\"nodeId\":\"start-node\"},{\"field\":\"data\",\"name\":\"doc\",\"nodeId\":\"160311730106118144\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":158,\"width\":332}},{\"id\":\"160312258504536064\",\"type\":\"end\",\"x\":1370.695652173913,\"y\":-273.21739130434787,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":true,\"outputContent\":\"{{jeecgResult}}{{jmResult}}\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"text\",\"name\":\"jeecgResult\",\"nodeId\":\"160311787014434816\"},{\"field\":\"text\",\"name\":\"jmResult\",\"nodeId\":\"160312692635971584\"}],\"height\":136,\"width\":332}},{\"id\":\"160312352087846912\",\"type\":\"knowledge\",\"x\":619.1739130434784,\"y\":-128.36956521739137,\"properties\":{\"text\":\"积木知识库\",\"options\":{\"knowIds\":[\"1897212906878009346\"],\"topNumber\":5,\"similarity\":0.7},\"inputParams\":[{\"field\":\"content\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"documents\",\"name\":\"文档列表\",\"type\":\"object[]\"},{\"field\":\"data\",\"name\":\"文档内容\",\"type\":\"string\"}],\"height\":163,\"width\":332,\"remarks\":\"积木报表知识库\"}},{\"id\":\"160312505863614464\",\"type\":\"switch\",\"x\":268.82608695652175,\"y\":-251.95652173913044,\"properties\":{\"text\":\"条件分支\",\"options\":{\"if\":[{\"logic\":\"OR\",\"conditions\":[{\"nodeId\":\"start-node\",\"field\":\"content\",\"operator\":\"CONTAINS\",\"value\":\"jeecg\"},{\"nodeId\":\"start-node\",\"field\":\"content\",\"operator\":\"CONTAINS\",\"value\":\"JeecgBoot\"}],\"next\":\"257078850004389888\"},{\"logic\":\"OR\",\"conditions\":[{\"nodeId\":\"start-node\",\"field\":\"content\",\"operator\":\"CONTAINS\",\"value\":\"jimu\"},{\"nodeId\":\"start-node\",\"field\":\"content\",\"operator\":\"CONTAINS\",\"value\":\"积木\"},{\"nodeId\":\"start-node\",\"field\":\"content\",\"operator\":\"CONTAINS\",\"value\":\"报表\"}],\"next\":\"160312352087846912\"}],\"else\":{\"next\":\"162075194587365376\"}},\"inputParams\":[],\"outputParams\":[{\"field\":\"index\",\"name\":\"分支索引\",\"type\":\"number\"}],\"height\":144,\"width\":332}},{\"id\":\"160312692635971584\",\"type\":\"llm\",\"x\":1013.478260869565,\"y\":-190.78260869565224,\"properties\":{\"text\":\"JmLLM\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"\"},{\"role\":\"user\",\"content\":\"{{question}}\"}]},\"inputParams\":[{\"field\":\"content\",\"name\":\"question\",\"nodeId\":\"start-node\"},{\"field\":\"data\",\"name\":\"doc\",\"nodeId\":\"160312352087846912\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":158,\"width\":332}},{\"id\":\"162075194587365376\",\"type\":\"end\",\"x\":599.8260869565215,\"y\":71.91304347826087,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":true,\"outputContent\":\"我不知道这个问题怎么回答呦。\"},\"inputParams\":[],\"outputParams\":[],\"height\":114,\"width\":332}},{\"id\":\"257078850004389888\",\"type\":\"knowledge\",\"x\":602.8260869565217,\"y\":-441.95652173913044,\"properties\":{\"text\":\"知识库\",\"options\":{\"knowIds\":[\"1897926563148648449\"],\"topNumber\":5,\"similarity\":0.7},\"inputParams\":[{\"field\":\"content\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"documents\",\"name\":\"文档列表\",\"type\":\"object[]\"},{\"field\":\"data\",\"name\":\"文档内容\",\"type\":\"string\"}],\"height\":136,\"width\":332}}],\"edges\":[{\"id\":\"160312258508730368\",\"type\":\"base-edge\",\"sourceNodeId\":\"160311787014434816\",\"targetNodeId\":\"160312258504536064\",\"sourceAnchorId\":\"160311787014434816_output\",\"targetAnchorId\":\"160312258504536064_input\",\"pointsList\":[{\"x\":1184.1304347826085,\"y\":-440.304347826087},{\"x\":1284.1304347826085,\"y\":-440.304347826087},{\"x\":1104.695652173913,\"y\":-310.21739130434787},{\"x\":1204.695652173913,\"y\":-310.21739130434787}]},{\"id\":\"160312505863614465\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"160312505863614464\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"160312505863614464_input\",\"pointsList\":[{\"x\":198.04347826086956,\"y\":-72.34782608695656},{\"x\":298.04347826086956,\"y\":-72.34782608695656},{\"x\":2.826086956521749,\"y\":-292.95652173913044},{\"x\":102.82608695652175,\"y\":-292.95652173913044}]},{\"id\":\"160312567750569984\",\"type\":\"base-edge\",\"sourceNodeId\":\"160312505863614464\",\"targetNodeId\":\"160312352087846912\",\"sourceAnchorId\":\"160312505863614464_case_2\",\"targetAnchorId\":\"160312352087846912_input\",\"pointsList\":[{\"x\":434.82608695652175,\"y\":-232.95652173913044},{\"x\":534.8260869565217,\"y\":-232.95652173913044},{\"x\":353.17391304347836,\"y\":-178.86956521739137},{\"x\":453.17391304347836,\"y\":-178.86956521739137}]},{\"id\":\"160312692635971585\",\"type\":\"base-edge\",\"sourceNodeId\":\"160312352087846912\",\"targetNodeId\":\"160312692635971584\",\"sourceAnchorId\":\"160312352087846912_output\",\"targetAnchorId\":\"160312692635971584_input\",\"pointsList\":[{\"x\":785.1739130434784,\"y\":-178.86956521739137},{\"x\":885.1739130434784,\"y\":-178.86956521739137},{\"x\":747.478260869565,\"y\":-238.78260869565224},{\"x\":847.478260869565,\"y\":-238.78260869565224}]},{\"id\":\"160312712797990912\",\"type\":\"base-edge\",\"sourceNodeId\":\"160312692635971584\",\"targetNodeId\":\"160312258504536064\",\"sourceAnchorId\":\"160312692635971584_output\",\"targetAnchorId\":\"160312258504536064_input\",\"pointsList\":[{\"x\":1179.478260869565,\"y\":-238.78260869565224},{\"x\":1279.478260869565,\"y\":-238.78260869565224},{\"x\":1104.695652173913,\"y\":-310.21739130434787},{\"x\":1204.695652173913,\"y\":-310.21739130434787}]},{\"id\":\"162116168161726464\",\"type\":\"base-edge\",\"sourceNodeId\":\"160312505863614464\",\"targetNodeId\":\"162075194587365376\",\"sourceAnchorId\":\"160312505863614464_source_else\",\"targetAnchorId\":\"162075194587365376_input\",\"pointsList\":[{\"x\":434.82608695652175,\"y\":-206.95652173913044},{\"x\":534.8260869565217,\"y\":-206.95652173913044},{\"x\":333.8260869565215,\"y\":45.913043478260875},{\"x\":433.8260869565215,\"y\":45.913043478260875}]},{\"id\":\"257078850008584192\",\"type\":\"base-edge\",\"sourceNodeId\":\"160312505863614464\",\"targetNodeId\":\"257078850004389888\",\"sourceAnchorId\":\"160312505863614464_source_if\",\"targetAnchorId\":\"257078850004389888_input\",\"pointsList\":[{\"x\":434.82608695652175,\"y\":-258.95652173913044},{\"x\":534.8260869565217,\"y\":-258.95652173913044},{\"x\":336.82608695652175,\"y\":-478.95652173913044},{\"x\":436.82608695652175,\"y\":-478.95652173913044}]},{\"id\":\"257078872452304896\",\"type\":\"base-edge\",\"sourceNodeId\":\"257078850004389888\",\"targetNodeId\":\"160311787014434816\",\"sourceAnchorId\":\"257078850004389888_output\",\"targetAnchorId\":\"160311787014434816_input\",\"pointsList\":[{\"x\":768.8260869565217,\"y\":-478.95652173913044},{\"x\":868.8260869565217,\"y\":-478.95652173913044},{\"x\":752.1304347826085,\"y\":-440.304347826087},{\"x\":852.1304347826085,\"y\":-440.304347826087}]}]}', 'enable', '{\"outputs\":[{\"field\":\"outputText\",\"type\":\"string\"}],\"inputs\":[{\"field\":\"history\",\"name\":\"历史记录\",\"required\":false,\"type\":\"string[]\"},{\"field\":\"content\",\"name\":\"用户问题\",\"required\":true,\"type\":\"string\"}]}', NULL);
INSERT INTO `airag_flow` VALUES ('1897482706871164929', 'jeecg', '2025-03-06 11:01:45', 'jeecg', '2025-04-24 12:27:58', 'A04', NULL, 'jeecg', '示例_脚本组件', NULL, NULL, 'THEN(\n start.tag(\'start-node\'),\n code_160582647542648832.tag(\'code_160582647542648832\'),\n end.tag(\'160583273626406912\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":300,\"y\":455,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{},\"inputParams\":[{\"field\":\"content\",\"name\":\"内容\",\"type\":\"string\",\"required\":true},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":false},{\"field\":\"question\",\"name\":\"内容2\",\"type\":\"string\",\"required\":true}],\"outputParams\":[],\"height\":92,\"width\":332}},{\"id\":\"code_160582647542648832\",\"type\":\"code\",\"x\":786,\"y\":488,\"properties\":{\"text\":\"脚本执行\",\"options\":{\"codeType\":\"javascript\",\"code\":\"function main(params) {\\n return {\\n result: params.arg1 + \'_拼接_\' + params.arg2,\\n }\\n}\"},\"inputParams\":[{\"field\":\"content\",\"name\":\"arg1\",\"nodeId\":\"start-node\"},{\"field\":\"question\",\"name\":\"arg2\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"result\",\"name\":\"返回结果\",\"type\":\"string\",\"required\":false}],\"height\":158,\"width\":332}},{\"id\":\"160583273626406912\",\"type\":\"end\",\"x\":1272,\"y\":466,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"{{res}}\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"result\",\"name\":\"res\",\"nodeId\":\"code_160582647542648832\"}],\"height\":114,\"width\":332}}],\"edges\":[{\"id\":\"160582647546843136\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"code_160582647542648832\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"code_160582647542648832_input\",\"pointsList\":[{\"x\":466,\"y\":440},{\"x\":566,\"y\":440},{\"x\":520,\"y\":440},{\"x\":620,\"y\":440}]},{\"id\":\"160583273626406913\",\"type\":\"base-edge\",\"sourceNodeId\":\"code_160582647542648832\",\"targetNodeId\":\"160583273626406912\",\"sourceAnchorId\":\"code_160582647542648832_output\",\"targetAnchorId\":\"160583273626406912_input\",\"pointsList\":[{\"x\":952,\"y\":440},{\"x\":1052,\"y\":440},{\"x\":1006,\"y\":440},{\"x\":1106,\"y\":440}]}]}', 'enable', '{\"outputs\":[{\"field\":\"result\",\"name\":\"res\",\"nodeId\":\"code_160582647542648832\"}],\"inputs\":[{\"field\":\"content\",\"name\":\"内容\",\"required\":true,\"type\":\"string\"},{\"field\":\"history\",\"name\":\"历史记录\",\"required\":false,\"type\":\"string[]\"}]}', NULL);
INSERT INTO `airag_flow` VALUES ('1897496956167577601', 'jeecg', '2025-03-06 11:58:23', 'jeecg', '2025-05-20 10:16:28', 'A04', NULL, 'jeecg', '示例_java增强', NULL, NULL, 'THEN(\n start.tag(\'start-node\'),\n enhanceJava.tag(\'160591592557232128\'),\n end.tag(\'160595080985034752\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":300,\"y\":456,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{},\"inputParams\":[{\"field\":\"question\",\"name\":\"问题1\",\"type\":\"string\",\"required\":true},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":false},{\"field\":\"content\",\"name\":\"问题2\",\"type\":\"string\",\"required\":true}],\"outputParams\":[],\"height\":92,\"width\":332}},{\"id\":\"160591592557232128\",\"type\":\"enhanceJava\",\"x\":786,\"y\":499,\"properties\":{\"text\":\"Java增强\",\"options\":{\"enhance\":{\"type\":\"spring\",\"path\":\"testAiragEnhance\"}},\"inputParams\":[{\"field\":\"question\",\"name\":\"arg1\",\"nodeId\":\"start-node\"},{\"field\":\"question\",\"name\":\"arg2\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"result\",\"name\":\"返回结果\",\"type\":\"string\",\"required\":false}],\"height\":158,\"width\":332}},{\"id\":\"160595080985034752\",\"type\":\"end\",\"x\":1272,\"y\":477,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":true,\"outputContent\":\"{{res}}\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"result\",\"name\":\"res\",\"nodeId\":\"160591592557232128\"}],\"height\":136,\"width\":332}}],\"edges\":[{\"id\":\"160591592565620736\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"160591592557232128\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"160591592557232128_input\",\"pointsList\":[{\"x\":466,\"y\":441},{\"x\":566,\"y\":441},{\"x\":520,\"y\":440},{\"x\":620,\"y\":440}]},{\"id\":\"160595080989229056\",\"type\":\"base-edge\",\"sourceNodeId\":\"160591592557232128\",\"targetNodeId\":\"160595080985034752\",\"sourceAnchorId\":\"160591592557232128_output\",\"targetAnchorId\":\"160595080985034752_input\",\"pointsList\":[{\"x\":952,\"y\":440},{\"x\":1052,\"y\":440},{\"x\":1006,\"y\":440},{\"x\":1106,\"y\":440}]}]}', 'enable', '{\"outputs\":[{\"field\":\"outputText\",\"type\":\"string\"}],\"inputs\":[{\"field\":\"question\",\"name\":\"问题1\",\"required\":true,\"type\":\"string\"},{\"field\":\"history\",\"name\":\"历史记录\",\"required\":true,\"type\":\"string[]\"},{\"field\":\"content\",\"name\":\"问题2\",\"required\":true,\"type\":\"string\"}]}', NULL);
INSERT INTO `airag_flow` VALUES ('1897528240805830658', 'jeecg', '2025-03-06 14:02:42', 'admin', '2025-03-21 17:26:44', 'A04', NULL, 'jeecg', '示例_子流程', NULL, 'https://jeecgdev.oss-cn-beijing.aliyuncs.com/temp/任务流程设计选择_1742437659702.png', 'THEN(\n start.tag(\'start-node\'),\n subflow.tag(\'160621029847842816\'),\n end.tag(\'160628486900924416\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":300,\"y\":334,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{},\"inputParams\":[{\"field\":\"content\",\"name\":\"内容\",\"type\":\"string\",\"required\":true},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":true}],\"outputParams\":[],\"height\":62,\"width\":332}},{\"id\":\"160621029847842816\",\"type\":\"subflow\",\"x\":784,\"y\":334,\"properties\":{\"text\":\"子流程\",\"options\":{\"subflowId\":\"1897955542184693762\"},\"inputParams\":[{\"name\":\"question\",\"nameText\":\"用户问题\",\"field\":\"\",\"nodeId\":\"\"},{\"name\":\"content\",\"nameText\":\"用户问题\",\"field\":\"content\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"outputText\",\"name\":\"outputText\",\"type\":\"string\"}],\"height\":62,\"width\":332}},{\"id\":\"160628486900924416\",\"type\":\"end\",\"x\":1272,\"y\":334,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"outputText\",\"name\":\"result\",\"nodeId\":\"160621029847842816\"}],\"height\":62,\"width\":332}}],\"edges\":[{\"id\":\"160621029852037120\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"160621029847842816\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"160621029847842816_input\",\"pointsList\":[{\"x\":466,\"y\":334},{\"x\":566,\"y\":334},{\"x\":518,\"y\":334},{\"x\":618,\"y\":334}]},{\"id\":\"160628486905118720\",\"type\":\"base-edge\",\"sourceNodeId\":\"160621029847842816\",\"targetNodeId\":\"160628486900924416\",\"sourceAnchorId\":\"160621029847842816_output\",\"targetAnchorId\":\"160628486900924416_input\",\"pointsList\":[{\"x\":950,\"y\":334},{\"x\":1050,\"y\":334},{\"x\":1006,\"y\":334},{\"x\":1106,\"y\":334}]}]}', 'enable', '{\"outputs\":[{\"field\":\"outputText\",\"name\":\"result\",\"nodeId\":\"160621029847842816\"}],\"inputs\":[{\"field\":\"content\",\"name\":\"内容\",\"type\":\"string\"},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\"}]}', NULL);
INSERT INTO `airag_flow` VALUES ('1897552224058400770', 'jeecg', '2025-03-06 15:38:00', 'admin', '2025-06-25 23:35:33', 'A04', NULL, 'jeecg', '示例_全部脚本', '示例:脚本节点', 'https://jeecgdev.oss-cn-beijing.aliyuncs.com/temp/1流程设计_1742437645575.png', 'THEN(\n start.tag(\'start-node\'),\n llm.tag(\'160650416019521536\'),\n WHEN(\n code_160652991133433856.tag(\'code_160652991133433856\'),\n code_166081977564753920.tag(\'code_166081977564753920\'),\n code_167835393352683520.tag(\'code_167835393352683520\')\n ).tag(\"code_160652991133433856\"),\n end.tag(\'160656278891560960\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":300,\"y\":418,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{},\"inputParams\":[{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":false},{\"field\":\"content\",\"name\":\"用户问题\",\"type\":\"string\",\"required\":true}],\"outputParams\":[],\"height\":92,\"width\":332}},{\"id\":\"160650416019521536\",\"type\":\"llm\",\"x\":693,\"y\":462,\"properties\":{\"text\":\"LLM\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":null,\"topP\":0.9,\"presencePenalty\":0.1,\"frequencyPenalty\":0.1}},\"history\":4,\"messages\":[{\"role\":\"system\",\"content\":\"# 角色\\n你是一位严厉的长辈,面对用户的问题,要以一种带着隐隐批评,暗示问题简单、用户还有很多需要学习的态度来回复。通过大模型模拟李白来对话,回答用户提出的各种问题。\\n\\n\\n## 技能\\n### 技能 1: 回答问题\\n1. 当用户提出问题时,先简要评价问题较为简单,然后给出回答。\\n2. 回答完问题后,适当提及用户还需要加强学习、增长见识等内容。\\n\\n\\n## 限制:\\n- 回复内容必须逻辑清晰、语言通顺,符合严厉长辈的角色设定。 \\n\\n\"},{\"role\":\"user\",\"content\":\"{{question}}\"}]},\"inputParams\":[{\"field\":\"content\",\"name\":\"question\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":180,\"width\":332}},{\"id\":\"code_160652991133433856\",\"type\":\"code\",\"x\":1135,\"y\":179,\"properties\":{\"text\":\"js\",\"options\":{\"codeType\":\"javascript\",\"code\":\"function main(params) {\\n if(params.llmRes){\\n let resLength = params.llmRes.length\\n params.llmRes = params.llmRes + \'\\\\n字数:\'+resLength\\n }\\n return {\\n result: params.llmRes,\\n }\\n}\"},\"inputParams\":[{\"field\":\"text\",\"name\":\"llmRes\",\"nodeId\":\"160650416019521536\"}],\"outputParams\":[{\"field\":\"result\",\"name\":\"返回结果\",\"type\":\"string\",\"required\":false}],\"height\":158,\"width\":332}},{\"id\":\"160656278891560960\",\"type\":\"end\",\"x\":1653,\"y\":449,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":true,\"outputContent\":\"js:{{res}}\\ngroovy:{{res1}}\\nkotlin:{{res2}}\\npython:{{res3}}\\naviator:{{res4}}\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"result\",\"name\":\"res\",\"nodeId\":\"code_160652991133433856\"},{\"field\":\"result\",\"name\":\"res1\",\"nodeId\":\"code_166081977564753920\"},{\"field\":\"result\",\"name\":\"res2\",\"nodeId\":\"code_166090618376253440\"},{\"field\":\"result\",\"name\":\"res3\",\"nodeId\":\"code_167828303175372800\"},{\"field\":\"result\",\"name\":\"res4\",\"nodeId\":\"code_167835393352683520\"}],\"height\":136,\"width\":332}},{\"id\":\"code_166081977564753920\",\"type\":\"code\",\"x\":1140,\"y\":413,\"properties\":{\"text\":\"groovy\",\"options\":{\"codeType\":\"groovy\",\"code\":\"def main(params) {\\n if (params.llmRes) {\\n def resLength = params.llmRes.length()\\n params.llmRes += \\\"\\\\n字数:\\\" + resLength\\n }\\n return [result: params.llmRes]\\n}\"},\"inputParams\":[{\"field\":\"text\",\"name\":\"llmRes\",\"nodeId\":\"160650416019521536\"}],\"outputParams\":[{\"field\":\"result\",\"name\":\"返回结果\",\"type\":\"string\",\"required\":false}],\"height\":158,\"width\":332}},{\"id\":\"code_167835393352683520\",\"type\":\"code\",\"x\":1141,\"y\":667,\"properties\":{\"text\":\"aviator\",\"options\":{\"codeType\":\"aviator\",\"code\":\"let llmRes = params.llmRes;\\nlet resLength = length(llmRes);\\nlet res = llmRes + \\\"\\\\n字数1:\\\" + resLength;\\nlet resp = seq.map(\\\"result\\\",res);\"},\"inputParams\":[{\"field\":\"text\",\"name\":\"llmRes\",\"nodeId\":\"160650416019521536\"}],\"outputParams\":[{\"field\":\"result\",\"name\":\"返回结果\",\"type\":\"string\"}],\"height\":158,\"width\":332}}],\"edges\":[{\"id\":\"160650416019521537\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"160650416019521536\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"160650416019521536_input\",\"pointsList\":[{\"x\":466,\"y\":403},{\"x\":566,\"y\":403},{\"x\":427,\"y\":403},{\"x\":527,\"y\":403}]},{\"id\":\"160652991137628160\",\"type\":\"base-edge\",\"sourceNodeId\":\"160650416019521536\",\"targetNodeId\":\"code_160652991133433856\",\"sourceAnchorId\":\"160650416019521536_output\",\"targetAnchorId\":\"code_160652991133433856_input\",\"pointsList\":[{\"x\":859,\"y\":403},{\"x\":959,\"y\":403},{\"x\":869,\"y\":131},{\"x\":969,\"y\":131}]},{\"id\":\"160656278899949568\",\"type\":\"base-edge\",\"sourceNodeId\":\"code_160652991133433856\",\"targetNodeId\":\"160656278891560960\",\"sourceAnchorId\":\"code_160652991133433856_output\",\"targetAnchorId\":\"160656278891560960_input\",\"pointsList\":[{\"x\":1301,\"y\":131},{\"x\":1401,\"y\":131},{\"x\":1387,\"y\":412},{\"x\":1487,\"y\":412}]},{\"id\":\"166082001409372160\",\"type\":\"base-edge\",\"sourceNodeId\":\"160650416019521536\",\"targetNodeId\":\"code_166081977564753920\",\"sourceAnchorId\":\"160650416019521536_output\",\"targetAnchorId\":\"code_166081977564753920_input\",\"pointsList\":[{\"x\":859,\"y\":403},{\"x\":959,\"y\":403},{\"x\":874,\"y\":365},{\"x\":974,\"y\":365}]},{\"id\":\"166082017557442560\",\"type\":\"base-edge\",\"sourceNodeId\":\"code_166081977564753920\",\"targetNodeId\":\"160656278891560960\",\"sourceAnchorId\":\"code_166081977564753920_output\",\"targetAnchorId\":\"160656278891560960_input\",\"pointsList\":[{\"x\":1306,\"y\":365},{\"x\":1406,\"y\":365},{\"x\":1387,\"y\":412},{\"x\":1487,\"y\":412}]},{\"id\":\"167835393356877824\",\"type\":\"base-edge\",\"sourceNodeId\":\"160650416019521536\",\"targetNodeId\":\"code_167835393352683520\",\"sourceAnchorId\":\"160650416019521536_output\",\"targetAnchorId\":\"code_167835393352683520_input\",\"pointsList\":[{\"x\":859,\"y\":403},{\"x\":959,\"y\":403},{\"x\":875,\"y\":619},{\"x\":975,\"y\":619}]},{\"id\":\"167836988980817920\",\"type\":\"base-edge\",\"sourceNodeId\":\"code_167835393352683520\",\"targetNodeId\":\"160656278891560960\",\"sourceAnchorId\":\"code_167835393352683520_output\",\"targetAnchorId\":\"160656278891560960_input\",\"pointsList\":[{\"x\":1307,\"y\":619},{\"x\":1407,\"y\":619},{\"x\":1387,\"y\":412},{\"x\":1487,\"y\":412}]}]}', 'enable', '{\"outputs\":[{\"field\":\"outputText\",\"type\":\"string\"}],\"inputs\":[{\"field\":\"history\",\"name\":\"历史记录\",\"required\":false,\"type\":\"string[]\"},{\"field\":\"content\",\"name\":\"用户问题\",\"required\":true,\"type\":\"string\"}]}', NULL);
INSERT INTO `airag_flow` VALUES ('1900021198960492546', 'jeecg', '2025-03-13 11:08:49', 'admin', '2025-11-27 16:49:13', 'A04', NULL, 'jeecg', '示例_回复节点', '', 'https://jeecgdev.oss-cn-beijing.aliyuncs.com/temp/流程设计引擎_1742383594151.png', 'THEN(\n start.tag(\'start-node\'),\n llm.tag(\'163122102386216960\'),\n reply.tag(\'163119312863678464\'),\n llm.tag(\'163122766768164864\'),\n end.tag(\'163119405809455104\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":232,\"y\":273,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{},\"inputParams\":[{\"field\":\"content\",\"name\":\"用户问题\",\"type\":\"string\",\"required\":true},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":true}],\"outputParams\":[],\"height\":62,\"width\":332}},{\"id\":\"163119312863678464\",\"type\":\"reply\",\"x\":800,\"y\":225,\"properties\":{\"text\":\"直接回复\",\"options\":{\"content\":\"{{content}}\"},\"inputParams\":[{\"field\":\"text\",\"name\":\"content\",\"nodeId\":\"163122102386216960\"}],\"outputParams\":[],\"height\":62,\"width\":332}},{\"id\":\"163119405809455104\",\"type\":\"end\",\"x\":1548,\"y\":254,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":true,\"outputContent\":\"{{resp}}\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"text\",\"name\":\"resp\",\"nodeId\":\"163122766768164864\"}],\"height\":62,\"width\":332}},{\"id\":\"163122102386216960\",\"type\":\"llm\",\"x\":551,\"y\":553,\"properties\":{\"text\":\"LLM\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"根据用户的问题,以有趣的方式回答,如果可以的话请引用故事或经典说明。\\n\\n用中文回复。\\n\\n字数控制在200以内。\"},{\"role\":\"user\",\"content\":\"{{content}}\"}]},\"inputParams\":[{\"field\":\"content\",\"name\":\"content\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":136,\"width\":332}},{\"id\":\"163122766768164864\",\"type\":\"llm\",\"x\":1144,\"y\":412,\"properties\":{\"text\":\"nextQue\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"根据用户的问题和ai的回复,猜测用户下一次的问题可能有哪些,markdown格式回复。\\n格式:\\n\\\\n你可能还想知道:\\n* 问题一\\n* 问题二\\n。。。。\"},{\"role\":\"user\",\"content\":\"用户问题:{{que}}\\nAI回复:{{res}}\"}]},\"inputParams\":[{\"field\":\"content\",\"name\":\"que\",\"nodeId\":\"start-node\"},{\"field\":\"text\",\"name\":\"res\",\"nodeId\":\"163122102386216960\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":136,\"width\":332}}],\"edges\":[{\"id\":\"163122102390411264\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"163122102386216960\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"163122102386216960_input\",\"pointsList\":[{\"x\":398,\"y\":273},{\"x\":498,\"y\":273},{\"x\":285,\"y\":516},{\"x\":385,\"y\":516}]},{\"id\":\"163122147491762176\",\"type\":\"base-edge\",\"sourceNodeId\":\"163122102386216960\",\"targetNodeId\":\"163119312863678464\",\"sourceAnchorId\":\"163122102386216960_output\",\"targetAnchorId\":\"163119312863678464_input\",\"pointsList\":[{\"x\":717,\"y\":516},{\"x\":817,\"y\":516},{\"x\":534,\"y\":225},{\"x\":634,\"y\":225}]},{\"id\":\"163122766772359168\",\"type\":\"base-edge\",\"sourceNodeId\":\"163119312863678464\",\"targetNodeId\":\"163122766768164864\",\"sourceAnchorId\":\"163119312863678464_output\",\"targetAnchorId\":\"163122766768164864_input\",\"pointsList\":[{\"x\":966,\"y\":225},{\"x\":1066,\"y\":225},{\"x\":878,\"y\":375},{\"x\":978,\"y\":375}]},{\"id\":\"163123226145116160\",\"type\":\"base-edge\",\"sourceNodeId\":\"163122766768164864\",\"targetNodeId\":\"163119405809455104\",\"sourceAnchorId\":\"163122766768164864_output\",\"targetAnchorId\":\"163119405809455104_input\",\"pointsList\":[{\"x\":1310,\"y\":375},{\"x\":1410,\"y\":375},{\"x\":1282,\"y\":254},{\"x\":1382,\"y\":254}]}]}', 'enable', '{\"outputs\":[{\"field\":\"outputText\",\"type\":\"string\"}],\"inputs\":[{\"field\":\"content\",\"name\":\"用户问题\",\"type\":\"string\"},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\"}]}', NULL);
INSERT INTO `airag_flow` VALUES ('1900029596154232833', 'jeecg', '2025-03-13 11:42:11', 'admin', '2025-11-27 16:49:22', 'A04', NULL, 'jeecg', '示例_Http节点', '', 'https://jeecgdev.oss-cn-beijing.aliyuncs.com/temp/流程设计(1)_1742383583093.png', 'THEN(\n start.tag(\'start-node\'),\n http.tag(\'163206941950185472\'),\n SWITCH(switch.tag(\'163207852529389568\')).to(\n THEN(\n http.tag(\'163128964742746112\'),\n SWITCH(switch.tag(\'168299837777608704\')).to(\n end.tag(\'163129833764786176\'),\n end.tag(\'168300140241453056\')\n ).tag(\'168299837777608704\')\n ).tag(\"163128964742746112\"),\n end.tag(\'163208186282741760\')\n ).tag(\'163207852529389568\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":51.13043478260868,\"y\":342.804347826087,\"properties\":{\"text\":\"开始\",\"remarks\":\"大萨达撒\",\"options\":{},\"inputParams\":[{\"field\":\"content\",\"name\":\"用户问题\",\"type\":\"string\",\"required\":true},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":true}],\"outputParams\":[],\"height\":89,\"width\":332}},{\"id\":\"163128964742746112\",\"type\":\"http\",\"x\":859.0869565217391,\"y\":192.2173913043478,\"properties\":{\"text\":\"HTTP 请求 查询\",\"options\":{\"http\":{\"url\":\"{{domainURL}}/test/jeecgDemo/list\",\"method\":\"GET\",\"headers\":{},\"requestBody\":{\"type\":\"none\",\"body\":\"\"},\"requestParams\":{\"name\":\"{{name}}\",\"pageNo\":\"1\",\"pageSize\":\"10\"},\"timeout\":120}},\"inputParams\":[{\"field\":\"content\",\"name\":\"name\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"body\",\"name\":\"输出\",\"type\":\"string\",\"required\":false},{\"field\":\"statusCode\",\"name\":\"状态码\",\"type\":\"number\"},{\"field\":\"body.success\",\"name\":\"是否成功\",\"type\":\"string\",\"required\":false},{\"field\":\"body.result.records[0].id\",\"name\":\"id\",\"type\":\"string\",\"required\":false}],\"height\":62,\"width\":332}},{\"id\":\"163129833764786176\",\"type\":\"end\",\"x\":1386.5217391304348,\"y\":164.08695652173913,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":true,\"outputContent\":\"新增的用户Id:{{id}}\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"body.result.records[0].id\",\"name\":\"id\",\"nodeId\":\"163128964742746112\"}],\"height\":62,\"width\":332}},{\"id\":\"163206941950185472\",\"type\":\"http\",\"x\":320.1304347826087,\"y\":474.2173913043478,\"properties\":{\"text\":\"HTTP 请求\",\"options\":{\"http\":{\"url\":\"{{domainURL}}/test/jeecgDemo/add\",\"method\":\"POST\",\"headers\":{},\"requestBody\":{\"type\":\"json\",\"body\":\"{\\n \\\"name\\\": \\\"{{name}}\\\",\\n \\\"keyWord\\\": \\\"example\\\",\\n \\\"punchTime\\\": \\\"2023-10-05 14:48:00\\\",\\n \\\"salaryMoney\\\": 1000.00,\\n \\\"bonusMoney\\\": 500.0,\\n \\\"sex\\\": \\\"1\\\",\\n \\\"age\\\": 30,\\n \\\"birthday\\\": \\\"2023-10-05\\\",\\n \\\"email\\\": \\\"john.doe@example.com\\\",\\n \\\"content\\\": \\\"This is a test content.\\\",\\n}\"},\"requestParams\":{},\"timeout\":120}},\"inputParams\":[{\"field\":\"content\",\"name\":\"name\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"statusCode\",\"name\":\"code\",\"type\":\"string\",\"required\":false},{\"field\":\"body\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":62,\"width\":332}},{\"i
Showing preview only (303K chars total). Download the full file or copy to clipboard to get everything.
gitextract__5f6saff/
├── .gitattributes
├── .github/
│ └── ISSUE_TEMPLATE/
│ ├── bug_report.md
│ └── feature_request.md
├── .gitignore
├── LICENSE
├── README-AI.md
├── README.en-US.md
├── README.md
├── check_jeecgenv.py
├── docker-compose-cloud.yml
├── docker-compose.yml
├── jeecg-boot/
│ ├── .gitignore
│ ├── LICENSE
│ ├── README.md
│ ├── db/
│ │ ├── Dockerfile
│ │ ├── jeecgboot-mysql-5.7.sql
│ │ ├── tables_nacos.sql
│ │ ├── tables_xxl_job.sql
│ │ ├── 其他数据库脚本/
│ │ │ └── oracle11g dmp说明.txt
│ │ └── 版本升级说明.md
│ ├── docker-compose.yml
│ ├── jeecg-boot-base-core/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── jeecg/
│ │ │ │ ├── common/
│ │ │ │ │ ├── api/
│ │ │ │ │ │ ├── CommonAPI.java
│ │ │ │ │ │ ├── dto/
│ │ │ │ │ │ │ ├── AiragFlowDTO.java
│ │ │ │ │ │ │ ├── ApprovalCommentDTO.java
│ │ │ │ │ │ │ ├── DataLogDTO.java
│ │ │ │ │ │ │ ├── FileDownDTO.java
│ │ │ │ │ │ │ ├── FileUploadDTO.java
│ │ │ │ │ │ │ ├── LogDTO.java
│ │ │ │ │ │ │ ├── OnlineAuthDTO.java
│ │ │ │ │ │ │ ├── PushMessageDTO.java
│ │ │ │ │ │ │ └── message/
│ │ │ │ │ │ │ ├── BusMessageDTO.java
│ │ │ │ │ │ │ ├── BusTemplateMessageDTO.java
│ │ │ │ │ │ │ ├── MessageDTO.java
│ │ │ │ │ │ │ ├── TemplateDTO.java
│ │ │ │ │ │ │ └── TemplateMessageDTO.java
│ │ │ │ │ │ └── vo/
│ │ │ │ │ │ └── Result.java
│ │ │ │ │ ├── aspect/
│ │ │ │ │ │ ├── AutoLogAspect.java
│ │ │ │ │ │ ├── DictAspect.java
│ │ │ │ │ │ ├── PermissionDataAspect.java
│ │ │ │ │ │ ├── UrlMatchEnum.java
│ │ │ │ │ │ └── annotation/
│ │ │ │ │ │ ├── AutoDict.java
│ │ │ │ │ │ ├── AutoLog.java
│ │ │ │ │ │ ├── Dict.java
│ │ │ │ │ │ ├── DynamicTable.java
│ │ │ │ │ │ ├── OnlineAuth.java
│ │ │ │ │ │ └── PermissionData.java
│ │ │ │ │ ├── constant/
│ │ │ │ │ │ ├── CommonConstant.java
│ │ │ │ │ │ ├── CommonSendStatus.java
│ │ │ │ │ │ ├── DataBaseConstant.java
│ │ │ │ │ │ ├── DynamicTableConstant.java
│ │ │ │ │ │ ├── FillRuleConstant.java
│ │ │ │ │ │ ├── PasswordConstant.java
│ │ │ │ │ │ ├── ProvinceCityArea.java
│ │ │ │ │ │ ├── ServiceNameConstants.java
│ │ │ │ │ │ ├── SymbolConstant.java
│ │ │ │ │ │ ├── TenantConstant.java
│ │ │ │ │ │ ├── VxeSocketConst.java
│ │ │ │ │ │ ├── WebsocketConst.java
│ │ │ │ │ │ └── enums/
│ │ │ │ │ │ ├── CgformEnum.java
│ │ │ │ │ │ ├── ClientTerminalTypeEnum.java
│ │ │ │ │ │ ├── DateRangeEnum.java
│ │ │ │ │ │ ├── DepartCategoryEnum.java
│ │ │ │ │ │ ├── DySmsEnum.java
│ │ │ │ │ │ ├── EmailTemplateEnum.java
│ │ │ │ │ │ ├── FileTypeEnum.java
│ │ │ │ │ │ ├── MessageTypeEnum.java
│ │ │ │ │ │ ├── ModuleType.java
│ │ │ │ │ │ ├── NoticeTypeEnum.java
│ │ │ │ │ │ ├── OperateTypeEnum.java
│ │ │ │ │ │ ├── PositionLevelEnum.java
│ │ │ │ │ │ ├── RoleIndexConfigEnum.java
│ │ │ │ │ │ ├── SysAnnmentTypeEnum.java
│ │ │ │ │ │ ├── UniPushTypeEnum.java
│ │ │ │ │ │ └── Vue3MessageHrefEnum.java
│ │ │ │ │ ├── desensitization/
│ │ │ │ │ │ ├── SensitiveSerialize.java
│ │ │ │ │ │ ├── annotation/
│ │ │ │ │ │ │ ├── Sensitive.java
│ │ │ │ │ │ │ ├── SensitiveDecode.java
│ │ │ │ │ │ │ ├── SensitiveEncode.java
│ │ │ │ │ │ │ └── SensitiveField.java
│ │ │ │ │ │ ├── aspect/
│ │ │ │ │ │ │ └── SensitiveDataAspect.java
│ │ │ │ │ │ ├── enums/
│ │ │ │ │ │ │ └── SensitiveEnum.java
│ │ │ │ │ │ └── util/
│ │ │ │ │ │ └── SensitiveInfoUtil.java
│ │ │ │ │ ├── es/
│ │ │ │ │ │ ├── JeecgElasticsearchTemplate.java
│ │ │ │ │ │ └── QueryStringBuilder.java
│ │ │ │ │ ├── exception/
│ │ │ │ │ │ ├── JeecgBoot401Exception.java
│ │ │ │ │ │ ├── JeecgBootAssertException.java
│ │ │ │ │ │ ├── JeecgBootBizTipException.java
│ │ │ │ │ │ ├── JeecgBootException.java
│ │ │ │ │ │ ├── JeecgBootExceptionHandler.java
│ │ │ │ │ │ └── JeecgSqlInjectionException.java
│ │ │ │ │ ├── handler/
│ │ │ │ │ │ └── IFillRuleHandler.java
│ │ │ │ │ ├── system/
│ │ │ │ │ │ ├── annotation/
│ │ │ │ │ │ │ └── EnumDict.java
│ │ │ │ │ │ ├── base/
│ │ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ │ └── JeecgController.java
│ │ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ │ └── JeecgEntity.java
│ │ │ │ │ │ │ └── service/
│ │ │ │ │ │ │ ├── JeecgService.java
│ │ │ │ │ │ │ └── impl/
│ │ │ │ │ │ │ └── JeecgServiceImpl.java
│ │ │ │ │ │ ├── enhance/
│ │ │ │ │ │ │ └── UserFilterEnhance.java
│ │ │ │ │ │ ├── query/
│ │ │ │ │ │ │ ├── MatchTypeEnum.java
│ │ │ │ │ │ │ ├── QueryCondition.java
│ │ │ │ │ │ │ ├── QueryGenerator.java
│ │ │ │ │ │ │ └── QueryRuleEnum.java
│ │ │ │ │ │ ├── util/
│ │ │ │ │ │ │ ├── JeecgDataAutorUtils.java
│ │ │ │ │ │ │ ├── JwtUtil.java
│ │ │ │ │ │ │ ├── ResourceUtil.java
│ │ │ │ │ │ │ └── SqlConcatUtil.java
│ │ │ │ │ │ └── vo/
│ │ │ │ │ │ ├── ComboModel.java
│ │ │ │ │ │ ├── DictModel.java
│ │ │ │ │ │ ├── DictModelMany.java
│ │ │ │ │ │ ├── DictQuery.java
│ │ │ │ │ │ ├── DynamicDataSourceModel.java
│ │ │ │ │ │ ├── LoginUser.java
│ │ │ │ │ │ ├── SelectTreeModel.java
│ │ │ │ │ │ ├── SysCategoryModel.java
│ │ │ │ │ │ ├── SysDepartModel.java
│ │ │ │ │ │ ├── SysFilesModel.java
│ │ │ │ │ │ ├── SysPermissionDataRuleModel.java
│ │ │ │ │ │ ├── SysUserCacheInfo.java
│ │ │ │ │ │ └── UserAccountInfo.java
│ │ │ │ │ └── util/
│ │ │ │ │ ├── AssertUtils.java
│ │ │ │ │ ├── BrowserType.java
│ │ │ │ │ ├── BrowserUtils.java
│ │ │ │ │ ├── CommonUtils.java
│ │ │ │ │ ├── DateRangeUtils.java
│ │ │ │ │ ├── DateUtils.java
│ │ │ │ │ ├── DySmsHelper.java
│ │ │ │ │ ├── DySmsLimit.java
│ │ │ │ │ ├── FileDownloadUtils.java
│ │ │ │ │ ├── FillRuleUtil.java
│ │ │ │ │ ├── HTMLUtils.java
│ │ │ │ │ ├── ImportExcelUtil.java
│ │ │ │ │ ├── IpUtils.java
│ │ │ │ │ ├── Md5Util.java
│ │ │ │ │ ├── MinioUtil.java
│ │ │ │ │ ├── MyClassLoader.java
│ │ │ │ │ ├── MyCommonsMultipartFile.java
│ │ │ │ │ ├── PasswordUtil.java
│ │ │ │ │ ├── PmsUtil.java
│ │ │ │ │ ├── ReflectHelper.java
│ │ │ │ │ ├── RestDesformUtil.java
│ │ │ │ │ ├── RestUtil.java
│ │ │ │ │ ├── ShiroThreadPoolExecutor.java
│ │ │ │ │ ├── SpringContextUtils.java
│ │ │ │ │ ├── SqlInjectionUtil.java
│ │ │ │ │ ├── TencentSms.java
│ │ │ │ │ ├── TokenUtils.java
│ │ │ │ │ ├── UUIDGenerator.java
│ │ │ │ │ ├── YouBianCodeUtil.java
│ │ │ │ │ ├── dynamic/
│ │ │ │ │ │ └── db/
│ │ │ │ │ │ ├── DataSourceCachePool.java
│ │ │ │ │ │ ├── DbTypeUtils.java
│ │ │ │ │ │ ├── DynamicDBUtil.java
│ │ │ │ │ │ └── FreemarkerParseFactory.java
│ │ │ │ │ ├── encryption/
│ │ │ │ │ │ ├── AesEncryptUtil.java
│ │ │ │ │ │ └── EncryptedString.java
│ │ │ │ │ ├── filter/
│ │ │ │ │ │ ├── SsrfFileTypeFilter.java
│ │ │ │ │ │ └── StrAttackFilter.java
│ │ │ │ │ ├── oConvertUtils.java
│ │ │ │ │ ├── oss/
│ │ │ │ │ │ └── OssBootUtil.java
│ │ │ │ │ ├── security/
│ │ │ │ │ │ ├── AbstractQueryBlackListHandler.java
│ │ │ │ │ │ ├── JdbcSecurityUtil.java
│ │ │ │ │ │ ├── SecurityTools.java
│ │ │ │ │ │ └── entity/
│ │ │ │ │ │ ├── MyKeyPair.java
│ │ │ │ │ │ ├── SecurityReq.java
│ │ │ │ │ │ ├── SecurityResp.java
│ │ │ │ │ │ ├── SecuritySignReq.java
│ │ │ │ │ │ └── SecuritySignResp.java
│ │ │ │ │ ├── sqlparse/
│ │ │ │ │ │ ├── JSqlParserAllTableManager.java
│ │ │ │ │ │ ├── JSqlParserUtils.java
│ │ │ │ │ │ └── vo/
│ │ │ │ │ │ └── SelectSqlInfo.java
│ │ │ │ │ └── superSearch/
│ │ │ │ │ ├── ObjectParseUtil.java
│ │ │ │ │ ├── QueryRuleEnum.java
│ │ │ │ │ └── QueryRuleVo.java
│ │ │ │ ├── config/
│ │ │ │ │ ├── AiRagConfigBean.java
│ │ │ │ │ ├── AutoPoiConfig.java
│ │ │ │ │ ├── AutoPoiDictConfig.java
│ │ │ │ │ ├── CorsFilterCondition.java
│ │ │ │ │ ├── DruidConfig.java
│ │ │ │ │ ├── DruidWallConfigRegister.java
│ │ │ │ │ ├── JeecgBaseConfig.java
│ │ │ │ │ ├── JeecgCloudCondition.java
│ │ │ │ │ ├── JeecgGaodeBaseConfig.java
│ │ │ │ │ ├── JeecgSmsTemplateConfig.java
│ │ │ │ │ ├── RestTemplateConfig.java
│ │ │ │ │ ├── StaticConfig.java
│ │ │ │ │ ├── Swagger2Config.java
│ │ │ │ │ ├── Swagger3Config.java
│ │ │ │ │ ├── TaskSchedulerConfig.java
│ │ │ │ │ ├── WebMvcConfiguration.java
│ │ │ │ │ ├── WebSocketConfig.java
│ │ │ │ │ ├── filter/
│ │ │ │ │ │ ├── RequestBodyReserveFilter.java
│ │ │ │ │ │ └── WebsocketFilter.java
│ │ │ │ │ ├── firewall/
│ │ │ │ │ │ ├── SqlInjection/
│ │ │ │ │ │ │ ├── IDictTableWhiteListHandler.java
│ │ │ │ │ │ │ └── SysDictTableWhite.java
│ │ │ │ │ │ └── interceptor/
│ │ │ │ │ │ ├── LowCodeModeConfiguration.java
│ │ │ │ │ │ ├── LowCodeModeInterceptor.java
│ │ │ │ │ │ └── enums/
│ │ │ │ │ │ └── LowCodeUrlsEnum.java
│ │ │ │ │ ├── mybatis/
│ │ │ │ │ │ ├── JeecgTenantParser.java
│ │ │ │ │ │ ├── MybatisInterceptor.java
│ │ │ │ │ │ ├── MybatisPlusSaasConfig.java
│ │ │ │ │ │ ├── TenantContext.java
│ │ │ │ │ │ ├── ThreadLocalDataHelper.java
│ │ │ │ │ │ ├── aspect/
│ │ │ │ │ │ │ └── DynamicTableAspect.java
│ │ │ │ │ │ └── interceptor/
│ │ │ │ │ │ └── DynamicDatasourceInterceptor.java
│ │ │ │ │ ├── oss/
│ │ │ │ │ │ ├── MinioConfig.java
│ │ │ │ │ │ └── OssConfiguration.java
│ │ │ │ │ ├── shiro/
│ │ │ │ │ │ ├── IgnoreAuth.java
│ │ │ │ │ │ ├── JwtToken.java
│ │ │ │ │ │ ├── ShiroConfig.java
│ │ │ │ │ │ ├── ShiroRealm.java
│ │ │ │ │ │ ├── filters/
│ │ │ │ │ │ │ ├── CustomShiroFilterFactoryBean.java
│ │ │ │ │ │ │ ├── JwtFilter.java
│ │ │ │ │ │ │ └── ResourceCheckFilter.java
│ │ │ │ │ │ └── ignore/
│ │ │ │ │ │ ├── IgnoreAuthPostProcessor.java
│ │ │ │ │ │ └── InMemoryIgnoreAuth.java
│ │ │ │ │ ├── sign/
│ │ │ │ │ │ ├── annotation/
│ │ │ │ │ │ │ └── SignatureCheck.java
│ │ │ │ │ │ ├── aspect/
│ │ │ │ │ │ │ └── SignatureCheckAspect.java
│ │ │ │ │ │ ├── interceptor/
│ │ │ │ │ │ │ ├── SignAuthConfiguration.java
│ │ │ │ │ │ │ └── SignAuthInterceptor.java
│ │ │ │ │ │ └── util/
│ │ │ │ │ │ ├── BodyReaderHttpServletRequestWrapper.java
│ │ │ │ │ │ ├── HttpUtils.java
│ │ │ │ │ │ └── SignUtil.java
│ │ │ │ │ ├── tencent/
│ │ │ │ │ │ └── JeecgTencent.java
│ │ │ │ │ └── vo/
│ │ │ │ │ ├── BaiduApi.java
│ │ │ │ │ ├── DomainUrl.java
│ │ │ │ │ ├── Elasticsearch.java
│ │ │ │ │ ├── Firewall.java
│ │ │ │ │ ├── GaoDeApi.java
│ │ │ │ │ ├── JeecgMinio.java
│ │ │ │ │ ├── JeecgOSS.java
│ │ │ │ │ ├── Path.java
│ │ │ │ │ ├── Shiro.java
│ │ │ │ │ └── WeiXinPay.java
│ │ │ │ └── modules/
│ │ │ │ └── base/
│ │ │ │ ├── mapper/
│ │ │ │ │ ├── BaseCommonMapper.java
│ │ │ │ │ └── xml/
│ │ │ │ │ └── BaseCommonMapper.xml
│ │ │ │ └── service/
│ │ │ │ ├── BaseCommonService.java
│ │ │ │ └── impl/
│ │ │ │ └── BaseCommonServiceImpl.java
│ │ │ └── resources/
│ │ │ ├── META-INF/
│ │ │ │ ├── spring/
│ │ │ │ │ └── org.springframework.boot.SpringApplicationRunListeners
│ │ │ │ └── spring.factories
│ │ │ ├── config/
│ │ │ │ └── default-spring-doc.properties
│ │ │ ├── static/
│ │ │ │ └── pca.json
│ │ │ └── templates/
│ │ │ └── email/
│ │ │ ├── bpm_cc_email.ftl
│ │ │ ├── bpm_cuiban_email.ftl
│ │ │ ├── bpm_new_task_email.ftl
│ │ │ └── desform_new_data_email.ftl
│ │ └── test/
│ │ └── java/
│ │ └── org/
│ │ └── jeecg/
│ │ └── test/
│ │ └── sqlparse/
│ │ └── TestIpUtil.java
│ ├── jeecg-boot-module/
│ │ ├── jeecg-boot-module-airag/
│ │ │ ├── doc/
│ │ │ │ └── RAG/
│ │ │ │ └── main.py
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── jeecg/
│ │ │ │ │ ├── JeecgAiRagApplication.java
│ │ │ │ │ └── modules/
│ │ │ │ │ └── airag/
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── consts/
│ │ │ │ │ │ │ ├── AiAppConsts.java
│ │ │ │ │ │ │ └── Prompts.java
│ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ ├── AiragAppController.java
│ │ │ │ │ │ │ └── AiragChatController.java
│ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ └── AiragApp.java
│ │ │ │ │ │ ├── mapper/
│ │ │ │ │ │ │ ├── AiragAppMapper.java
│ │ │ │ │ │ │ └── xml/
│ │ │ │ │ │ │ └── AiragAppMapper.xml
│ │ │ │ │ │ ├── service/
│ │ │ │ │ │ │ ├── IAiragAppService.java
│ │ │ │ │ │ │ ├── IAiragChatService.java
│ │ │ │ │ │ │ ├── IAiragVariableService.java
│ │ │ │ │ │ │ └── impl/
│ │ │ │ │ │ │ ├── AiragAppServiceImpl.java
│ │ │ │ │ │ │ ├── AiragChatServiceImpl.java
│ │ │ │ │ │ │ └── AiragVariableServiceImpl.java
│ │ │ │ │ │ └── vo/
│ │ │ │ │ │ ├── AiArticleWriteVersionVo.java
│ │ │ │ │ │ ├── AiWriteGenerateVo.java
│ │ │ │ │ │ ├── AppDebugParams.java
│ │ │ │ │ │ ├── AppVariableVo.java
│ │ │ │ │ │ ├── ChatConversation.java
│ │ │ │ │ │ └── ChatSendParams.java
│ │ │ │ │ ├── demo/
│ │ │ │ │ │ ├── JimuDataReader.java
│ │ │ │ │ │ └── TestAiragEnhance.java
│ │ │ │ │ ├── llm/
│ │ │ │ │ │ ├── config/
│ │ │ │ │ │ │ ├── EmbedStoreConfigBean.java
│ │ │ │ │ │ │ └── KnowConfigBean.java
│ │ │ │ │ │ ├── consts/
│ │ │ │ │ │ │ ├── FlowPluginContent.java
│ │ │ │ │ │ │ └── LLMConsts.java
│ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ ├── AiragBaseApiController.java
│ │ │ │ │ │ │ ├── AiragKnowledgeController.java
│ │ │ │ │ │ │ ├── AiragMcpController.java
│ │ │ │ │ │ │ └── AiragModelController.java
│ │ │ │ │ │ ├── document/
│ │ │ │ │ │ │ └── TikaDocumentParser.java
│ │ │ │ │ │ ├── dto/
│ │ │ │ │ │ │ └── SaveToolsDTO.java
│ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ ├── AiragKnowledge.java
│ │ │ │ │ │ │ ├── AiragKnowledgeDoc.java
│ │ │ │ │ │ │ ├── AiragMcp.java
│ │ │ │ │ │ │ └── AiragModel.java
│ │ │ │ │ │ ├── handler/
│ │ │ │ │ │ │ ├── AIChatHandler.java
│ │ │ │ │ │ │ ├── CommandExecUtil.java
│ │ │ │ │ │ │ ├── EmbeddingHandler.java
│ │ │ │ │ │ │ ├── JeecgToolsProvider.java
│ │ │ │ │ │ │ └── PluginToolBuilder.java
│ │ │ │ │ │ ├── mapper/
│ │ │ │ │ │ │ ├── AiragKnowledgeDocMapper.java
│ │ │ │ │ │ │ ├── AiragKnowledgeMapper.java
│ │ │ │ │ │ │ ├── AiragMcpMapper.java
│ │ │ │ │ │ │ ├── AiragModelMapper.java
│ │ │ │ │ │ │ └── xml/
│ │ │ │ │ │ │ ├── AiragKnowledgeDocMapper.xml
│ │ │ │ │ │ │ ├── AiragKnowledgeMapper.xml
│ │ │ │ │ │ │ ├── AiragMcpMapper.xml
│ │ │ │ │ │ │ └── AiragModelMapper.xml
│ │ │ │ │ │ └── service/
│ │ │ │ │ │ ├── IAiragFlowPluginService.java
│ │ │ │ │ │ ├── IAiragKnowledgeDocService.java
│ │ │ │ │ │ ├── IAiragKnowledgeService.java
│ │ │ │ │ │ ├── IAiragMcpService.java
│ │ │ │ │ │ ├── IAiragModelService.java
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── AiragBaseApiImpl.java
│ │ │ │ │ │ ├── AiragFlowPluginServiceImpl.java
│ │ │ │ │ │ ├── AiragKnowledgeDocServiceImpl.java
│ │ │ │ │ │ ├── AiragKnowledgeServiceImpl.java
│ │ │ │ │ │ ├── AiragMcpServiceImpl.java
│ │ │ │ │ │ └── AiragModelServiceImpl.java
│ │ │ │ │ ├── ocr/
│ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ └── AiOcrController.java
│ │ │ │ │ │ └── entity/
│ │ │ │ │ │ └── AiOcr.java
│ │ │ │ │ ├── prompts/
│ │ │ │ │ │ ├── consts/
│ │ │ │ │ │ │ └── AiPromptsConsts.java
│ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ ├── AiragExtDataController.java
│ │ │ │ │ │ │ └── AiragPromptsController.java
│ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ ├── AiragExtData.java
│ │ │ │ │ │ │ └── AiragPrompts.java
│ │ │ │ │ │ ├── mapper/
│ │ │ │ │ │ │ ├── AiragExtDataMapper.java
│ │ │ │ │ │ │ ├── AiragPromptsMapper.java
│ │ │ │ │ │ │ └── xml/
│ │ │ │ │ │ │ ├── AiragExtDataMapper.xml
│ │ │ │ │ │ │ └── AiragPromptsMapper.xml
│ │ │ │ │ │ ├── service/
│ │ │ │ │ │ │ ├── IAiragExtDataService.java
│ │ │ │ │ │ │ ├── IAiragPromptsService.java
│ │ │ │ │ │ │ └── impl/
│ │ │ │ │ │ │ ├── AiragExtDataServiceImpl.java
│ │ │ │ │ │ │ └── AiragPromptsServiceImpl.java
│ │ │ │ │ │ └── vo/
│ │ │ │ │ │ ├── AiragDebugVo.java
│ │ │ │ │ │ └── AiragExperimentVo.java
│ │ │ │ │ └── wordtpl/
│ │ │ │ │ ├── consts/
│ │ │ │ │ │ └── WordTitleEnum.java
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── EoaWordTemplateController.java
│ │ │ │ │ ├── dto/
│ │ │ │ │ │ ├── MergeColDTO.java
│ │ │ │ │ │ ├── WordImageDTO.java
│ │ │ │ │ │ ├── WordTableCellDTO.java
│ │ │ │ │ │ ├── WordTableDTO.java
│ │ │ │ │ │ ├── WordTableRowDTO.java
│ │ │ │ │ │ ├── WordTextDTO.java
│ │ │ │ │ │ └── WordTplGenDTO.java
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ └── EoaWordTemplate.java
│ │ │ │ │ ├── mapper/
│ │ │ │ │ │ ├── EoaWordTemplateMapper.java
│ │ │ │ │ │ └── xml/
│ │ │ │ │ │ └── EoaWordTemplateMapper.xml
│ │ │ │ │ ├── service/
│ │ │ │ │ │ ├── IEoaWordTemplateService.java
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ └── EoaWordTemplateServiceImpl.java
│ │ │ │ │ └── utils/
│ │ │ │ │ ├── WordTplUtils.java
│ │ │ │ │ └── WordUtil.java
│ │ │ │ └── resources/
│ │ │ │ └── application.yml
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── org/
│ │ │ └── jeecg/
│ │ │ └── modules/
│ │ │ └── airag/
│ │ │ └── test/
│ │ │ ├── TestFileParse.java
│ │ │ ├── TestFlows.java
│ │ │ ├── TestLLM.java
│ │ │ └── TestVector.java
│ │ ├── jeecg-module-demo/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── jeecg/
│ │ │ │ └── modules/
│ │ │ │ └── demo/
│ │ │ │ ├── cloud/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ ├── JcloudDemoFeignController.java
│ │ │ │ │ │ └── JcloudDemoProviderController.java
│ │ │ │ │ ├── service/
│ │ │ │ │ │ ├── JcloudDemoService.java
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ └── JcloudDemoServiceImpl.java
│ │ │ │ │ └── xxljob/
│ │ │ │ │ └── TestJobHandler.java
│ │ │ │ ├── mcp/
│ │ │ │ │ └── McpDemoController.java
│ │ │ │ ├── mock/
│ │ │ │ │ ├── MockController.java
│ │ │ │ │ ├── json/
│ │ │ │ │ │ ├── area.json
│ │ │ │ │ │ ├── area_mini.json
│ │ │ │ │ │ ├── area_options.json
│ │ │ │ │ │ ├── asyn_tree_list_0.json
│ │ │ │ │ │ ├── asyn_tree_list_1.json
│ │ │ │ │ │ ├── asyn_tree_list_2.json
│ │ │ │ │ │ ├── asyn_tree_list_3.json
│ │ │ │ │ │ ├── asyn_tree_list_31.json
│ │ │ │ │ │ ├── getCntrNoCountInfo.json
│ │ │ │ │ │ ├── getTubiao.json
│ │ │ │ │ │ ├── graphreport_chart.json
│ │ │ │ │ │ ├── permission.json
│ │ │ │ │ │ ├── permission_no_page.json
│ │ │ │ │ │ ├── role.json
│ │ │ │ │ │ ├── service.json
│ │ │ │ │ │ ├── sysdatalog.json
│ │ │ │ │ │ ├── task_process.json
│ │ │ │ │ │ ├── user.json
│ │ │ │ │ │ ├── user_info.json
│ │ │ │ │ │ ├── userinfo.json
│ │ │ │ │ │ ├── workplace_activity.json
│ │ │ │ │ │ ├── workplace_projects.json
│ │ │ │ │ │ ├── workplace_radar.json
│ │ │ │ │ │ └── workplace_teams.json
│ │ │ │ │ └── vxe/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── VxeMockController.java
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ └── MockEntity.java
│ │ │ │ │ ├── json/
│ │ │ │ │ │ ├── ddjh.json
│ │ │ │ │ │ ├── ddjh_s8.json
│ │ │ │ │ │ └── dlglong.json
│ │ │ │ │ └── websocket/
│ │ │ │ │ └── VxeSocket.java
│ │ │ │ ├── online/
│ │ │ │ │ └── OnlCgformDemoController.java
│ │ │ │ ├── shop/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── ShopController.java
│ │ │ │ │ └── entity/
│ │ │ │ │ ├── Order.java
│ │ │ │ │ └── Product.java
│ │ │ │ ├── test/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ ├── BigScreenTemplatController.java
│ │ │ │ │ │ ├── JeecgDemoController.java
│ │ │ │ │ │ ├── JeecgDynamicDataController.java
│ │ │ │ │ │ ├── JeecgOrderErpMainController.java
│ │ │ │ │ │ ├── JeecgOrderMainController.java
│ │ │ │ │ │ └── JoaDemoController.java
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ ├── JeecgDemo.java
│ │ │ │ │ │ ├── JeecgOrderCustomer.java
│ │ │ │ │ │ ├── JeecgOrderMain.java
│ │ │ │ │ │ ├── JeecgOrderTicket.java
│ │ │ │ │ │ └── JoaDemo.java
│ │ │ │ │ ├── mapper/
│ │ │ │ │ │ ├── JeecgDemoMapper.java
│ │ │ │ │ │ ├── JeecgOrderCustomerMapper.java
│ │ │ │ │ │ ├── JeecgOrderMainMapper.java
│ │ │ │ │ │ ├── JeecgOrderTicketMapper.java
│ │ │ │ │ │ ├── JoaDemoMapper.java
│ │ │ │ │ │ └── xml/
│ │ │ │ │ │ ├── JeecgDemoMapper.xml
│ │ │ │ │ │ ├── JeecgOrderCustomerMapper.xml
│ │ │ │ │ │ ├── JeecgOrderMainMapper.xml
│ │ │ │ │ │ ├── JeecgOrderTicketMapper.xml
│ │ │ │ │ │ └── JoaDemoMapper.xml
│ │ │ │ │ ├── service/
│ │ │ │ │ │ ├── IJeecgDemoService.java
│ │ │ │ │ │ ├── IJeecgDynamicDataService.java
│ │ │ │ │ │ ├── IJeecgOrderCustomerService.java
│ │ │ │ │ │ ├── IJeecgOrderMainService.java
│ │ │ │ │ │ ├── IJeecgOrderTicketService.java
│ │ │ │ │ │ ├── IJoaDemoService.java
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── JeecgDemoServiceImpl.java
│ │ │ │ │ │ ├── JeecgDynamicDataServiceImpl.java
│ │ │ │ │ │ ├── JeecgOrderCustomerServiceImpl.java
│ │ │ │ │ │ ├── JeecgOrderMainServiceImpl.java
│ │ │ │ │ │ ├── JeecgOrderTicketServiceImpl.java
│ │ │ │ │ │ └── JoaDemoServiceImpl.java
│ │ │ │ │ └── vo/
│ │ │ │ │ └── JeecgOrderMainPage.java
│ │ │ │ └── xxljob/
│ │ │ │ └── TestJobHandler.java
│ │ │ └── resources/
│ │ │ ├── static/
│ │ │ │ └── bigscreen/
│ │ │ │ ├── template1/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ ├── easyui.css
│ │ │ │ │ │ ├── jquery-ui.css
│ │ │ │ │ │ ├── main_design1.css
│ │ │ │ │ │ └── room.css
│ │ │ │ │ └── js/
│ │ │ │ │ ├── big_design1.js
│ │ │ │ │ ├── china.js
│ │ │ │ │ ├── echarts-wordcloud.js
│ │ │ │ │ ├── geoCoord.js
│ │ │ │ │ ├── resize.js
│ │ │ │ │ └── room.js
│ │ │ │ └── template2/
│ │ │ │ ├── css/
│ │ │ │ │ └── style.css
│ │ │ │ └── js/
│ │ │ │ ├── base.js
│ │ │ │ ├── china.js
│ │ │ │ ├── data/
│ │ │ │ │ ├── city.json
│ │ │ │ │ └── guangdong.js
│ │ │ │ ├── layer/
│ │ │ │ │ ├── extend/
│ │ │ │ │ │ └── layer.ext.js
│ │ │ │ │ ├── laydate/
│ │ │ │ │ │ ├── laydate.js
│ │ │ │ │ │ ├── need/
│ │ │ │ │ │ │ └── laydate.css
│ │ │ │ │ │ └── skins/
│ │ │ │ │ │ ├── danlan/
│ │ │ │ │ │ │ └── laydate.css
│ │ │ │ │ │ └── default/
│ │ │ │ │ │ └── laydate.css
│ │ │ │ │ ├── layim/
│ │ │ │ │ │ ├── data/
│ │ │ │ │ │ │ ├── chatlog.json
│ │ │ │ │ │ │ ├── friend.json
│ │ │ │ │ │ │ ├── group.json
│ │ │ │ │ │ │ └── groups.json
│ │ │ │ │ │ ├── layim.css
│ │ │ │ │ │ └── layim.js
│ │ │ │ │ └── skin/
│ │ │ │ │ ├── layer.css
│ │ │ │ │ ├── layer.ext.css
│ │ │ │ │ └── moon/
│ │ │ │ │ └── style.css
│ │ │ │ ├── pop_base.js
│ │ │ │ └── rem.js
│ │ │ └── templates/
│ │ │ └── bigscreen/
│ │ │ ├── template1/
│ │ │ │ └── index.ftl
│ │ │ └── template2/
│ │ │ └── index.ftl
│ │ └── pom.xml
│ ├── jeecg-module-system/
│ │ ├── jeecg-system-api/
│ │ │ ├── jeecg-system-cloud-api/
│ │ │ │ ├── pom.xml
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ └── java/
│ │ │ │ └── org/
│ │ │ │ └── jeecg/
│ │ │ │ ├── common/
│ │ │ │ │ ├── airag/
│ │ │ │ │ │ └── api/
│ │ │ │ │ │ ├── IAiragBaseApi.java
│ │ │ │ │ │ ├── factory/
│ │ │ │ │ │ │ └── AiragBaseApiFallbackFactory.java
│ │ │ │ │ │ └── fallback/
│ │ │ │ │ │ └── AiragBaseApiFallback.java
│ │ │ │ │ ├── online/
│ │ │ │ │ │ └── api/
│ │ │ │ │ │ ├── IOnlineBaseExtApi.java
│ │ │ │ │ │ ├── factory/
│ │ │ │ │ │ │ └── OnlineBaseExtApiFallbackFactory.java
│ │ │ │ │ │ └── fallback/
│ │ │ │ │ │ └── OnlineBaseExtApiFallback.java
│ │ │ │ │ └── system/
│ │ │ │ │ └── api/
│ │ │ │ │ ├── ISysBaseAPI.java
│ │ │ │ │ ├── factory/
│ │ │ │ │ │ └── SysBaseAPIFallbackFactory.java
│ │ │ │ │ └── fallback/
│ │ │ │ │ └── SysBaseAPIFallback.java
│ │ │ │ └── config/
│ │ │ │ └── FeignConfig.java
│ │ │ ├── jeecg-system-local-api/
│ │ │ │ ├── pom.xml
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ └── java/
│ │ │ │ └── org/
│ │ │ │ └── jeecg/
│ │ │ │ └── common/
│ │ │ │ ├── airag/
│ │ │ │ │ └── api/
│ │ │ │ │ └── IAiragBaseApi.java
│ │ │ │ ├── online/
│ │ │ │ │ └── api/
│ │ │ │ │ └── IOnlineBaseExtApi.java
│ │ │ │ └── system/
│ │ │ │ └── api/
│ │ │ │ └── ISysBaseAPI.java
│ │ │ └── pom.xml
│ │ ├── jeecg-system-biz/
│ │ │ ├── .gitattributes
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── jeecg/
│ │ │ │ ├── config/
│ │ │ │ │ ├── firewall/
│ │ │ │ │ │ └── SqlInjection/
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ └── DictTableWhiteListHandlerImpl.java
│ │ │ │ │ ├── init/
│ │ │ │ │ │ ├── CodeGenerateDbConfig.java
│ │ │ │ │ │ ├── CodeTemplateInitListener.java
│ │ │ │ │ │ ├── ShiroCacheClearRunner.java
│ │ │ │ │ │ ├── SystemInitListener.java
│ │ │ │ │ │ ├── TomcatFactoryConfig.java
│ │ │ │ │ │ └── UndertowConfiguration.java
│ │ │ │ │ └── jimureport/
│ │ │ │ │ ├── JimuDragExternalServiceImpl.java
│ │ │ │ │ └── JimuReportTokenService.java
│ │ │ │ └── modules/
│ │ │ │ ├── airag/
│ │ │ │ │ ├── JeecgBizToolsProvider.java
│ │ │ │ │ └── TestAiGenWordEnhance.java
│ │ │ │ ├── aop/
│ │ │ │ │ ├── TenantLog.java
│ │ │ │ │ └── TenantPackUserLogAspect.java
│ │ │ │ ├── api/
│ │ │ │ │ └── controller/
│ │ │ │ │ └── SystemApiController.java
│ │ │ │ ├── cas/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── CasClientController.java
│ │ │ │ │ └── util/
│ │ │ │ │ ├── CasServiceUtil.java
│ │ │ │ │ └── XmlUtils.java
│ │ │ │ ├── message/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ ├── SysMessageController.java
│ │ │ │ │ │ ├── SysMessageTemplateController.java
│ │ │ │ │ │ └── TestSocketController.java
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ ├── MsgParams.java
│ │ │ │ │ │ ├── SysMessage.java
│ │ │ │ │ │ └── SysMessageTemplate.java
│ │ │ │ │ ├── enums/
│ │ │ │ │ │ └── RangeDateEnum.java
│ │ │ │ │ ├── handle/
│ │ │ │ │ │ ├── ISendMsgHandle.java
│ │ │ │ │ │ ├── enums/
│ │ │ │ │ │ │ ├── SendMsgStatusEnum.java
│ │ │ │ │ │ │ └── SendMsgTypeEnum.java
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── DdSendMsgHandle.java
│ │ │ │ │ │ ├── EmailSendMsgHandle.java
│ │ │ │ │ │ ├── QywxSendMsgHandle.java
│ │ │ │ │ │ ├── SmsSendMsgHandle.java
│ │ │ │ │ │ ├── SystemSendMsgHandle.java
│ │ │ │ │ │ └── WxSendMsgHandle.java
│ │ │ │ │ ├── job/
│ │ │ │ │ │ └── SendMsgJob.java
│ │ │ │ │ ├── mapper/
│ │ │ │ │ │ ├── SysMessageMapper.java
│ │ │ │ │ │ ├── SysMessageTemplateMapper.java
│ │ │ │ │ │ └── xml/
│ │ │ │ │ │ ├── SysMessageMapper.xml
│ │ │ │ │ │ └── SysMessageTemplateMapper.xml
│ │ │ │ │ ├── service/
│ │ │ │ │ │ ├── ISysMessageService.java
│ │ │ │ │ │ ├── ISysMessageTemplateService.java
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── SysMessageServiceImpl.java
│ │ │ │ │ │ └── SysMessageTemplateServiceImpl.java
│ │ │ │ │ ├── util/
│ │ │ │ │ │ └── PushMsgUtil.java
│ │ │ │ │ └── websocket/
│ │ │ │ │ ├── SocketHandler.java
│ │ │ │ │ └── WebSocket.java
│ │ │ │ ├── monitor/
│ │ │ │ │ ├── actuator/
│ │ │ │ │ │ ├── CustomActuatorConfig.java
│ │ │ │ │ │ ├── httptrace/
│ │ │ │ │ │ │ ├── CustomHttpTraceEndpoint.java
│ │ │ │ │ │ │ └── CustomInMemoryHttpTraceRepository.java
│ │ │ │ │ │ └── undertow/
│ │ │ │ │ │ └── CustomUndertowMetricsHandler.java
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ ├── ActuatorMemoryController.java
│ │ │ │ │ │ └── ActuatorRedisController.java
│ │ │ │ │ ├── domain/
│ │ │ │ │ │ └── RedisInfo.java
│ │ │ │ │ ├── exception/
│ │ │ │ │ │ └── RedisConnectException.java
│ │ │ │ │ └── service/
│ │ │ │ │ ├── RedisService.java
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── MailHealthIndicator.java
│ │ │ │ │ └── RedisServiceImpl.java
│ │ │ │ ├── ngalain/
│ │ │ │ │ ├── aop/
│ │ │ │ │ │ └── LogRecordAspect.java
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── NgAlainController.java
│ │ │ │ │ └── service/
│ │ │ │ │ ├── NgAlainService.java
│ │ │ │ │ └── impl/
│ │ │ │ │ └── NgAlainServiceImpl.java
│ │ │ │ ├── openapi/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ ├── OpenApiAuthController.java
│ │ │ │ │ │ ├── OpenApiController.java
│ │ │ │ │ │ ├── OpenApiIndexController.java
│ │ │ │ │ │ ├── OpenApiLogController.java
│ │ │ │ │ │ └── OpenApiPermissionController.java
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ ├── OpenApi.java
│ │ │ │ │ │ ├── OpenApiAuth.java
│ │ │ │ │ │ ├── OpenApiHeader.java
│ │ │ │ │ │ ├── OpenApiLog.java
│ │ │ │ │ │ ├── OpenApiParam.java
│ │ │ │ │ │ └── OpenApiPermission.java
│ │ │ │ │ ├── filter/
│ │ │ │ │ │ ├── ApiAuthFilter.java
│ │ │ │ │ │ └── ApiFilterConfig.java
│ │ │ │ │ ├── generator/
│ │ │ │ │ │ ├── AKSKGenerator.java
│ │ │ │ │ │ └── PathGenerator.java
│ │ │ │ │ ├── mapper/
│ │ │ │ │ │ ├── OpenApiAuthMapper.java
│ │ │ │ │ │ ├── OpenApiLogMapper.java
│ │ │ │ │ │ ├── OpenApiMapper.java
│ │ │ │ │ │ └── OpenApiPermissionMapper.java
│ │ │ │ │ ├── service/
│ │ │ │ │ │ ├── OpenApiAuthService.java
│ │ │ │ │ │ ├── OpenApiLogService.java
│ │ │ │ │ │ ├── OpenApiPermissionService.java
│ │ │ │ │ │ ├── OpenApiService.java
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── OpenApiAuthServiceImpl.java
│ │ │ │ │ │ ├── OpenApiLogServiceImpl.java
│ │ │ │ │ │ ├── OpenApiPermissionServiceImpl.java
│ │ │ │ │ │ └── OpenApiServiceImpl.java
│ │ │ │ │ └── swagger/
│ │ │ │ │ ├── SwaggerDefinition.java
│ │ │ │ │ ├── SwaggerDefinitionProperties.java
│ │ │ │ │ ├── SwaggerInfo.java
│ │ │ │ │ ├── SwaggerInfoContact.java
│ │ │ │ │ ├── SwaggerInfoLicense.java
│ │ │ │ │ ├── SwaggerModel.java
│ │ │ │ │ ├── SwaggerOperation.java
│ │ │ │ │ ├── SwaggerOperationParameter.java
│ │ │ │ │ ├── SwaggerOperationResponse.java
│ │ │ │ │ ├── SwaggerSchema.java
│ │ │ │ │ └── SwaggerTag.java
│ │ │ │ ├── oss/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── OssFileController.java
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ └── OssFile.java
│ │ │ │ │ ├── mapper/
│ │ │ │ │ │ └── OssFileMapper.java
│ │ │ │ │ └── service/
│ │ │ │ │ ├── IOssFileService.java
│ │ │ │ │ └── impl/
│ │ │ │ │ └── OssFileServiceImpl.java
│ │ │ │ ├── quartz/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── QuartzJobController.java
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ └── QuartzJob.java
│ │ │ │ │ ├── job/
│ │ │ │ │ │ ├── AsyncJob.java
│ │ │ │ │ │ ├── SampleJob.java
│ │ │ │ │ │ └── SampleParamJob.java
│ │ │ │ │ ├── mapper/
│ │ │ │ │ │ ├── QuartzJobMapper.java
│ │ │ │ │ │ └── xml/
│ │ │ │ │ │ └── QuartzJobMapper.xml
│ │ │ │ │ └── service/
│ │ │ │ │ ├── IQuartzJobService.java
│ │ │ │ │ └── impl/
│ │ │ │ │ └── QuartzJobServiceImpl.java
│ │ │ │ └── system/
│ │ │ │ ├── cache/
│ │ │ │ │ └── AuthStateRedisCache.java
│ │ │ │ ├── config/
│ │ │ │ │ └── AuthStateConfiguration.java
│ │ │ │ ├── constant/
│ │ │ │ │ └── DefIndexConst.java
│ │ │ │ ├── controller/
│ │ │ │ │ ├── CommonController.java
│ │ │ │ │ ├── DuplicateCheckController.java
│ │ │ │ │ ├── LoginController.java
│ │ │ │ │ ├── SysAnnouncementController.java
│ │ │ │ │ ├── SysAnnouncementSendController.java
│ │ │ │ │ ├── SysAppVersionController.java
│ │ │ │ │ ├── SysCategoryController.java
│ │ │ │ │ ├── SysCheckRuleController.java
│ │ │ │ │ ├── SysCommentController.java
│ │ │ │ │ ├── SysDataLogController.java
│ │ │ │ │ ├── SysDataSourceController.java
│ │ │ │ │ ├── SysDepartController.java
│ │ │ │ │ ├── SysDepartPermissionController.java
│ │ │ │ │ ├── SysDepartRoleController.java
│ │ │ │ │ ├── SysDictController.java
│ │ │ │ │ ├── SysDictItemController.java
│ │ │ │ │ ├── SysFillRuleController.java
│ │ │ │ │ ├── SysFormFileController.java
│ │ │ │ │ ├── SysGatewayRouteController.java
│ │ │ │ │ ├── SysLogController.java
│ │ │ │ │ ├── SysPermissionController.java
│ │ │ │ │ ├── SysPositionController.java
│ │ │ │ │ ├── SysRoleController.java
│ │ │ │ │ ├── SysRoleIndexController.java
│ │ │ │ │ ├── SysTableWhiteListController.java
│ │ │ │ │ ├── SysTenantController.java
│ │ │ │ │ ├── SysUploadController.java
│ │ │ │ │ ├── SysUserController.java
│ │ │ │ │ ├── SysUserOnlineController.java
│ │ │ │ │ ├── ThirdAppController.java
│ │ │ │ │ ├── ThirdLoginController.java
│ │ │ │ │ └── WechatVerifyController.java
│ │ │ │ ├── entity/
│ │ │ │ │ ├── SysAnnouncement.java
│ │ │ │ │ ├── SysAnnouncementSend.java
│ │ │ │ │ ├── SysAppVersion.java
│ │ │ │ │ ├── SysCategory.java
│ │ │ │ │ ├── SysCheckRule.java
│ │ │ │ │ ├── SysComment.java
│ │ │ │ │ ├── SysDataLog.java
│ │ │ │ │ ├── SysDataSource.java
│ │ │ │ │ ├── SysDepart.java
│ │ │ │ │ ├── SysDepartPermission.java
│ │ │ │ │ ├── SysDepartRole.java
│ │ │ │ │ ├── SysDepartRolePermission.java
│ │ │ │ │ ├── SysDepartRoleUser.java
│ │ │ │ │ ├── SysDict.java
│ │ │ │ │ ├── SysDictItem.java
│ │ │ │ │ ├── SysFillRule.java
│ │ │ │ │ ├── SysFormFile.java
│ │ │ │ │ ├── SysGatewayRoute.java
│ │ │ │ │ ├── SysLog.java
│ │ │ │ │ ├── SysPackPermission.java
│ │ │ │ │ ├── SysPermission.java
│ │ │ │ │ ├── SysPermissionDataRule.java
│ │ │ │ │ ├── SysPosition.java
│ │ │ │ │ ├── SysRole.java
│ │ │ │ │ ├── SysRoleIndex.java
│ │ │ │ │ ├── SysRolePermission.java
│ │ │ │ │ ├── SysTableWhiteList.java
│ │ │ │ │ ├── SysTenant.java
│ │ │ │ │ ├── SysTenantPack.java
│ │ │ │ │ ├── SysTenantPackUser.java
│ │ │ │ │ ├── SysThirdAccount.java
│ │ │ │ │ ├── SysThirdAppConfig.java
│ │ │ │ │ ├── SysUser.java
│ │ │ │ │ ├── SysUserDepPost.java
│ │ │ │ │ ├── SysUserDepart.java
│ │ │ │ │ ├── SysUserPosition.java
│ │ │ │ │ ├── SysUserRole.java
│ │ │ │ │ └── SysUserTenant.java
│ │ │ │ ├── excelstyle/
│ │ │ │ │ └── ExcelExportSysUserStyle.java
│ │ │ │ ├── job/
│ │ │ │ │ └── UserUpadtePwdJob.java
│ │ │ │ ├── mapper/
│ │ │ │ │ ├── SysAnnouncementMapper.java
│ │ │ │ │ ├── SysAnnouncementSendMapper.java
│ │ │ │ │ ├── SysCategoryMapper.java
│ │ │ │ │ ├── SysCheckRuleMapper.java
│ │ │ │ │ ├── SysCommentMapper.java
│ │ │ │ │ ├── SysDataLogMapper.java
│ │ │ │ │ ├── SysDataSourceMapper.java
│ │ │ │ │ ├── SysDepartMapper.java
│ │ │ │ │ ├── SysDepartPermissionMapper.java
│ │ │ │ │ ├── SysDepartRoleMapper.java
│ │ │ │ │ ├── SysDepartRolePermissionMapper.java
│ │ │ │ │ ├── SysDepartRoleUserMapper.java
│ │ │ │ │ ├── SysDictItemMapper.java
│ │ │ │ │ ├── SysDictMapper.java
│ │ │ │ │ ├── SysFillRuleMapper.java
│ │ │ │ │ ├── SysFormFileMapper.java
│ │ │ │ │ ├── SysGatewayRouteMapper.java
│ │ │ │ │ ├── SysLogMapper.java
│ │ │ │ │ ├── SysPackPermissionMapper.java
│ │ │ │ │ ├── SysPermissionDataRuleMapper.java
│ │ │ │ │ ├── SysPermissionMapper.java
│ │ │ │ │ ├── SysPositionMapper.java
│ │ │ │ │ ├── SysRoleIndexMapper.java
│ │ │ │ │ ├── SysRoleMapper.java
│ │ │ │ │ ├── SysRolePermissionMapper.java
│ │ │ │ │ ├── SysTableWhiteListMapper.java
│ │ │ │ │ ├── SysTenantMapper.java
│ │ │ │ │ ├── SysTenantPackMapper.java
│ │ │ │ │ ├── SysTenantPackUserMapper.java
│ │ │ │ │ ├── SysThirdAccountMapper.java
│ │ │ │ │ ├── SysThirdAppConfigMapper.java
│ │ │ │ │ ├── SysUserDepPostMapper.java
│ │ │ │ │ ├── SysUserDepartMapper.java
│ │ │ │ │ ├── SysUserMapper.java
│ │ │ │ │ ├── SysUserPositionMapper.java
│ │ │ │ │ ├── SysUserRoleMapper.java
│ │ │ │ │ ├── SysUserTenantMapper.java
│ │ │ │ │ └── xml/
│ │ │ │ │ ├── SysAnnouncementMapper.xml
│ │ │ │ │ ├── SysAnnouncementSendMapper.xml
│ │ │ │ │ ├── SysCategoryMapper.xml
│ │ │ │ │ ├── SysCheckRuleMapper.xml
│ │ │ │ │ ├── SysCommentMapper.xml
│ │ │ │ │ ├── SysDataLogMapper.xml
│ │ │ │ │ ├── SysDataSourceMapper.xml
│ │ │ │ │ ├── SysDepartMapper.xml
│ │ │ │ │ ├── SysDepartPermissionMapper.xml
│ │ │ │ │ ├── SysDepartRoleMapper.xml
│ │ │ │ │ ├── SysDepartRolePermissionMapper.xml
│ │ │ │ │ ├── SysDepartRoleUserMapper.xml
│ │ │ │ │ ├── SysDictItemMapper.xml
│ │ │ │ │ ├── SysDictMapper.xml
│ │ │ │ │ ├── SysFillRuleMapper.xml
│ │ │ │ │ ├── SysGatewayRouteMapper.xml
│ │ │ │ │ ├── SysLogMapper.xml
│ │ │ │ │ ├── SysPackPermissionMapper.xml
│ │ │ │ │ ├── SysPermissionDataRuleMapper.xml
│ │ │ │ │ ├── SysPermissionMapper.xml
│ │ │ │ │ ├── SysPositionMapper.xml
│ │ │ │ │ ├── SysRoleIndexMapper.xml
│ │ │ │ │ ├── SysRoleMapper.xml
│ │ │ │ │ ├── SysTableWhiteListMapper.xml
│ │ │ │ │ ├── SysTenantMapper.xml
│ │ │ │ │ ├── SysTenantPackMapper.xml
│ │ │ │ │ ├── SysTenantPackUserMapper.xml
│ │ │ │ │ ├── SysThirdAccountMapper.xml
│ │ │ │ │ ├── SysThirdAppConfigMapper.xml
│ │ │ │ │ ├── SysUserDepartMapper.xml
│ │ │ │ │ ├── SysUserMapper.xml
│ │ │ │ │ ├── SysUserPositionMapper.xml
│ │ │ │ │ └── SysUserTenantMapper.xml
│ │ │ │ ├── model/
│ │ │ │ │ ├── AnnouncementSendModel.java
│ │ │ │ │ ├── DepartIdModel.java
│ │ │ │ │ ├── DuplicateCheckVo.java
│ │ │ │ │ ├── SysDepartTreeModel.java
│ │ │ │ │ ├── SysDictTree.java
│ │ │ │ │ ├── SysLoginModel.java
│ │ │ │ │ ├── SysPermissionTree.java
│ │ │ │ │ ├── SysUserSysDepPostModel.java
│ │ │ │ │ ├── SysUserSysDepartModel.java
│ │ │ │ │ ├── ThirdLoginModel.java
│ │ │ │ │ ├── TreeModel.java
│ │ │ │ │ └── TreeSelectModel.java
│ │ │ │ ├── rule/
│ │ │ │ │ ├── CategoryCodeRule.java
│ │ │ │ │ ├── OrderNumberRule.java
│ │ │ │ │ └── OrgCodeRule.java
│ │ │ │ ├── security/
│ │ │ │ │ └── DictQueryBlackListHandler.java
│ │ │ │ ├── service/
│ │ │ │ │ ├── ISysAnnouncementSendService.java
│ │ │ │ │ ├── ISysAnnouncementService.java
│ │ │ │ │ ├── ISysCategoryService.java
│ │ │ │ │ ├── ISysCheckRuleService.java
│ │ │ │ │ ├── ISysCommentService.java
│ │ │ │ │ ├── ISysDataLogService.java
│ │ │ │ │ ├── ISysDataSourceService.java
│ │ │ │ │ ├── ISysDepartPermissionService.java
│ │ │ │ │ ├── ISysDepartRolePermissionService.java
│ │ │ │ │ ├── ISysDepartRoleService.java
│ │ │ │ │ ├── ISysDepartRoleUserService.java
│ │ │ │ │ ├── ISysDepartService.java
│ │ │ │ │ ├── ISysDictItemService.java
│ │ │ │ │ ├── ISysDictService.java
│ │ │ │ │ ├── ISysFillRuleService.java
│ │ │ │ │ ├── ISysFormFileService.java
│ │ │ │ │ ├── ISysGatewayRouteService.java
│ │ │ │ │ ├── ISysLogService.java
│ │ │ │ │ ├── ISysPackPermissionService.java
│ │ │ │ │ ├── ISysPermissionDataRuleService.java
│ │ │ │ │ ├── ISysPermissionService.java
│ │ │ │ │ ├── ISysPositionService.java
│ │ │ │ │ ├── ISysRoleIndexService.java
│ │ │ │ │ ├── ISysRolePermissionService.java
│ │ │ │ │ ├── ISysRoleService.java
│ │ │ │ │ ├── ISysTableWhiteListService.java
│ │ │ │ │ ├── ISysTenantPackService.java
│ │ │ │ │ ├── ISysTenantService.java
│ │ │ │ │ ├── ISysThirdAccountService.java
│ │ │ │ │ ├── ISysThirdAppConfigService.java
│ │ │ │ │ ├── ISysUserDepPostService.java
│ │ │ │ │ ├── ISysUserDepartService.java
│ │ │ │ │ ├── ISysUserPositionService.java
│ │ │ │ │ ├── ISysUserRoleService.java
│ │ │ │ │ ├── ISysUserService.java
│ │ │ │ │ ├── ISysUserTenantService.java
│ │ │ │ │ ├── IThirdAppService.java
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── ImportFileServiceImpl.java
│ │ │ │ │ ├── SysAnnouncementSendServiceImpl.java
│ │ │ │ │ ├── SysAnnouncementServiceImpl.java
│ │ │ │ │ ├── SysBaseApiImpl.java
│ │ │ │ │ ├── SysCategoryServiceImpl.java
│ │ │ │ │ ├── SysCheckRuleServiceImpl.java
│ │ │ │ │ ├── SysCommentServiceImpl.java
│ │ │ │ │ ├── SysDataLogServiceImpl.java
│ │ │ │ │ ├── SysDataSourceServiceImpl.java
│ │ │ │ │ ├── SysDepartPermissionServiceImpl.java
│ │ │ │ │ ├── SysDepartRolePermissionServiceImpl.java
│ │ │ │ │ ├── SysDepartRoleServiceImpl.java
│ │ │ │ │ ├── SysDepartRoleUserServiceImpl.java
│ │ │ │ │ ├── SysDepartServiceImpl.java
│ │ │ │ │ ├── SysDictItemServiceImpl.java
│ │ │ │ │ ├── SysDictServiceImpl.java
│ │ │ │ │ ├── SysFillRuleServiceImpl.java
│ │ │ │ │ ├── SysFormFileServiceImpl.java
│ │ │ │ │ ├── SysGatewayRouteServiceImpl.java
│ │ │ │ │ ├── SysLogServiceImpl.java
│ │ │ │ │ ├── SysPackPermissionServiceImpl.java
│ │ │ │ │ ├── SysPermissionDataRuleImpl.java
│ │ │ │ │ ├── SysPermissionServiceImpl.java
│ │ │ │ │ ├── SysPositionServiceImpl.java
│ │ │ │ │ ├── SysRoleIndexServiceImpl.java
│ │ │ │ │ ├── SysRolePermissionServiceImpl.java
│ │ │ │ │ ├── SysRoleServiceImpl.java
│ │ │ │ │ ├── SysTableWhiteListServiceImpl.java
│ │ │ │ │ ├── SysTenantPackServiceImpl.java
│ │ │ │ │ ├── SysTenantServiceImpl.java
│ │ │ │ │ ├── SysThirdAccountServiceImpl.java
│ │ │ │ │ ├── SysThirdAppConfigServiceImpl.java
│ │ │ │ │ ├── SysUserDepPostServiceImpl.java
│ │ │ │ │ ├── SysUserDepartServiceImpl.java
│ │ │ │ │ ├── SysUserPositionServiceImpl.java
│ │ │ │ │ ├── SysUserRoleServiceImpl.java
│ │ │ │ │ ├── SysUserServiceImpl.java
│ │ │ │ │ ├── SysUserTenantServiceImpl.java
│ │ │ │ │ ├── ThirdAppDingtalkServiceImpl.java
│ │ │ │ │ └── ThirdAppWechatEnterpriseServiceImpl.java
│ │ │ │ ├── util/
│ │ │ │ │ ├── FindsDepartsChildrenUtil.java
│ │ │ │ │ ├── HttpFileToMultipartFileUtil.java
│ │ │ │ │ ├── ImportOldUserUtil.java
│ │ │ │ │ ├── ImportSysUserCache.java
│ │ │ │ │ ├── PermissionDataUtil.java
│ │ │ │ │ ├── RandImageUtil.java
│ │ │ │ │ ├── SecurityUtil.java
│ │ │ │ │ └── XssUtils.java
│ │ │ │ └── vo/
│ │ │ │ ├── SysChangeDepartVo.java
│ │ │ │ ├── SysCommentFileVo.java
│ │ │ │ ├── SysCommentVO.java
│ │ │ │ ├── SysDepartExportVo.java
│ │ │ │ ├── SysDepartPositionVo.java
│ │ │ │ ├── SysDepartUsersVO.java
│ │ │ │ ├── SysDictPage.java
│ │ │ │ ├── SysPositionSelectTreeVo.java
│ │ │ │ ├── SysUserDepVo.java
│ │ │ │ ├── SysUserExportVo.java
│ │ │ │ ├── SysUserImportVo.java
│ │ │ │ ├── SysUserOnlineVO.java
│ │ │ │ ├── SysUserPositionVo.java
│ │ │ │ ├── SysUserRoleCountVo.java
│ │ │ │ ├── SysUserRoleVO.java
│ │ │ │ ├── SysUserTenantVo.java
│ │ │ │ ├── UserAvatar.java
│ │ │ │ ├── lowapp/
│ │ │ │ │ ├── AppExportUserVo.java
│ │ │ │ │ ├── DepartAndUserInfo.java
│ │ │ │ │ ├── DepartInfo.java
│ │ │ │ │ ├── ExportDepartVo.java
│ │ │ │ │ ├── SysDictVo.java
│ │ │ │ │ └── UpdateDepartInfo.java
│ │ │ │ ├── tenant/
│ │ │ │ │ ├── TenantDepartAuthInfo.java
│ │ │ │ │ ├── TenantPackAuth.java
│ │ │ │ │ ├── TenantPackModel.java
│ │ │ │ │ ├── TenantPackUser.java
│ │ │ │ │ ├── TenantPackUserCount.java
│ │ │ │ │ ├── UserDepart.java
│ │ │ │ │ └── UserPosition.java
│ │ │ │ └── thirdapp/
│ │ │ │ ├── JdtDepartmentTreeVo.java
│ │ │ │ ├── JwDepartmentTreeVo.java
│ │ │ │ ├── JwSysUserDepartVo.java
│ │ │ │ ├── JwUserDepartVo.java
│ │ │ │ └── SyncInfoVo.java
│ │ │ └── resources/
│ │ │ ├── jeecg/
│ │ │ │ ├── code-template/
│ │ │ │ │ ├── one/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── ${bussiPackage}/
│ │ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ └── ${entityName}Controller.javai
│ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ └── ${entityName}.javai
│ │ │ │ │ │ ├── mapper/
│ │ │ │ │ │ │ ├── ${entityName}Mapper.javai
│ │ │ │ │ │ │ └── xml/
│ │ │ │ │ │ │ └── ${entityName}Mapper.xml
│ │ │ │ │ │ ├── service/
│ │ │ │ │ │ │ ├── I${entityName}Service.javai
│ │ │ │ │ │ │ └── impl/
│ │ │ │ │ │ │ └── ${entityName}ServiceImpl.javai
│ │ │ │ │ │ ├── uniapp/
│ │ │ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ │ │ └── ${entityName}List.vuei
│ │ │ │ │ │ ├── vue/
│ │ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ │ └── modules/
│ │ │ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ │ │ └── ${entityName}Modal__Style#Drawer.vuei
│ │ │ │ │ │ └── vue3/
│ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ │ │ └── modules/
│ │ │ │ │ │ └── ${entityName}Modal.vuei
│ │ │ │ │ ├── one2/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── ${bussiPackage}/
│ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ │ │ └── ${entityName}Controller.javai
│ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ │ │ └── ${entityName}.javai
│ │ │ │ │ │ ├── mapper/
│ │ │ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ │ │ ├── ${entityName}Mapper.javai
│ │ │ │ │ │ │ └── xml/
│ │ │ │ │ │ │ └── ${entityName}Mapper.xml
│ │ │ │ │ │ ├── service/
│ │ │ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ │ │ ├── I${entityName}Service.javai
│ │ │ │ │ │ │ └── impl/
│ │ │ │ │ │ │ └── ${entityName}ServiceImpl.javai
│ │ │ │ │ │ ├── vue/
│ │ │ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ │ └── modules/
│ │ │ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ │ │ └── ${entityName}Modal__Style#Drawer.vuei
│ │ │ │ │ │ └── vue3/
│ │ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ │ │ └── modules/
│ │ │ │ │ │ └── ${entityName}Modal.vuei
│ │ │ │ │ ├── onetomany/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── ${bussiPackage}/
│ │ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ └── ${entityName}Controller.javai
│ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ ├── ${entityName}.javai
│ │ │ │ │ │ │ └── [1-n]Entity.javai
│ │ │ │ │ │ ├── mapper/
│ │ │ │ │ │ │ ├── ${entityName}Mapper.javai
│ │ │ │ │ │ │ ├── [1-n]Mapper.javai
│ │ │ │ │ │ │ └── xml/
│ │ │ │ │ │ │ ├── ${entityName}Mapper.xml
│ │ │ │ │ │ │ └── [1-n]Mapper.xml
│ │ │ │ │ │ ├── service/
│ │ │ │ │ │ │ ├── I${entityName}Service.javai
│ │ │ │ │ │ │ ├── [1-n]Service.javai
│ │ │ │ │ │ │ └── impl/
│ │ │ │ │ │ │ ├── ${entityName}ServiceImpl.javai
│ │ │ │ │ │ │ └── [1-n]ServiceImpl.javai
│ │ │ │ │ │ ├── vo/
│ │ │ │ │ │ │ └── ${entityName}Page.javai
│ │ │ │ │ │ ├── vue/
│ │ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ │ └── modules/
│ │ │ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ │ │ └── ${entityName}Modal.vuei
│ │ │ │ │ │ └── vue3/
│ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ │ │ └── modules/
│ │ │ │ │ │ └── ${entityName}Modal.vuei
│ │ │ │ │ └── onetomany2/
│ │ │ │ │ └── java/
│ │ │ │ │ └── ${bussiPackage}/
│ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── ${entityName}Controller.javai
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ ├── ${entityName}.javai
│ │ │ │ │ │ └── [1-n]Entity.javai
│ │ │ │ │ ├── mapper/
│ │ │ │ │ │ ├── ${entityName}Mapper.javai
│ │ │ │ │ │ ├── [1-n]Mapper.javai
│ │ │ │ │ │ └── xml/
│ │ │ │ │ │ ├── ${entityName}Mapper.xml
│ │ │ │ │ │ └── [1-n]Mapper.xml
│ │ │ │ │ ├── service/
│ │ │ │ │ │ ├── I${entityName}Service.javai
│ │ │ │ │ │ ├── [1-n]Service.javai
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── ${entityName}ServiceImpl.javai
│ │ │ │ │ │ └── [1-n]ServiceImpl.javai
│ │ │ │ │ ├── vo/
│ │ │ │ │ │ └── ${entityName}Page.javai
│ │ │ │ │ ├── vue/
│ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ ├── [1-n]List.vuei
│ │ │ │ │ │ └── modules/
│ │ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ │ └── [1-n]Modal.vuei
│ │ │ │ │ └── vue3/
│ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ │ ├── [1-n]List.vuei
│ │ │ │ │ └── modules/
│ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ └── [1-n]Modal.vuei
│ │ │ │ └── code-template-online/
│ │ │ │ ├── common/
│ │ │ │ │ ├── blob.ftl
│ │ │ │ │ ├── form/
│ │ │ │ │ │ ├── native/
│ │ │ │ │ │ │ ├── vue3NativeComponents.ftl
│ │ │ │ │ │ │ ├── vue3NativeForm.ftl
│ │ │ │ │ │ │ ├── vue3NativeImport.ftl
│ │ │ │ │ │ │ ├── vue3NativeSearch.ftl
│ │ │ │ │ │ │ └── vueNativeSearchStyle.ftl
│ │ │ │ │ │ ├── vue3Jvxepopup.ftl
│ │ │ │ │ │ ├── vue3SearchStyle.ftl
│ │ │ │ │ │ └── vue3popup.ftl
│ │ │ │ │ ├── init/
│ │ │ │ │ │ ├── initValue.ftl
│ │ │ │ │ │ ├── initValueSub.ftl
│ │ │ │ │ │ └── native/
│ │ │ │ │ │ ├── vue3NativeInitValue.ftl
│ │ │ │ │ │ ├── vue3NativeMainInitValue.ftl
│ │ │ │ │ │ └── vue3NativeSubInitValue.ftl
│ │ │ │ │ ├── sql/
│ │ │ │ │ │ └── menu_insert.ftl
│ │ │ │ │ ├── utils.ftl
│ │ │ │ │ └── validatorRulesTemplate/
│ │ │ │ │ ├── core.ftl
│ │ │ │ │ ├── main.ftl
│ │ │ │ │ ├── native/
│ │ │ │ │ │ ├── vue3CoreNative.ftl
│ │ │ │ │ │ └── vue3MainNative.ftl
│ │ │ │ │ ├── sub-vue3.ftl
│ │ │ │ │ └── sub.ftl
│ │ │ │ ├── default/
│ │ │ │ │ ├── one/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── ${bussiPackage}/
│ │ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ └── ${entityName}Controller.javai
│ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ └── ${entityName}.javai
│ │ │ │ │ │ ├── mapper/
│ │ │ │ │ │ │ ├── ${entityName}Mapper.javai
│ │ │ │ │ │ │ └── xml/
│ │ │ │ │ │ │ └── ${entityName}Mapper.xml
│ │ │ │ │ │ ├── service/
│ │ │ │ │ │ │ ├── I${entityName}Service.javai
│ │ │ │ │ │ │ └── impl/
│ │ │ │ │ │ │ └── ${entityName}ServiceImpl.javai
│ │ │ │ │ │ ├── uniapp/
│ │ │ │ │ │ │ ├── ${entityName}Form.vue
│ │ │ │ │ │ │ └── ${entityName}List.vue
│ │ │ │ │ │ ├── uniapp3/
│ │ │ │ │ │ │ ├── ${entityName}Data.tsi
│ │ │ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ │ │ └── ${entityName}List.vuei
│ │ │ │ │ │ ├── vue/
│ │ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ │ │ └── modules/
│ │ │ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ │ │ └── ${entityName}Modal__Style#Drawer.vuei
│ │ │ │ │ │ ├── vue3/
│ │ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ │ │ └── components/
│ │ │ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ │ │ └── ${entityName}Modal.vuei
│ │ │ │ │ │ └── vue3Native/
│ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ │ └── components/
│ │ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ │ └── ${entityName}Modal.vuei
│ │ │ │ │ ├── onetomany/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── ${bussiPackage}/
│ │ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ └── ${entityName}Controller.javai
│ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ ├── ${entityName}.javai
│ │ │ │ │ │ │ └── [1-n]Entity.javai
│ │ │ │ │ │ ├── mapper/
│ │ │ │ │ │ │ ├── ${entityName}Mapper.javai
│ │ │ │ │ │ │ ├── [1-n]Mapper.javai
│ │ │ │ │ │ │ └── xml/
│ │ │ │ │ │ │ ├── ${entityName}Mapper.xml
│ │ │ │ │ │ │ └── [1-n]Mapper.xml
│ │ │ │ │ │ ├── service/
│ │ │ │ │ │ │ ├── I${entityName}Service.javai
│ │ │ │ │ │ │ ├── [1-n]Service.javai
│ │ │ │ │ │ │ └── impl/
│ │ │ │ │ │ │ ├── ${entityName}ServiceImpl.javai
│ │ │ │ │ │ │ └── [1-n]ServiceImpl.javai
│ │ │ │ │ │ ├── vo/
│ │ │ │ │ │ │ └── ${entityName}Page.javai
│ │ │ │ │ │ └── vue/
│ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ │ └── modules/
│ │ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ │ └── [1-n]Form.vuei
│ │ │ │ │ └── tree/
│ │ │ │ │ └── java/
│ │ │ │ │ └── ${bussiPackage}/
│ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── ${entityName}Controller.javai
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ └── ${entityName}.javai
│ │ │ │ │ ├── mapper/
│ │ │ │ │ │ ├── ${entityName}Mapper.javai
│ │ │ │ │ │ └── xml/
│ │ │ │ │ │ └── ${entityName}Mapper.xml
│ │ │ │ │ ├── service/
│ │ │ │ │ │ ├── I${entityName}Service.javai
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ └── ${entityName}ServiceImpl.javai
│ │ │ │ │ ├── vue/
│ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ │ └── modules/
│ │ │ │ │ │ └── ${entityName}Modal.vuei
│ │ │ │ │ ├── vue3/
│ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ │ └── components/
│ │ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ │ └── ${entityName}Modal.vuei
│ │ │ │ │ └── vue3Native/
│ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ └── components/
│ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ └── ${entityName}Modal.vuei
│ │ │ │ ├── erp/
│ │ │ │ │ └── onetomany/
│ │ │ │ │ └── java/
│ │ │ │ │ └── ${bussiPackage}/
│ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── ${entityName}Controller.javai
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ ├── ${entityName}.javai
│ │ │ │ │ │ └── [1-n]Entity.javai
│ │ │ │ │ ├── mapper/
│ │ │ │ │ │ ├── ${entityName}Mapper.javai
│ │ │ │ │ │ ├── [1-n]Mapper.javai
│ │ │ │ │ │ └── xml/
│ │ │ │ │ │ ├── ${entityName}Mapper.xml
│ │ │ │ │ │ └── [1-n]Mapper.xml
│ │ │ │ │ ├── service/
│ │ │ │ │ │ ├── I${entityName}Service.javai
│ │ │ │ │ │ ├── [1-n]Service.javai
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── ${entityName}ServiceImpl.javai
│ │ │ │ │ │ └── [1-n]ServiceImpl.javai
│ │ │ │ │ ├── vue/
│ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ │ ├── [1-n]List.vuei
│ │ │ │ │ │ └── modules/
│ │ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ │ └── [1-n]Modal.vuei
│ │ │ │ │ ├── vue3/
│ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ │ ├── [1-n]List.vuei
│ │ │ │ │ │ └── components/
│ │ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ │ └── [1-n]Modal.vuei
│ │ │ │ │ └── vue3Native/
│ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ ├── [1-n]List.vuei
│ │ │ │ │ └── components/
│ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ ├── [1-n]Form.vuei
│ │ │ │ │ └── [1-n]Modal.vuei
│ │ │ │ ├── inner-table/
│ │ │ │ │ └── onetomany/
│ │ │ │ │ └── java/
│ │ │ │ │ └── ${bussiPackage}/
│ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── ${entityName}Controller.javai
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ ├── ${entityName}.javai
│ │ │ │ │ │ └── [1-n]Entity.javai
│ │ │ │ │ ├── mapper/
│ │ │ │ │ │ ├── ${entityName}Mapper.javai
│ │ │ │ │ │ ├── [1-n]Mapper.javai
│ │ │ │ │ │ └── xml/
│ │ │ │ │ │ ├── ${entityName}Mapper.xml
│ │ │ │ │ │ └── [1-n]Mapper.xml
│ │ │ │ │ ├── service/
│ │ │ │ │ │ ├── I${entityName}Service.javai
│ │ │ │ │ │ ├── [1-n]Service.javai
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── ${entityName}ServiceImpl.javai
│ │ │ │ │ │ └── [1-n]ServiceImpl.javai
│ │ │ │ │ ├── vo/
│ │ │ │ │ │ └── ${entityName}Page.javai
│ │ │ │ │ ├── vue/
│ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ │ ├── modules/
│ │ │ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ │ │ └── [1-n]Form.vuei
│ │ │ │ │ │ └── subTables/
│ │ │ │ │ │ └── [1-n]SubTable.vuei
│ │ │ │ │ └── vue3/
│ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ │ └── [1-n]Form.vuei
│ │ │ │ │ └── subTables/
│ │ │ │ │ └── [1-n]SubTable.vuei
│ │ │ │ ├── jvxe/
│ │ │ │ │ └── onetomany/
│ │ │ │ │ └── java/
│ │ │ │ │ └── ${bussiPackage}/
│ │ │ │ │ └── ${entityPackage}/
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── ${entityName}Controller.javai
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ ├── ${entityName}.javai
│ │ │ │ │ │ └── [1-n]Entity.javai
│ │ │ │ │ ├── mapper/
│ │ │ │ │ │ ├── ${entityName}Mapper.javai
│ │ │ │ │ │ ├── [1-n]Mapper.javai
│ │ │ │ │ │ └── xml/
│ │ │ │ │ │ ├── ${entityName}Mapper.xml
│ │ │ │ │ │ └── [1-n]Mapper.xml
│ │ │ │ │ ├── service/
│ │ │ │ │ │ ├── I${entityName}Service.javai
│ │ │ │ │ │ ├── [1-n]Service.javai
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── ${entityName}ServiceImpl.javai
│ │ │ │ │ │ └── [1-n]ServiceImpl.javai
│ │ │ │ │ ├── vo/
│ │ │ │ │ │ └── ${entityName}Page.javai
│ │ │ │ │ ├── vue/
│ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ │ └── modules/
│ │ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ │ └── [1-n]Form.vuei
│ │ │ │ │ ├── vue3/
│ │ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ │ └── components/
│ │ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ │ └── [1-n]Form.vuei
│ │ │ │ │ └── vue3Native/
│ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ └── components/
│ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ └── [1-n]Form.vuei
│ │ │ │ └── tab/
│ │ │ │ └── onetomany/
│ │ │ │ └── java/
│ │ │ │ └── ${bussiPackage}/
│ │ │ │ └── ${entityPackage}/
│ │ │ │ ├── controller/
│ │ │ │ │ └── ${entityName}Controller.javai
│ │ │ │ ├── entity/
│ │ │ │ │ ├── ${entityName}.javai
│ │ │ │ │ └── [1-n]Entity.javai
│ │ │ │ ├── mapper/
│ │ │ │ │ ├── ${entityName}Mapper.javai
│ │ │ │ │ ├── [1-n]Mapper.javai
│ │ │ │ │ └── xml/
│ │ │ │ │ ├── ${entityName}Mapper.xml
│ │ │ │ │ └── [1-n]Mapper.xml
│ │ │ │ ├── service/
│ │ │ │ │ ├── I${entityName}Service.javai
│ │ │ │ │ ├── [1-n]Service.javai
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── ${entityName}ServiceImpl.javai
│ │ │ │ │ └── [1-n]ServiceImpl.javai
│ │ │ │ ├── vo/
│ │ │ │ │ └── ${entityName}Page.javai
│ │ │ │ ├── vue/
│ │ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ │ └── modules/
│ │ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ │ └── [1-n]Form.vuei
│ │ │ │ └── vue3/
│ │ │ │ ├── ${entityName}List.vuei
│ │ │ │ ├── ${entityName}__api.tsi
│ │ │ │ ├── ${entityName}__data.tsi
│ │ │ │ ├── V${currentDate}_1__menu_insert_${entityName}.sql
│ │ │ │ └── components/
│ │ │ │ ├── ${entityName}Form.vuei
│ │ │ │ ├── ${entityName}Modal.vuei
│ │ │ │ └── [1-n]Form.vuei
│ │ │ ├── static/
│ │ │ │ ├── demo1.html
│ │ │ │ ├── generic/
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── build/
│ │ │ │ │ │ ├── pdf.js
│ │ │ │ │ │ └── pdf.worker.js
│ │ │ │ │ └── web/
│ │ │ │ │ ├── cmaps/
│ │ │ │ │ │ ├── 78-EUC-H.bcmap
│ │ │ │ │ │ ├── 78-EUC-V.bcmap
│ │ │ │ │ │ ├── 78-H.bcmap
│ │ │ │ │ │ ├── 78-RKSJ-H.bcmap
│ │ │ │ │ │ ├── 78-RKSJ-V.bcmap
│ │ │ │ │ │ ├── 78-V.bcmap
│ │ │ │ │ │ ├── 78ms-RKSJ-H.bcmap
│ │ │ │ │ │ ├── 78ms-RKSJ-V.bcmap
│ │ │ │ │ │ ├── 83pv-RKSJ-H.bcmap
│ │ │ │ │ │ ├── 90ms-RKSJ-H.bcmap
│ │ │ │ │ │ ├── 90ms-RKSJ-V.bcmap
│ │ │ │ │ │ ├── 90msp-RKSJ-H.bcmap
│ │ │ │ │ │ ├── 90msp-RKSJ-V.bcmap
│ │ │ │ │ │ ├── 90pv-RKSJ-H.bcmap
│ │ │ │ │ │ ├── 90pv-RKSJ-V.bcmap
│ │ │ │ │ │ ├── Add-H.bcmap
│ │ │ │ │ │ ├── Add-RKSJ-H.bcmap
│ │ │ │ │ │ ├── Add-RKSJ-V.bcmap
│ │ │ │ │ │ ├── Add-V.bcmap
│ │ │ │ │ │ ├── Adobe-CNS1-0.bcmap
│ │ │ │ │ │ ├── Adobe-CNS1-1.bcmap
│ │ │ │ │ │ ├── Adobe-CNS1-2.bcmap
│ │ │ │ │ │ ├── Adobe-CNS1-3.bcmap
│ │ │ │ │ │ ├── Adobe-CNS1-4.bcmap
│ │ │ │ │ │ ├── Adobe-CNS1-5.bcmap
│ │ │ │ │ │ ├── Adobe-CNS1-6.bcmap
│ │ │ │ │ │ ├── Adobe-CNS1-UCS2.bcmap
│ │ │ │ │ │ ├── Adobe-GB1-0.bcmap
│ │ │ │ │ │ ├── Adobe-GB1-1.bcmap
│ │ │ │ │ │ ├── Adobe-GB1-2.bcmap
│ │ │ │ │ │ ├── Adobe-GB1-3.bcmap
│ │ │ │ │ │ ├── Adobe-GB1-4.bcmap
│ │ │ │ │ │ ├── Adobe-GB1-5.bcmap
│ │ │ │ │ │ ├── Adobe-GB1-UCS2.bcmap
│ │ │ │ │ │ ├── Adobe-Japan1-0.bcmap
│ │ │ │ │ │ ├── Adobe-Japan1-1.bcmap
│ │ │ │ │ │ ├── Adobe-Japan1-2.bcmap
│ │ │ │ │ │ ├── Adobe-Japan1-3.bcmap
│ │ │ │ │ │ ├── Adobe-Japan1-4.bcmap
│ │ │ │ │ │ ├── Adobe-Japan1-5.bcmap
│ │ │ │ │ │ ├── Adobe-Japan1-6.bcmap
│ │ │ │ │ │ ├── Adobe-Japan1-UCS2.bcmap
│ │ │ │ │ │ ├── Adobe-Korea1-0.bcmap
│ │ │ │ │ │ ├── Adobe-Korea1-1.bcmap
│ │ │ │ │ │ ├── Adobe-Korea1-2.bcmap
│ │ │ │ │ │ ├── Adobe-Korea1-UCS2.bcmap
│ │ │ │ │ │ ├── B5-H.bcmap
│ │ │ │ │ │ ├── B5-V.bcmap
│ │ │ │ │ │ ├── B5pc-H.bcmap
│ │ │ │ │ │ ├── B5pc-V.bcmap
│ │ │ │ │ │ ├── CNS-EUC-H.bcmap
│ │ │ │ │ │ ├── CNS-EUC-V.bcmap
│ │ │ │ │ │ ├── CNS1-H.bcmap
│ │ │ │ │ │ ├── CNS1-V.bcmap
│ │ │ │ │ │ ├── CNS2-H.bcmap
│ │ │ │ │ │ ├── CNS2-V.bcmap
│ │ │ │ │ │ ├── ETHK-B5-H.bcmap
│ │ │ │ │ │ ├── ETHK-B5-V.bcmap
│ │ │ │ │ │ ├── ETen-B5-H.bcmap
│ │ │ │ │ │ ├── ETen-B5-V.bcmap
│ │ │ │ │ │ ├── ETenms-B5-H.bcmap
│ │ │ │ │ │ ├── ETenms-B5-V.bcmap
│ │ │ │ │ │ ├── EUC-H.bcmap
│ │ │ │ │ │ ├── EUC-V.bcmap
│ │ │ │ │ │ ├── Ext-H.bcmap
│ │ │ │ │ │ ├── Ext-RKSJ-H.bcmap
│ │ │ │ │ │ ├── Ext-RKSJ-V.bcmap
│ │ │ │ │ │ ├── Ext-V.bcmap
│ │ │ │ │ │ ├── GB-EUC-H.bcmap
│ │ │ │ │ │ ├── GB-EUC-V.bcmap
│ │ │ │ │ │ ├── GB-H.bcmap
│ │ │ │ │ │ ├── GB-V.bcmap
│ │ │ │ │ │ ├── GBK-EUC-H.bcmap
│ │ │ │ │ │ ├── GBK-EUC-V.bcmap
│ │ │ │ │ │ ├── GBK2K-H.bcmap
│ │ │ │ │ │ ├── GBK2K-V.bcmap
│ │ │ │ │ │ ├── GBKp-EUC-H.bcmap
│ │ │ │ │ │ ├── GBKp-EUC-V.bcmap
│ │ │ │ │ │ ├── GBT-EUC-H.bcmap
│ │ │ │ │ │ ├── GBT-EUC-V.bcmap
│ │ │ │ │ │ ├── GBT-H.bcmap
│ │ │ │ │ │ ├── GBT-V.bcmap
│ │ │ │ │ │ ├── GBTpc-EUC-H.bcmap
│ │ │ │ │ │ ├── GBTpc-EUC-V.bcmap
│ │ │ │ │ │ ├── GBpc-EUC-H.bcmap
│ │ │ │ │ │ ├── GBpc-EUC-V.bcmap
│ │ │ │ │ │ ├── H.bcmap
│ │ │ │ │ │ ├── HKdla-B5-H.bcmap
│ │ │ │ │ │ ├── HKdla-B5-V.bcmap
│ │ │ │ │ │ ├── HKdlb-B5-H.bcmap
│ │ │ │ │ │ ├── HKdlb-B5-V.bcmap
│ │ │ │ │ │ ├── HKgccs-B5-H.bcmap
│ │ │ │ │ │ ├── HKgccs-B5-V.bcmap
│ │ │ │ │ │ ├── HKm314-B5-H.bcmap
│ │ │ │ │ │ ├── HKm314-B5-V.bcmap
│ │ │ │ │ │ ├── HKm471-B5-H.bcmap
│ │ │ │ │ │ ├── HKm471-B5-V.bcmap
│ │ │ │ │ │ ├── HKscs-B5-H.bcmap
│ │ │ │ │ │ ├── HKscs-B5-V.bcmap
│ │ │ │ │ │ ├── Hankaku.bcmap
│ │ │ │ │ │ ├── Hiragana.bcmap
│ │ │ │ │ │ ├── KSC-EUC-H.bcmap
│ │ │ │ │ │ ├── KSC-EUC-V.bcmap
│ │ │ │ │ │ ├── KSC-H.bcmap
│ │ │ │ │ │ ├── KSC-Johab-H.bcmap
│ │ │ │ │ │ ├── KSC-Johab-V.bcmap
│ │ │ │ │ │ ├── KSC-V.bcmap
│ │ │ │ │ │ ├── KSCms-UHC-H.bcmap
│ │ │ │ │ │ ├── KSCms-UHC-HW-H.bcmap
│ │ │ │ │ │ ├── KSCms-UHC-HW-V.bcmap
│ │ │ │ │ │ ├── KSCms-UHC-V.bcmap
│ │ │ │ │ │ ├── KSCpc-EUC-H.bcmap
│ │ │ │ │ │ ├── KSCpc-EUC-V.bcmap
│ │ │ │ │ │ ├── Katakana.bcmap
│ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ ├── NWP-H.bcmap
│ │ │ │ │ │ ├── NWP-V.bcmap
│ │ │ │ │ │ ├── RKSJ-H.bcmap
│ │ │ │ │ │ ├── RKSJ-V.bcmap
│ │ │ │ │ │ ├── Roman.bcmap
│ │ │ │ │ │ ├── UniCNS-UCS2-H.bcmap
│ │ │ │ │ │ ├── UniCNS-UCS2-V.bcmap
│ │ │ │ │ │ ├── UniCNS-UTF16-H.bcmap
│ │ │ │ │ │ ├── UniCNS-UTF16-V.bcmap
│ │ │ │ │ │ ├── UniCNS-UTF32-H.bcmap
│ │ │ │ │ │ ├── UniCNS-UTF32-V.bcmap
│ │ │ │ │ │ ├── UniCNS-UTF8-H.bcmap
│ │ │ │ │ │ ├── UniCNS-UTF8-V.bcmap
│ │ │ │ │ │ ├── UniGB-UCS2-H.bcmap
│ │ │ │ │ │ ├── UniGB-UCS2-V.bcmap
│ │ │ │ │ │ ├── UniGB-UTF16-H.bcmap
│ │ │ │ │ │ ├── UniGB-UTF16-V.bcmap
│ │ │ │ │ │ ├── UniGB-UTF32-H.bcmap
│ │ │ │ │ │ ├── UniGB-UTF32-V.bcmap
│ │ │ │ │ │ ├── UniGB-UTF8-H.bcmap
│ │ │ │ │ │ ├── UniGB-UTF8-V.bcmap
│ │ │ │ │ │ ├── UniJIS-UCS2-H.bcmap
│ │ │ │ │ │ ├── UniJIS-UCS2-HW-H.bcmap
│ │ │ │ │ │ ├── UniJIS-UCS2-HW-V.bcmap
│ │ │ │ │ │ ├── UniJIS-UCS2-V.bcmap
│ │ │ │ │ │ ├── UniJIS-UTF16-H.bcmap
│ │ │ │ │ │ ├── UniJIS-UTF16-V.bcmap
│ │ │ │ │ │ ├── UniJIS-UTF32-H.bcmap
│ │ │ │ │ │ ├── UniJIS-UTF32-V.bcmap
│ │ │ │ │ │ ├── UniJIS-UTF8-H.bcmap
│ │ │ │ │ │ ├── UniJIS-UTF8-V.bcmap
│ │ │ │ │ │ ├── UniJIS2004-UTF16-H.bcmap
│ │ │ │ │ │ ├── UniJIS2004-UTF16-V.bcmap
│ │ │ │ │ │ ├── UniJIS2004-UTF32-H.bcmap
│ │ │ │ │ │ ├── UniJIS2004-UTF32-V.bcmap
│ │ │ │ │ │ ├── UniJIS2004-UTF8-H.bcmap
│ │ │ │ │ │ ├── UniJIS2004-UTF8-V.bcmap
│ │ │ │ │ │ ├── UniJISPro-UCS2-HW-V.bcmap
│ │ │ │ │ │ ├── UniJISPro-UCS2-V.bcmap
│ │ │ │ │ │ ├── UniJISPro-UTF8-V.bcmap
│ │ │ │ │ │ ├── UniJISX0213-UTF32-H.bcmap
│ │ │ │ │ │ ├── UniJISX0213-UTF32-V.bcmap
│ │ │ │ │ │ ├── UniJISX02132004-UTF32-H.bcmap
│ │ │ │ │ │ ├── UniJISX02132004-UTF32-V.bcmap
│ │ │ │ │ │ ├── UniKS-UCS2-H.bcmap
│ │ │ │ │ │ ├── UniKS-UCS2-V.bcmap
│ │ │ │ │ │ ├── UniKS-UTF16-H.bcmap
│ │ │ │ │ │ ├── UniKS-UTF16-V.bcmap
│ │ │ │ │ │ ├── UniKS-UTF32-H.bcmap
│ │ │ │ │ │ ├── UniKS-UTF32-V.bcmap
│ │ │ │ │ │ ├── UniKS-UTF8-H.bcmap
│ │ │ │ │ │ ├── UniKS-UTF8-V.bcmap
│ │ │ │ │ │ ├── V.bcmap
│ │ │ │ │ │ └── WP-Symbol.bcmap
│ │ │ │ │ ├── compatibility.js
│ │ │ │ │ ├── debugger.js
│ │ │ │ │ ├── images/
│ │ │ │ │ │ ├── grab.cur
│ │ │ │ │ │ └── grabbing.cur
│ │ │ │ │ ├── l10n.js
│ │ │ │ │ ├── locale/
│ │ │ │ │ │ ├── locale.properties
│ │ │ │ │ │ └── zh-CN/
│ │ │ │ │ │ └── viewer.properties
│ │ │ │ │ ├── viewer.css
│ │ │ │ │ ├── viewer.html
│ │ │ │ │ └── viewer.js
│ │ │ │ └── view/
│ │ │ │ └── userlist.html
│ │ │ └── templates/
│ │ │ ├── announcement/
│ │ │ │ └── showContent.ftl
│ │ │ ├── demo3.ftl
│ │ │ ├── pdfPreviewIframe.ftl
│ │ │ └── thirdLogin.ftl
│ │ ├── jeecg-system-start/
│ │ │ ├── Dockerfile
│ │ │ ├── README.md
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── jeecg/
│ │ │ │ │ ├── JeecgSystemApplication.java
│ │ │ │ │ ├── codegenerate/
│ │ │ │ │ │ ├── JeecgOneGUI.java
│ │ │ │ │ │ └── JeecgOneToMainUtil.java
│ │ │ │ │ └── config/
│ │ │ │ │ └── flyway/
│ │ │ │ │ └── FlywayConfig.java
│ │ │ │ └── resources/
│ │ │ │ ├── application-dev.yml
│ │ │ │ ├── application-dm8.yml
│ │ │ │ ├── application-docker.yml
│ │ │ │ ├── application-kingbase8.yml
│ │ │ │ ├── application-oracle.yml
│ │ │ │ ├── application-postgresql.yml
│ │ │ │ ├── application-prod.yml
│ │ │ │ ├── application-sqlserver.yml
│ │ │ │ ├── application-test.yml
│ │ │ │ ├── application.yml
│ │ │ │ ├── banner.txt
│ │ │ │ ├── flyway/
│ │ │ │ │ └── sql/
│ │ │ │ │ └── mysql/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── V3.8.0_0__clear_flyway_sql.md
│ │ │ │ │ ├── V3.8.0_1__airag_add_menu.sql
│ │ │ │ │ ├── V3.8.0_2__airag_init_db.sql
│ │ │ │ │ ├── V3.8.1_1__all_upgrade.sql
│ │ │ │ │ ├── V3.8.1_2__openapi.sql
│ │ │ │ │ ├── V3.8.2_1__all_upgrade.sql
│ │ │ │ │ ├── V3.8.3_0__all_upgrade.sql
│ │ │ │ │ ├── V3.8.3_1__upgrade_jimubi.sql
│ │ │ │ │ ├── V3.9.0_0__all_upgrade.sql
│ │ │ │ │ ├── V3.9.0_1__mcp_demo.sql
│ │ │ │ │ ├── V3.9.0_2__upd_dep_category.sql
│ │ │ │ │ ├── V3.9.0_3__add_aiflow_permission.sql
│ │ │ │ │ ├── V3.9.0_4__add_onlineuser_perms.sql
│ │ │ │ │ ├── V3.9.1_0__all_upgrade.sql
│ │ │ │ │ └── V3.9.1_1__add_aiapp_img_gen.sql
│ │ │ │ ├── jeecg/
│ │ │ │ │ ├── jeecg_config.properties
│ │ │ │ │ └── jeecg_database.properties
│ │ │ │ └── logback-spring.xml
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── org/
│ │ │ └── jeecg/
│ │ │ ├── TestMain.java
│ │ │ ├── modules/
│ │ │ │ ├── message/
│ │ │ │ │ └── test/
│ │ │ │ │ └── SendMessageTest.java
│ │ │ │ ├── openapi/
│ │ │ │ │ └── test/
│ │ │ │ │ └── SampleOpenApiTest.java
│ │ │ │ └── system/
│ │ │ │ └── test/
│ │ │ │ ├── MockControllerTest.java
│ │ │ │ ├── SampleTest.java
│ │ │ │ ├── SysTableWhiteCheckTest.java
│ │ │ │ └── SysUserApiTest.java
│ │ │ └── smallTools/
│ │ │ ├── TestSqlHandle.java
│ │ │ └── TestStr.java
│ │ └── pom.xml
│ ├── jeecg-server-cloud/
│ │ ├── docker-compose.yml
│ │ ├── jeecg-cloud-gateway/
│ │ │ ├── Dockerfile
│ │ │ ├── README.md
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── jeecg/
│ │ │ │ │ ├── JeecgGatewayApplication.java
│ │ │ │ │ ├── config/
│ │ │ │ │ │ ├── GatewayRoutersConfig.java
│ │ │ │ │ │ ├── RateLimiterConfiguration.java
│ │ │ │ │ │ └── RouterDataType.java
│ │ │ │ │ ├── fallback/
│ │ │ │ │ │ ├── FallbackController.java
│ │ │ │ │ │ ├── HystrixFallbackHandler.java
│ │ │ │ │ │ └── sentinel/
│ │ │ │ │ │ ├── GatewaySentinelExceptionConfig.java
│ │ │ │ │ │ └── SentinelBlockRequestHandler.java
│ │ │ │ │ ├── filter/
│ │ │ │ │ │ ├── GlobalAccessTokenFilter.java
│ │ │ │ │ │ └── SentinelFilterContextConfig.java
│ │ │ │ │ ├── handler/
│ │ │ │ │ │ ├── LoderRouderHandler.java
│ │ │ │ │ │ └── swagger/
│ │ │ │ │ │ ├── MySwaggerResourceProvider.java
│ │ │ │ │ │ └── SwaggerResourceController.java
│ │ │ │ │ └── loader/
│ │ │ │ │ ├── DynamicRouteLoader.java
│ │ │ │ │ ├── repository/
│ │ │ │ │ │ ├── DynamicRouteService.java
│ │ │ │ │ │ └── MyInMemoryRouteDefinitionRepository.java
│ │ │ │ │ └── vo/
│ │ │ │ │ ├── GatewayRouteVo.java
│ │ │ │ │ ├── MyRouteDefinition.java
│ │ │ │ │ └── PredicatesVo.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.yml
│ │ │ │ └── logback-spring.xml
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── TestRoutes.java
│ │ ├── jeecg-cloud-nacos/
│ │ │ ├── Dockerfile
│ │ │ ├── README.md
│ │ │ ├── docs/
│ │ │ │ ├── config/
│ │ │ │ │ ├── jeecg-dev.yaml
│ │ │ │ │ ├── jeecg-gateway-dev.yaml
│ │ │ │ │ ├── jeecg-gateway-router.json
│ │ │ │ │ └── jeecg.yaml
│ │ │ │ └── db/
│ │ │ │ └── nacos_dm.sql
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── alibaba/
│ │ │ │ └── nacos/
│ │ │ │ └── JeecgNacosApplication.java
│ │ │ └── resources/
│ │ │ ├── application-dm.yml
│ │ │ ├── application-mysql.yml
│ │ │ └── application.yml
│ │ ├── jeecg-demo-cloud-start/
│ │ │ ├── Dockerfile
│ │ │ ├── README.md
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── jeecg/
│ │ │ │ └── JeecgDemoCloudApplication.java
│ │ │ └── resources/
│ │ │ ├── application.yml
│ │ │ └── logback-spring.xml
│ │ ├── jeecg-system-cloud-start/
│ │ │ ├── Dockerfile
│ │ │ ├── README.md
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── jeecg/
│ │ │ │ └── JeecgSystemCloudApplication.java
│ │ │ └── resources/
│ │ │ ├── application.yml
│ │ │ ├── jeecg/
│ │ │ │ ├── jeecg_config.properties
│ │ │ │ └── jeecg_database.properties
│ │ │ └── logback-spring.xml
│ │ ├── jeecg-visual/
│ │ │ ├── jeecg-cloud-monitor/
│ │ │ │ ├── README.md
│ │ │ │ ├── pom.xml
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── jeecg/
│ │ │ │ │ └── monitor/
│ │ │ │ │ ├── JeecgMonitorApplication.java
│ │ │ │ │ └── config/
│ │ │ │ │ └── SecuritySecureConfig.java
│ │ │ │ └── resources/
│ │ │ │ └── application.yml
│ │ │ ├── jeecg-cloud-sentinel/
│ │ │ │ ├── Dockerfile
│ │ │ │ ├── README.md
│ │ │ │ ├── pom.xml
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── alibaba/
│ │ │ │ │ └── csp/
│ │ │ │ │ └── sentinel/
│ │ │ │ │ └── dashboard/
│ │ │ │ │ ├── JeecgSentinelApplication.java
│ │ │ │ │ ├── constants/
│ │ │ │ │ │ └── SentinelConStants.java
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ ├── AuthorityRuleController.java
│ │ │ │ │ │ ├── DegradeController.java
│ │ │ │ │ │ ├── ParamFlowRuleController.java
│ │ │ │ │ │ ├── SystemController.java
│ │ │ │ │ │ ├── base/
│ │ │ │ │ │ │ └── BaseRuleController.java
│ │ │ │ │ │ ├── gateway/
│ │ │ │ │ │ │ ├── GatewayApiController.java
│ │ │ │ │ │ │ └── GatewayFlowRuleController.java
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ └── FlowControllerV2.java
│ │ │ │ │ └── rule/
│ │ │ │ │ └── nacos/
│ │ │ │ │ ├── NacosConfigProperties.java
│ │ │ │ │ ├── SentinelConfig.java
│ │ │ │ │ ├── authority/
│ │ │ │ │ │ ├── AuthorityRuleNacosProvider.java
│ │ │ │ │ │ └── AuthorityRuleNacosPublisher.java
│ │ │ │ │ ├── degrade/
│ │ │ │ │ │ ├── DegradeRuleNacosProvider.java
│ │ │ │ │ │ └── DegradeRuleNacosPublisher.java
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ ├── AuthorityRuleCorrectEntity.java
│ │ │ │ │ │ └── ParamFlowRuleCorrectEntity.java
│ │ │ │ │ ├── flow/
│ │ │ │ │ │ ├── FlowRuleNacosProvider.java
│ │ │ │ │ │ └── FlowRuleNacosPublisher.java
│ │ │ │ │ ├── gateway/
│ │ │ │ │ │ ├── GateWayApiNacosProvider.java
│ │ │ │ │ │ ├── GateWayApiNacosPublisher.java
│ │ │ │ │ │ ├── GateWayFlowRulesNacosProvider.java
│ │ │ │ │ │ └── GateWayFlowRulesNacosPublisher.java
│ │ │ │ │ ├── paramflow/
│ │ │ │ │ │ ├── ParamFlowRuleNacosProvider.java
│ │ │ │ │ │ └── ParamFlowRuleNacosPublisher.java
│ │ │ │ │ └── system/
│ │ │ │ │ ├── SystemRuleNacosProvider.java
│ │ │ │ │ └── SystemRuleNacosPublisher.java
│ │ │ │ └── resources/
│ │ │ │ └── application.yml
│ │ │ ├── jeecg-cloud-test/
│ │ │ │ ├── jeecg-cloud-test-more/
│ │ │ │ │ ├── pom.xml
│ │ │ │ │ └── src/
│ │ │ │ │ └── main/
│ │ │ │ │ └── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── jeecg/
│ │ │ │ │ └── modules/
│ │ │ │ │ └── test/
│ │ │ │ │ ├── constant/
│ │ │ │ │ │ └── CloudConstant.java
│ │ │ │ │ ├── feign/
│ │ │ │ │ │ ├── client/
│ │ │ │ │ │ │ ├── JeecgTestClient.java
│ │ │ │ │ │ │ └── JeecgTestClientDyn.java
│ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ └── JeecgTestFeignController.java
│ │ │ │ │ │ ├── factory/
│ │ │ │ │ │ │ └── JeecgTestClientFactory.java
│ │ │ │ │ │ └── fallback/
│ │ │ │ │ │ └── JeecgTestFallback.java
│ │ │ │ │ ├── lock/
│ │ │ │ │ │ └── DemoLockTest.java
│ │ │ │ │ └── xxljob/
│ │ │ │ │ ├── DemoJobHandler.java
│ │ │ │ │ └── XxclJobTest.java
│ │ │ │ ├── jeecg-cloud-test-rabbitmq/
│ │ │ │ │ ├── pom.xml
│ │ │ │ │ └── src/
│ │ │ │ │ └── main/
│ │ │ │ │ └── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── jeecg/
│ │ │ │ │ └── modules/
│ │ │ │ │ └── test/
│ │ │ │ │ └── rabbitmq/
│ │ │ │ │ ├── constant/
│ │ │ │ │ │ └── CloudConstant.java
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── JeecgMqTestController.java
│ │ │ │ │ ├── event/
│ │ │ │ │ │ └── DemoBusEvent.java
│ │ │ │ │ └── listener/
│ │ │ │ │ ├── HelloReceiver1.java
│ │ │ │ │ ├── HelloReceiver2.java
│ │ │ │ │ ├── HelloReceiver3.java
│ │ │ │ │ └── HelloTimeReceiver.java
│ │ │ │ ├── jeecg-cloud-test-rocketmq/
│ │ │ │ │ ├── pom.xml
│ │ │ │ │ └── src/
│ │ │ │ │ └── main/
│ │ │ │ │ └── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── jeecg/
│ │ │ │ │ └── modules/
│ │ │ │ │ └── test/
│ │ │ │ │ └── rocketmq/
│ │ │ │ │ ├── constant/
│ │ │ │ │ │ └── CloudConstant.java
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── JeecgMqTestController.java
│ │ │ │ │ ├── event/
│ │ │ │ │ │ └── DemoBusEvent.java
│ │ │ │ │ └── listener/
│ │ │ │ │ ├── HelloReceiver1.java
│ │ │ │ │ ├── HelloReceiver2.java
│ │ │ │ │ ├── HelloReceiver3.java
│ │ │ │ │ └── HelloTimeReceiver.java
│ │ │ │ ├── jeecg-cloud-test-seata/
│ │ │ │ │ ├── db/
│ │ │ │ │ │ └── seata.sql
│ │ │ │ │ ├── jeecg-cloud-test-seata-account/
│ │ │ │ │ │ ├── pom.xml
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ └── main/
│ │ │ │ │ │ ├── java/
│ │ │ │ │ │ │ └── org/
│ │ │ │ │ │ │ └── jeecg/
│ │ │ │ │ │ │ ├── SeataAccountApplication.java
│ │ │ │ │ │ │ └── modules/
│ │ │ │ │ │ │ └── test/
│ │ │ │ │ │ │ └── seata/
│ │ │ │ │ │ │ └── account/
│ │ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ │ └── SeataAccountController.java
│ │ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ │ └── SeataAccount.java
│ │ │ │ │ │ │ ├── mapper/
│ │ │ │ │ │ │ │ └── SeataAccountMapper.java
│ │ │ │ │ │ │ └── service/
│ │ │ │ │ │ │ ├── SeataAccountService.java
│ │ │ │ │ │ │ └── impl/
│ │ │ │ │ │ │ └── SeataAccountServiceImpl.java
│ │ │ │ │ │ └── resources/
│ │ │ │ │ │ ├── application.yml
│ │ │ │ │ │ └── sql/
│ │ │ │ │ │ └── schema-account.sql
│ │ │ │ │ ├── jeecg-cloud-test-seata-order/
│ │ │ │ │ │ ├── pom.xml
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ └── main/
│ │ │ │ │ │ ├── java/
│ │ │ │ │ │ │ └── org/
│ │ │ │ │ │ │ └── jeecg/
│ │ │ │ │ │ │ ├── SeataOrderApplication.java
│ │ │ │ │ │ │ └── modules/
│ │ │ │ │ │ │ └── test/
│ │ │ │ │ │ │ └── seata/
│ │ │ │ │ │ │ └── order/
│ │ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ │ └── SeataOrderController.java
│ │ │ │ │ │ │ ├── dto/
│ │ │ │ │ │ │ │ ├── PlaceOrderRequest.java
│ │ │ │ │ │ │ │ ├── ReduceBalanceRequest.java
│ │ │ │ │ │ │ │ └── ReduceStockRequest.java
│ │ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ │ └── SeataOrder.java
│ │ │ │ │ │ │ ├── enums/
│ │ │ │ │ │ │ │ └── OrderStatus.java
│ │ │ │ │ │ │ ├── feign/
│ │ │ │ │ │ │ │ ├── AccountClient.java
│ │ │ │ │ │ │ │ └── ProductClient.java
│ │ │ │ │ │ │ ├── mapper/
│ │ │ │ │ │ │ │ └── SeataOrderMapper.java
│ │ │ │ │ │ │ └── service/
│ │ │ │ │ │ │ ├── SeataOrderService.java
│ │ │ │ │ │ │ └── impl/
│ │ │ │ │ │ │ └── SeataOrderServiceImpl.java
│ │ │ │ │ │ └── resources/
│ │ │ │ │ │ ├── application.yml
│ │ │ │ │ │ └── sql/
│ │ │ │ │ │ └── schema-order.sql
│ │ │ │ │ ├── jeecg-cloud-test-seata-product/
│ │ │ │ │ │ ├── pom.xml
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ └── main/
│ │ │ │ │ │ ├── java/
│ │ │ │ │ │ │ └── org/
│ │ │ │ │ │ │ └── jeecg/
│ │ │ │ │ │ │ ├── SeataProductApplication.java
│ │ │ │ │ │ │ └── modules/
│ │ │ │ │ │ │ └── test/
│ │ │ │ │ │ │ └── seata/
│ │ │ │ │ │ │ └── product/
│ │ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ │ └── SeataProductController.java
│ │ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ │ └── SeataProduct.java
│ │ │ │ │ │ │ ├── mapper/
│ │ │ │ │ │ │ │ └── SeataProductMapper.java
│ │ │ │ │ │ │ └── service/
│ │ │ │ │ │ │ ├── SeataProductService.java
│ │ │ │ │ │ │ └── impl/
│ │ │ │ │ │ │ └── SeataProductServiceImpl.java
│ │ │ │ │ │ └── resources/
│ │ │ │ │ │ ├── application.yml
│ │ │ │ │ │ └── sql/
│ │ │ │ │ │ └── schema-product.sql
│ │ │ │ │ └── pom.xml
│ │ │ │ ├── jeecg-cloud-test-shardingsphere/
│ │ │ │ │ ├── README-ShardingSphere配置说明.md
│ │ │ │ │ ├── doc/
│ │ │ │ │ │ └── db.sql
│ │ │ │ │ ├── pom.xml
│ │ │ │ │ └── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── jeecg/
│ │ │ │ │ │ └── modules/
│ │ │ │ │ │ └── test/
│ │ │ │ │ │ └── sharding/
│ │ │ │ │ │ ├── algorithm/
│ │ │ │ │ │ │ └── StandardModTableShardAlgorithm.java
│ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ └── JeecgShardingDemoController.java
│ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ └── ShardingSysLog.java
│ │ │ │ │ │ ├── mapper/
│ │ │ │ │ │ │ ├── ShardingSysLogMapper.java
│ │ │ │ │ │ │ └── xml/
│ │ │ │ │ │ │ └── ShardingSysLogMapper.xml
│ │ │ │ │ │ └── service/
│ │ │ │ │ │ ├── IShardingSysLogService.java
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ └── ShardingSysLogServiceImpl.java
│ │ │ │ │ └── resources/
│ │ │ │ │ ├── sharding-multi.yaml
│ │ │ │ │ └── sharding.yaml
│ │ │ │ └── pom.xml
│ │ │ ├── jeecg-cloud-xxljob/
│ │ │ │ ├── Dockerfile
│ │ │ │ ├── README.md
│ │ │ │ ├── doc/
│ │ │ │ │ └── db/
│ │ │ │ │ └── tables_xxl_job.sql
│ │ │ │ ├── pom.xml
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── xxl/
│ │ │ │ │ └── job/
│ │ │ │ │ └── admin/
│ │ │ │ │ ├── XxlJobAdminApplication.java
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ ├── IndexController.java
│ │ │ │ │ │ ├── JobApiController.java
│ │ │ │ │ │ ├── JobCodeController.java
│ │ │ │ │ │ ├── JobGroupController.java
│ │ │ │ │ │ ├── JobInfoController.java
│ │ │ │ │ │ ├── JobLogController.java
│ │ │ │ │ │ ├── UserController.java
│ │ │ │ │ │ ├── annotation/
│ │ │ │ │ │ │ └── PermissionLimit.java
│ │ │ │ │ │ ├── interceptor/
│ │ │ │ │ │ │ ├── CookieInterceptor.java
│ │ │ │ │ │ │ ├── PermissionInterceptor.java
│ │ │ │ │ │ │ └── WebMvcConfig.java
│ │ │ │ │ │ └── resolver/
│ │ │ │ │ │ └── WebExceptionResolver.java
│ │ │ │ │ ├── core/
│ │ │ │ │ │ ├── alarm/
│ │ │ │ │ │ │ ├── JobAlarm.java
│ │ │ │ │ │ │ ├── JobAlarmer.java
│ │ │ │ │ │ │ └── impl/
│ │ │ │ │ │ │ └── EmailJobAlarm.java
│ │ │ │ │ │ ├── complete/
│ │ │ │ │ │ │ └── XxlJobCompleter.java
│ │ │ │ │ │ ├── conf/
│ │ │ │ │ │ │ └── XxlJobAdminConfig.java
│ │ │ │ │ │ ├── cron/
│ │ │ │ │ │ │ └── CronExpression.java
│ │ │ │ │ │ ├── exception/
│ │ │ │ │ │ │ └── XxlJobException.java
│ │ │ │ │ │ ├── model/
│ │ │ │ │ │ │ ├── XxlJobGroup.java
│ │ │ │ │ │ │ ├── XxlJobInfo.java
│ │ │ │ │ │ │ ├── XxlJobLog.java
│ │ │ │ │ │ │ ├── XxlJobLogGlue.java
│ │ │ │ │ │ │ ├── XxlJobLogReport.java
│ │ │ │ │ │ │ ├── XxlJobRegistry.java
│ │ │ │ │ │ │ └── XxlJobUser.java
│ │ │ │ │ │ ├── route/
│ │ │ │ │ │ │ ├── ExecutorRouteStrategyEnum.java
│ │ │ │ │ │ │ ├── ExecutorRouter.java
│ │ │ │ │ │ │ └── strategy/
│ │ │ │ │ │ │ ├── ExecutorRouteBusyover.java
│ │ │ │ │ │ │ ├── ExecutorRouteConsistentHash.java
│ │ │ │ │ │ │ ├── ExecutorRouteFailover.java
│ │ │ │ │ │ │ ├── ExecutorRouteFirst.java
│ │ │ │ │ │ │ ├── ExecutorRouteLFU.java
│ │ │ │ │ │ │ ├── ExecutorRouteLRU.java
│ │ │ │ │ │ │ ├── ExecutorRouteLast.java
│ │ │ │ │ │ │ ├── ExecutorRouteRandom.java
│ │ │ │ │ │ │ └── ExecutorRouteRound.java
│ │ │ │ │ │ ├── scheduler/
│ │ │ │ │ │ │ ├── MisfireStrategyEnum.java
│ │ │ │ │ │ │ ├── ScheduleTypeEnum.java
│ │ │ │ │ │ │ └── XxlJobScheduler.java
│ │ │ │ │ │ ├── thread/
│ │ │ │ │ │ │ ├── JobCompleteHelper.java
│ │ │ │ │ │ │ ├── JobFailMonitorHelper.java
│ │ │ │ │ │ │ ├── JobLogReportHelper.java
│ │ │ │ │ │ │ ├── JobRegistryHelper.java
│ │ │ │ │ │ │ ├── JobScheduleHelper.java
│ │ │ │ │ │ │ └── JobTriggerPoolHelper.java
│ │ │ │ │ │ ├── trigger/
│ │ │ │ │ │ │ ├── TriggerTypeEnum.java
│ │ │ │ │ │ │ └── XxlJobTrigger.java
│ │ │ │ │ │ └── util/
│ │ │ │ │ │ ├── CookieUtil.java
│ │ │ │ │ │ ├── FtlUtil.java
│ │ │ │ │ │ ├── I18nUtil.java
│ │ │ │ │ │ ├── JacksonUtil.java
│ │ │ │ │ │ └── LocalCacheUtil.java
│ │ │ │ │ ├── dao/
│ │ │ │ │ │ ├── XxlJobGroupDao.java
│ │ │ │ │ │ ├── XxlJobInfoDao.java
│ │ │ │ │ │ ├── XxlJobLogDao.java
│ │ │ │ │ │ ├── XxlJobLogGlueDao.java
│ │ │ │ │ │ ├── XxlJobLogReportDao.java
│ │ │ │ │ │ ├── XxlJobRegistryDao.java
│ │ │ │ │ │ └── XxlJobUserDao.java
│ │ │ │ │ └── service/
│ │ │ │ │ ├── LoginService.java
│ │ │ │ │ ├── XxlJobService.java
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── AdminBizImpl.java
│ │ │ │ │ └── XxlJobServiceImpl.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.yml
│ │ │ │ ├── i18n/
│ │ │ │ │ ├── message_en.properties
│ │ │ │ │ ├── message_zh_CN.properties
│ │ │ │ │ └── message_zh_TC.properties
│ │ │ │ ├── logback.xml
│ │ │ │ ├── mybatis-mapper/
│ │ │ │ │ ├── XxlJobGroupMapper.xml
│ │ │ │ │ ├── XxlJobInfoMapper.xml
│ │ │ │ │ ├── XxlJobLogGlueMapper.xml
│ │ │ │ │ ├── XxlJobLogMapper.xml
│ │ │ │ │ ├── XxlJobLogReportMapper.xml
│ │ │ │ │ ├── XxlJobRegistryMapper.xml
│ │ │ │ │ └── XxlJobUserMapper.xml
│ │ │ │ ├── static/
│ │ │ │ │ ├── adminlte/
│ │ │ │ │ │ ├── bower_components/
│ │ │ │ │ │ │ ├── PACE/
│ │ │ │ │ │ │ │ └── themes/
│ │ │ │ │ │ │ │ └── blue/
│ │ │ │ │ │ │ │ └── pace-theme-flash.css
│ │ │ │ │ │ │ ├── bootstrap-daterangepicker/
│ │ │ │ │ │ │ │ ├── daterangepicker.css
│ │ │ │ │ │ │ │ └── daterangepicker.js
│ │ │ │ │ │ │ ├── fastclick/
│ │ │ │ │ │ │ │ └── fastclick.js
│ │ │ │ │ │ │ └── font-awesome/
│ │ │ │ │ │ │ └── fonts/
│ │ │ │ │ │ │ └── FontAwesome.otf
│ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ └── iCheck/
│ │ │ │ │ │ └── square/
│ │ │ │ │ │ └── blue.css
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── common.1.js
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ ├── jobcode.index.1.js
│ │ │ │ │ │ ├── jobgroup.index.1.js
│ │ │ │ │ │ ├── jobinfo.index.1.js
│ │ │ │ │ │ ├── joblog.detail.1.js
│ │ │ │ │ │ ├── joblog.index.1.js
│ │ │ │ │ │ ├── login.1.js
│ │ │ │ │ │ └── user.index.1.js
│ │ │ │ │ └── plugins/
│ │ │ │ │ ├── codemirror/
│ │ │ │ │ │ ├── addon/
│ │ │ │ │ │ │ └── hint/
│ │ │ │ │ │ │ ├── anyword-hint.js
│ │ │ │ │ │ │ ├── show-hint.css
│ │ │ │ │ │ │ └── show-hint.js
│ │ │ │ │ │ ├── lib/
│ │ │ │ │ │ │ ├── codemirror.css
│ │ │ │ │ │ │ └── codemirror.js
│ │ │ │ │ │ └── mode/
│ │ │ │ │ │ ├── clike/
│ │ │ │ │ │ │ └── clike.js
│ │ │ │ │ │ ├── javascript/
│ │ │ │ │ │ │ └── javascript.js
│ │ │ │ │ │ ├── php/
│ │ │ │ │ │ │ └── php.js
│ │ │ │ │ │ ├── powershell/
│ │ │ │ │ │ │ └── powershell.js
│ │ │ │ │ │ ├── python/
│ │ │ │ │ │ │ └── python.js
│ │ │ │ │ │ └── shell/
│ │ │ │ │ │ └── shell.js
│ │ │ │ │ ├── cronGen/
│ │ │ │ │ │ ├── cronGen.js
│ │ │ │ │ │ └── cronGen_en.js
│ │ │ │ │ ├── jquery/
│ │ │ │ │ │ └── jquery.cookie.js
│ │ │ │ │ └── layer/
│ │ │ │ │ ├── layer.js
│ │ │ │ │ └── theme/
│ │ │ │ │ └── default/
│ │ │ │ │ └── layer.css
│ │ │ │ └── templates/
│ │ │ │ ├── common/
│ │ │ │ │ ├── common.exception.ftl
│ │ │ │ │ └── common.macro.ftl
│ │ │ │ ├── help.ftl
│ │ │ │ ├── index.ftl
│ │ │ │ ├── jobcode/
│ │ │ │ │ └── jobcode.index.ftl
│ │ │ │ ├── jobgroup/
│ │ │ │ │ └── jobgroup.index.ftl
│ │ │ │ ├── jobinfo/
│ │ │ │ │ └── jobinfo.index.ftl
│ │ │ │ ├── joblog/
│ │ │ │ │ ├── joblog.detail.ftl
│ │ │ │ │ └── joblog.index.ftl
│ │ │ │ ├── login.ftl
│ │ │ │ └── user/
│ │ │ │ └── user.index.ftl
│ │ │ └── pom.xml
│ │ └── pom.xml
│ └── pom.xml
├── jeecgboot-vue3/
│ ├── .editorconfig
│ ├── .eslintignore
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── .gitpod.yml
│ ├── .npmrc
│ ├── .prettierignore
│ ├── .stylelintignore
│ ├── .yarnclean
│ ├── CLAUDE.md
│ ├── Dockerfile
│ ├── Dockerfile.cloud
│ ├── LICENSE
│ ├── PWA-README.md
│ ├── README.md
│ ├── build/
│ │ ├── config/
│ │ │ └── themeConfig.ts
│ │ ├── constant.ts
│ │ ├── generate/
│ │ │ ├── generateModifyVars.ts
│ │ │ └── icon/
│ │ │ └── index.ts
│ │ ├── getConfigFileName.ts
│ │ ├── script/
│ │ │ ├── buildConf.ts
│ │ │ ├── copyChat.ts
│ │ │ └── postBuild.ts
│ │ ├── utils.ts
│ │ └── vite/
│ │ ├── plugin/
│ │ │ ├── compress.ts
│ │ │ ├── electron.ts
│ │ │ ├── html.ts
│ │ │ ├── imagemin.ts
│ │ │ ├── index.ts
│ │ │ ├── mock.ts
│ │ │ ├── pwa.ts
│ │ │ ├── qiankunMicro.ts
│ │ │ ├── styleImport.ts
│ │ │ ├── svgSprite.ts
│ │ │ ├── theme.ts
│ │ │ └── visualizer.ts
│ │ └── proxy.ts
│ ├── commitlint.config.js
│ ├── electron/
│ │ ├── env.ts
│ │ ├── ipc/
│ │ │ └── index.ts
│ │ ├── main.ts
│ │ ├── paths.ts
│ │ ├── preload/
│ │ │ └── index.ts
│ │ ├── script/
│ │ │ ├── buildAfter.ts
│ │ │ └── buildBefore.ts
│ │ └── utils/
│ │ ├── index.ts
│ │ ├── tray.ts
│ │ └── window.ts
│ ├── electron-builder.yaml
│ ├── electron.md
│ ├── index.html
│ ├── jest.config.mjs
│ ├── mock/
│ │ ├── _createProductionServer.ts
│ │ ├── _util.ts
│ │ ├── demo/
│ │ │ ├── account.ts
│ │ │ ├── select-demo.ts
│ │ │ ├── system.ts
│ │ │ ├── table-demo.ts
│ │ │ └── tree-demo.ts
│ │ └── sys/
│ │ ├── menu.ts
│ │ └── user.ts
│ ├── npm
│ ├── package.json
│ ├── postcss.config.js
│ ├── prettier.config.js
│ ├── public/
│ │ └── resource/
│ │ ├── js/
│ │ │ └── iconfont.js
│ │ └── tinymce/
│ │ ├── langs/
│ │ │ ├── en.js
│ │ │ └── zh_CN.js
│ │ └── skins/
│ │ └── ui/
│ │ └── jeecg/
│ │ ├── content.css
│ │ ├── content.inline.css
│ │ ├── content.mobile.css
│ │ ├── skin.css
│ │ └── skin.mobile.css
│ ├── src/
│ │ ├── App.vue
│ │ ├── api/
│ │ │ ├── common/
│ │ │ │ └── api.ts
│ │ │ ├── demo/
│ │ │ │ ├── account.ts
│ │ │ │ ├── error.ts
│ │ │ │ ├── model/
│ │ │ │ │ ├── accountModel.ts
│ │ │ │ │ ├── optionsModel.ts
│ │ │ │ │ ├── systemModel.ts
│ │ │ │ │ └── tableModel.ts
│ │ │ │ ├── select.ts
│ │ │ │ ├── system.ts
│ │ │ │ ├── table.ts
│ │ │ │ └── tree.ts
│ │ │ ├── model/
│ │ │ │ └── baseModel.ts
│ │ │ └── sys/
│ │ │ ├── menu.ts
│ │ │ ├── model/
│ │ │ │ ├── menuModel.ts
│ │ │ │ ├── uploadModel.ts
│ │ │ │ └── userModel.ts
│ │ │ ├── upload.ts
│ │ │ └── user.ts
│ │ ├── assets/
│ │ │ ├── icons/
│ │ │ │ └── js/
│ │ │ │ └── iconfont.js
│ │ │ ├── less/
│ │ │ │ └── JAreaLinkage.less
│ │ │ └── loginmini/
│ │ │ └── style/
│ │ │ ├── base.less
│ │ │ └── home.less
│ │ ├── components/
│ │ │ ├── Application/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── AppDarkModeToggle.vue
│ │ │ │ ├── AppLocalePicker.vue
│ │ │ │ ├── AppLogo.vue
│ │ │ │ ├── AppProvider.vue
│ │ │ │ ├── search/
│ │ │ │ │ ├── AppSearch.vue
│ │ │ │ │ ├── AppSearchFooter.vue
│ │ │ │ │ ├── AppSearchKeyItem.vue
│ │ │ │ │ ├── AppSearchModal.vue
│ │ │ │ │ └── useMenuSearch.ts
│ │ │ │ └── useAppContext.ts
│ │ │ ├── Authority/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ └── Authority.vue
│ │ │ ├── Basic/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── BasicArrow.vue
│ │ │ │ ├── BasicHelp.vue
│ │ │ │ └── BasicTitle.vue
│ │ │ ├── Button/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── BasicButton.vue
│ │ │ │ ├── JUploadButton.vue
│ │ │ │ ├── PopConfirmButton.vue
│ │ │ │ └── props.ts
│ │ │ ├── CardList/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── CardList.vue
│ │ │ │ └── data.ts
│ │ │ ├── ClickOutSide/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ └── ClickOutSide.vue
│ │ │ ├── CodeEditor/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── CodeEditor.vue
│ │ │ │ ├── codemirror/
│ │ │ │ │ ├── CodeMirror.vue
│ │ │ │ │ ├── codeMirror.ts
│ │ │ │ │ └── codemirror.css
│ │ │ │ └── typing.ts
│ │ │ ├── Container/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── LazyContainer.vue
│ │ │ │ ├── ScrollContainer.vue
│ │ │ │ ├── collapse/
│ │ │ │ │ ├── CollapseContainer.vue
│ │ │ │ │ └── CollapseHeader.vue
│ │ │ │ └── typing.ts
│ │ │ ├── ContextMenu/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── ContextMenu.vue
│ │ │ │ ├── createContextMenu.ts
│ │ │ │ └── typing.ts
│ │ │ ├── CountDown/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── CountButton.vue
│ │ │ │ ├── CountdownInput.vue
│ │ │ │ └── useCountdown.ts
│ │ │ ├── CountTo/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ └── CountTo.vue
│ │ │ ├── Cropper/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── CopperModal.vue
│ │ │ │ ├── Cropper.vue
│ │ │ │ ├── CropperAvatar.vue
│ │ │ │ └── typing.ts
│ │ │ ├── Description/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── Description.vue
│ │ │ │ ├── typing.ts
│ │ │ │ └── useDescription.ts
│ │ │ ├── Drawer/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── BasicDrawer.vue
│ │ │ │ ├── components/
│ │ │ │ │ ├── DrawerFooter.vue
│ │ │ │ │ └── DrawerHeader.vue
│ │ │ │ ├── props.ts
│ │ │ │ ├── typing.ts
│ │ │ │ └── useDrawer.ts
│ │ │ ├── Dropdown/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── Dropdown.vue
│ │ │ │ └── typing.ts
│ │ │ ├── Form/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── BasicForm.vue
│ │ │ │ ├── componentMap.ts
│ │ │ │ ├── components/
│ │ │ │ │ ├── ApiRadioGroup.vue
│ │ │ │ │ ├── ApiSelect.vue
│ │ │ │ │ ├── ApiTreeSelect.vue
│ │ │ │ │ ├── FormAction.vue
│ │ │ │ │ ├── FormItem.vue
│ │ │ │ │ ├── Middleware.vue
│ │ │ │ │ └── RadioButtonGroup.vue
│ │ │ │ ├── container/
│ │ │ │ │ └── JFormContainer.vue
│ │ │ │ ├── helper.ts
│ │ │ │ ├── hooks/
│ │ │ │ │ ├── useAdvanced.ts
│ │ │ │ │ ├── useAutoFocus.ts
│ │ │ │ │ ├── useComponentRegister.ts
│ │ │ │ │ ├── useForm.ts
│ │ │ │ │ ├── useFormContext.ts
│ │ │ │ │ ├── useFormEvents.ts
│ │ │ │ │ ├── useFormValues.ts
│ │ │ │ │ └── useLabelWidth.ts
│ │ │ │ ├── jeecg/
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── JAddInput.vue
│ │ │ │ │ │ ├── JAreaLinkage.vue
│ │ │ │ │ │ ├── JAreaSelect.vue
│ │ │ │ │ │ ├── JCategorySelect.vue
│ │ │ │ │ │ ├── JCheckbox.vue
│ │ │ │ │ │ ├── JCodeEditor.vue
│ │ │ │ │ │ ├── JDatePickerMultiple.vue
│ │ │ │ │ │ ├── JDictSelectTag.vue
│ │ │ │ │ │ ├── JEasyCron/
│ │ │ │ │ │ │ ├── EasyCronInner.vue
│ │ │ │ │ │ │ ├── EasyCronInput.vue
│ │ │ │ │ │ │ ├── EasyCronModal.vue
│ │ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ │ ├── easy.cron.data.ts
│ │ │ │ │ │ │ ├── easy.cron.inner.less
│ │ │ │ │ │ │ ├── easy.cron.input.less
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ ├── tabs/
│ │ │ │ │ │ │ │ ├── DayUI.vue
│ │ │ │ │ │ │ │ ├── HourUI.vue
│ │ │ │ │ │ │ │ ├── MinuteUI.vue
│ │ │ │ │ │ │ │ ├── MonthUI.vue
│ │ │ │ │ │ │ │ ├── SecondUI.vue
│ │ │ │ │ │ │ │ ├── WeekUI.vue
│ │ │ │ │ │ │ │ ├── YearUI.vue
│ │ │ │ │ │ │ │ └── useTabMixin.ts
│ │ │ │ │ │ │ └── validator.ts
│ │ │ │ │ │ ├── JEditor.vue
│ │ │ │ │ │ ├── JEllipsis.vue
│ │ │ │ │ │ ├── JFormContainer.vue
│ │ │ │ │ │ ├── JImageUpload.vue
│ │ │ │ │ │ ├── JImportModal.vue
│ │ │ │ │ │ ├── JInput.vue
│ │ │ │ │ │ ├── JInputPop.vue
│ │ │ │ │ │ ├── JInputSelect.vue
│ │ │ │ │ │ ├── JLinkTableCard/
│ │ │ │ │ │ │ ├── JLinkTableCard.vue
│ │ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ │ └── LinkTableListModal.vue
│ │ │ │ │ │ │ └── hooks/
│ │ │ │ │ │ │ ├── useLinkTable.ts
│ │ │ │ │ │ │ └── useTableColumns.ts
│ │ │ │ │ │ ├── JMarkdownEditor.vue
│ │ │ │ │ │ ├── JPopup.vue
│ │ │ │ │ │ ├── JPopupDict.vue
│ │ │ │ │ │ ├── JRangeDate.vue
│ │ │ │ │ │ ├── JRangeNumber.vue
│ │ │ │ │ │ ├── JRangeTime.vue
│ │ │ │ │ │ ├── JSearchSelect.vue
│ │ │ │ │ │ ├── JSelectDepartPost.vue
│ │ │ │ │ │ ├── JSelectDept.vue
│ │ │ │ │ │ ├── JSelectInput.vue
│ │ │ │ │ │ ├── JSelectMultiple.vue
│ │ │ │ │ │ ├── JSelectPosition.vue
│ │ │ │ │ │ ├── JSelectRole.vue
│ │ │ │ │ │ ├── JSelectUser.vue
│ │ │ │ │ │ ├── JSelectUserByDepartment.vue
│ │ │ │ │ │ ├── JSelectUserByDept.vue
│ │ │ │ │ │ ├── JSelectUserByDeptPost.vue
│ │ │ │ │ │ ├── JSwitch.vue
│ │ │ │ │ │ ├── JTreeDict.vue
│ │ │ │ │ │ ├── JTreeSelect.vue
│ │ │ │ │ │ ├── JUpload/
│ │ │ │ │ │ │ ├── JUpload.vue
│ │ │ │ │ │ │ ├── JUploadModal.vue
│ │ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ │ └── UploadItemActions.vue
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ └── upload.data.ts
│ │ │ │ │ │ ├── TreeIcon/
│ │ │ │ │ │ │ └── TreeIcon.vue
│ │ │ │ │ │ ├── base/
│ │ │ │ │ │ │ ├── JSelectBiz.vue
│ │ │ │ │ │ │ └── JTreeBiz.vue
│ │ │ │ │ │ ├── modal/
│ │ │ │ │ │ │ ├── DeptSelectModal.vue
│ │ │ │ │ │ │ ├── JPopupOnlReportModal.vue
│ │ │ │ │ │ │ ├── JSelectUserByDepartmentModal.vue
│ │ │ │ │ │ │ ├── PositionSelectModal.vue
│ │ │ │ │ │ │ ├── RoleSelectModal.vue
│ │ │ │ │ │ │ ├── UserSelectByDepModal.vue
│ │ │ │ │ │ │ ├── UserSelectByDepPostModal.vue
│ │ │ │ │ │ │ └── UserSelectModal.vue
│ │ │ │ │ │ ├── positionSelect/
│ │ │ │ │ │ │ └── PositionSelectModal.vue
│ │ │ │ │ │ ├── roleSelect/
│ │ │ │ │ │ │ ├── RoleSelectInput.vue
│ │ │ │ │ │ │ └── RoleSelectModal.vue
│ │ │ │ │ │ └── userSelect/
│ │ │ │ │ │ ├── FilteredUserSelectModal.vue
│ │ │ │ │ │ ├── SelectedUserItem.vue
│ │ │ │ │ │ ├── UserList.vue
│ │ │ │ │ │ ├── UserListAndDepart.vue
│ │ │ │ │ │ ├── UserListAndRole.vue
│ │ │ │ │ │ ├── UserSelectModal.vue
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ └── useUserSelect.ts
│ │ │ │ │ ├── hooks/
│ │ │ │ │ │ ├── useCodeHinting.ts
│ │ │ │ │ │ ├── useSelectBiz.ts
│ │ │ │ │ │ └── useTreeBiz.ts
│ │ │ │ │ └── props/
│ │ │ │ │ └── props.ts
│ │ │ │ ├── props.ts
│ │ │ │ ├── types/
│ │ │ │ │ ├── form.ts
│ │ │ │ │ ├── formItem.ts
│ │ │ │ │ ├── hooks.ts
│ │ │ │ │ └── index.ts
│ │ │ │ └── utils/
│ │ │ │ ├── Area.ts
│ │ │ │ ├── GroupRequest.ts
│ │ │ │ ├── areaDataUtil.js
│ │ │ │ └── formUtils.ts
│ │ │ ├── Icon/
│ │ │ │ ├── data/
│ │ │ │ │ └── icons.data.ts
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── Icon.vue
│ │ │ │ ├── IconList.vue
│ │ │ │ ├── IconPicker.vue
│ │ │ │ └── SvgIcon.vue
│ │ │ ├── InFilter/
│ │ │ │ ├── CascaderPcaInFilter.vue
│ │ │ │ ├── DatePickerInFilter.vue
│ │ │ │ └── index.ts
│ │ │ ├── JDragNotice/
│ │ │ │ └── JDragNotice.vue
│ │ │ ├── JVxeCustom/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── components/
│ │ │ │ │ ├── JVxeDepartSelectCell.vue
│ │ │ │ │ ├── JVxeFileCell.vue
│ │ │ │ │ ├── JVxeImageCell.vue
│ │ │ │ │ ├── JVxePcaCell.vue
│ │ │ │ │ ├── JVxePopupCell.vue
│ │ │ │ │ ├── JVxeSelectDictSearchCell.ts
│ │ │ │ │ └── JVxeUserSelectCell.vue
│ │ │ │ └── hooks/
│ │ │ │ └── useFileCell.ts
│ │ │ ├── Loading/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── Loading.vue
│ │ │ │ ├── createLoading.ts
│ │ │ │ ├── typing.ts
│ │ │ │ └── useLoading.ts
│ │ │ ├── Markdown/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── Markdown.vue
│ │ │ │ ├── MarkdownViewer.vue
│ │ │ │ └── typing.ts
│ │ │ ├── Menu/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── BasicMenu.vue
│ │ │ │ ├── components/
│ │ │ │ │ ├── BasicMenuItem.vue
│ │ │ │ │ ├── BasicSubMenuItem.vue
│ │ │ │ │ └── MenuItemContent.vue
│ │ │ │ ├── index.less
│ │ │ │ ├── props.ts
│ │ │ │ ├── types.ts
│ │ │ │ ├── useBasicMenuContext.ts
│ │ │ │ └── useOpenKeys.ts
│ │ │ ├── Modal/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── BasicModal.vue
│ │ │ │ ├── JModal/
│ │ │ │ │ └── JModal.vue
│ │ │ │ ├── components/
│ │ │ │ │ ├── Modal.tsx
│ │ │ │ │ ├── ModalClose.vue
│ │ │ │ │ ├── ModalFooter.vue
│ │ │ │ │ ├── ModalHeader.vue
│ │ │ │ │ └── ModalWrapper.vue
│ │ │ │ ├── hooks/
│ │ │ │ │ ├── useModal.ts
│ │ │ │ │ ├── useModalContext.ts
│ │ │ │ │ ├── useModalDrag.ts
│ │ │ │ │ └── useModalFullScreen.ts
│ │ │ │ ├── index.less
│ │ │ │ ├── props.ts
│ │ │ │ └── typing.ts
│ │ │ ├── Page/
│ │ │ │ ├── index.ts
│ │ │ │ ├── injectionKey.ts
│ │ │ │ └── src/
│ │ │ │ ├── PageFooter.vue
│ │ │ │ └── PageWrapper.vue
│ │ │ ├── Preview/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── Functional.vue
│ │ │ │ ├── Preview.vue
│ │ │ │ ├── functional.ts
│ │ │ │ └── typing.ts
│ │ │ ├── Qrcode/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── Qrcode.vue
│ │ │ │ ├── drawCanvas.ts
│ │ │ │ ├── drawLogo.ts
│ │ │ │ ├── qrcodePlus.ts
│ │ │ │ ├── toCanvas.ts
│ │ │ │ └── typing.ts
│ │ │ ├── Scrollbar/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── Scrollbar.vue
│ │ │ │ ├── bar.ts
│ │ │ │ ├── types.d.ts
│ │ │ │ └── util.ts
│ │ │ ├── SimpleMenu/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── SimpleMenu.vue
│ │ │ │ ├── SimpleMenuTag.vue
│ │ │ │ ├── SimpleSubMenu.vue
│ │ │ │ ├── components/
│ │ │ │ │ ├── Menu.vue
│ │ │ │ │ ├── MenuCollapseTransition.vue
│ │ │ │ │ ├── MenuItem.vue
│ │ │ │ │ ├── SubMenuItem.vue
│ │ │ │ │ ├── menu.less
│ │ │ │ │ ├── types.ts
│ │ │ │ │ ├── useMenu.ts
│ │ │ │ │ └── useSimpleMenuContext.ts
│ │ │ │ ├── index.less
│ │ │ │ ├── types.ts
│ │ │ │ └── useOpenKeys.ts
│ │ │ ├── StrengthMeter/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ └── StrengthMeter.vue
│ │ │ ├── Table/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── BasicTable.vue
│ │ │ │ ├── componentMap.ts
│ │ │ │ ├── components/
│ │ │ │ │ ├── CustomSelectHeader.vue
│ │ │ │ │ ├── EditTableHeaderIcon.vue
│ │ │ │ │ ├── ExpandIcon.tsx
│ │ │ │ │ ├── HeaderCell.vue
│ │ │ │ │ ├── TableAction.vue
│ │ │ │ │ ├── TableFooter.vue
│ │ │ │ │ ├── TableHeader.vue
│ │ │ │ │ ├── TableImg.vue
│ │ │ │ │ ├── TableSummary.tsx
│ │ │ │ │ ├── TableTitle.vue
│ │ │ │ │ ├── editable/
│ │ │ │ │ │ ├── CellComponent.ts
│ │ │ │ │ │ ├── EditableCell.vue
│ │ │ │ │ │ ├── helper.ts
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ └── settings/
│ │ │ │ │ ├── ColumnSetting.vue
│ │ │ │ │ ├── FullScreenSetting.vue
│ │ │ │ │ ├── RedoSetting.vue
│ │ │ │ │ ├── SizeSetting.vue
│ │ │ │ │ └── index.vue
│ │ │ │ ├── const.ts
│ │ │ │ ├── hooks/
│ │ │ │ │ ├── useColumns.ts
│ │ │ │ │ ├── useColumnsCache.ts
│ │ │ │ │ ├── useCustomRow.ts
│ │ │ │ │ ├── useCustomSelection.tsx
│ │ │ │ │ ├── useDataSource.ts
│ │ │ │ │ ├── useLoading.ts
│ │ │ │ │ ├── usePagination.tsx
│ │ │ │ │ ├── useRowSelection.ts
│ │ │ │ │ ├── useTable.ts
│ │ │ │ │ ├── useTableContext.ts
│ │ │ │ │ ├── useTableExpand.ts
│ │ │ │ │ ├── useTableFooter.ts
│ │ │ │ │ ├── useTableForm.ts
│ │ │ │ │ ├── useTableHeader.ts
│ │ │ │ │ ├── useTableScroll.ts
│ │ │ │ │ └── useTableStyle.ts
│ │ │ │ ├── props.ts
│ │ │ │ └── types/
│ │ │ │ ├── column.ts
│ │ │ │ ├── componentType.ts
│ │ │ │ ├── pagination.ts
│ │ │ │ ├── table.ts
│ │ │ │ └── tableAction.ts
│ │ │ ├── Time/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ └── Time.vue
│ │ │ ├── Tinymce/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── Editor.vue
│ │ │ │ ├── ImgUpload.vue
│ │ │ │ ├── ProcessMask.vue
│ │ │ │ ├── helper.ts
│ │ │ │ └── tinymce.ts
│ │ │ ├── Transition/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── CollapseTransition.vue
│ │ │ │ ├── CreateTransition.tsx
│ │ │ │ └── ExpandTransition.ts
│ │ │ ├── Tree/
│ │ │ │ ├── index.ts
│ │ │ │ ├── src/
│ │ │ │ │ ├── BasicTree.vue
│ │ │ │ │ ├── TreeIcon.ts
│ │ │ │ │ ├── components/
│ │ │ │ │ │ └── TreeHeader.vue
│ │ │ │ │ ├── hooks/
│ │ │ │ │ │ └── useTree.ts
│ │ │ │ │ └── types/
│ │ │ │ │ └── tree.ts
│ │ │ │ └── style/
│ │ │ │ ├── index.less
│ │ │ │ └── index.ts
│ │ │ ├── Tree_backup/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── Tree.vue
│ │ │ │ ├── TreeHeader.vue
│ │ │ │ ├── TreeIcon.ts
│ │ │ │ ├── props.ts
│ │ │ │ ├── typing.ts
│ │ │ │ └── useTree.ts
│ │ │ ├── Upload/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── BasicUpload.vue
│ │ │ │ ├── FileList.vue
│ │ │ │ ├── ThumbUrl.vue
│ │ │ │ ├── UploadModal.vue
│ │ │ │ ├── UploadPreviewModal.vue
│ │ │ │ ├── data.tsx
│ │ │ │ ├── helper.ts
│ │ │ │ ├── props.ts
│ │ │ │ ├── typing.ts
│ │ │ │ └── useUpload.ts
│ │ │ ├── Verify/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ ├── DragVerify.vue
│ │ │ │ ├── ImgRotate.vue
│ │ │ │ ├── props.ts
│ │ │ │ └── typing.ts
│ │ │ ├── VirtualScroll/
│ │ │ │ ├── index.ts
│ │ │ │ └── src/
│ │ │ │ └── VirtualScroll.vue
│ │ │ ├── chart/
│ │ │ │ ├── Bar.vue
│ │ │ │ ├── BarAndLine.vue
│ │ │ │ ├── BarMulti.vue
│ │ │ │ ├── ChartCard.vue
│ │ │ │ ├── Gauge.vue
│ │ │ │ ├── HeadInfo.vue
│ │ │ │ ├── LineMulti.vue
│ │ │ │ ├── Pie.vue
│ │ │ │ ├── README.md
│ │ │ │ ├── Radar.vue
│ │ │ │ ├── RankList.vue
│ │ │ │ ├── SingleLine.vue
│ │ │ │ ├── StackBar.vue
│ │ │ │ └── Trend.vue
│ │ │ ├── jeecg/
│ │ │ │ ├── AIcon.vue
│ │ │ │ ├── ExcelButton.vue
│ │ │ │ ├── JPrompt/
│ │ │ │ │ ├── JPrompt.vue
│ │ │ │ │ ├── hooks/
│ │ │ │ │ │ └── useJPrompt.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── typing.ts
│ │ │ │ ├── JVxeTable/
│ │ │ │ │ ├── hooks.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── JVxeTable.ts
│ │ │ │ │ │ ├── componentMap.ts
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── JVxeDetailsModal.vue
│ │ │ │ │ │ │ ├── JVxeReloadEffect.ts
│ │ │ │ │ │ │ ├── JVxeSubPopover.vue
│ │ │ │ │ │ │ ├── JVxeToolbar.vue
│ │ │ │ │ │ │ └── cells/
│ │ │ │ │ │ │ ├── JVxeCheckboxCell.vue
│ │ │ │ │ │ │ ├── JVxeDateCell.vue
│ │ │ │ │ │ │ ├── JVxeDragSortCell.vue
│ │ │ │ │ │ │ ├── JVxeInputCell.vue
│ │ │ │ │ │ │ ├── JVxeNormalCell.vue
│ │ │ │ │ │ │ ├── JVxeProgressCell.vue
│ │ │ │ │ │ │ ├── JVxeRadioCell.vue
│ │ │ │ │ │ │ ├── JVxeSelectCell.vue
│ │ │ │ │ │ │ ├── JVxeSlotCell.ts
│ │ │ │ │ │ │ ├── JVxeTextareaCell.vue
│ │ │ │ │ │ │ ├── JVxeTimeCell.vue
│ │ │ │ │ │ │ └── JVxeUploadCell.vue
│ │ │ │ │ │ ├── hooks/
│ │ │ │ │ │ │ ├── cells/
│ │ │ │ │ │ │ │ └── useJVxeUploadCell.ts
│ │ │ │ │ │ │ ├── useColumns.ts
│ │ │ │ │ │ │ ├── useColumnsCache.ts
│ │ │ │ │ │ │ ├── useData.ts
│ │ │ │ │ │ │ ├── useDataSource.ts
│ │ │ │ │ │ │ ├── useDragSort.ts
│ │ │ │ │ │ │ ├── useFinallyProps.ts
│ │ │ │ │ │ │ ├── useJVxeComponent.ts
│ │ │ │ │ │ │ ├── useKeyboardEdit.ts
│ │ │ │ │ │ │ ├── useLinkage.ts
│ │ │ │ │ │ │ ├── useMethods.ts
│ │ │ │ │ │ │ ├── usePagination.ts
│ │ │ │ │ │ │ ├── useRenderComponents.ts
│ │ │ │ │ │ │ ├── useToolbar.ts
│ │ │ │ │ │ │ ├── useValidateRules.ts
│ │ │ │ │ │ │ └── useWebSocket.ts
│ │ │ │ │ │ ├── install.ts
│ │ │ │ │ │ ├── style/
│ │ │ │ │ │ │ ├── index.less
│ │ │ │ │ │ │ ├── reload-effect.less
│ │ │ │ │ │ │ ├── vxe.const.less
│ │ │ │ │ │ │ └── vxe.dark.less
│ │ │ │ │ │ ├── types/
│ │ │ │ │ │ │ ├── JVxeComponent.ts
│ │ │ │ │ │ │ ├── JVxeTypes.ts
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── utils/
│ │ │ │ │ │ │ ├── authUtils.ts
│ │ │ │ │ │ │ ├── enhancedUtils.ts
│ │ │ │ │ │ │ ├── registerUtils.ts
│ │ │ │ │ │ │ └── vxeUtils.ts
│ │ │ │ │ │ └── vxe.data.ts
│ │ │ │ │ ├── types.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── OnLine/
│ │ │ │ │ ├── JPopupOnlReport.vue
│ │ │ │ │ ├── SearchFormItem.vue
│ │ │ │ │ ├── hooks/
│ │ │ │ │ │ └── usePopBiz.ts
│ │ │ │ │ └── types/
│ │ │ │ │ └── onlineConfig.ts
│ │ │ │ ├── UserAvatar.vue
│ │ │ │ ├── captcha/
│ │ │ │ │ └── CaptchaModal.vue
│ │ │ │ ├── comment/
│ │ │ │ │ ├── CommentFiles.vue
│ │ │ │ │ ├── CommentList.vue
│ │ │ │ │ ├── CommentPanel.vue
│ │ │ │ │ ├── DataLogList.vue
│ │ │ │ │ ├── HistoryFileList.vue
│ │ │ │ │ ├── MyComment.vue
│ │ │ │ │ ├── UploadChunk.vue
│ │ │ │ │ ├── comment.less
│ │ │ │ │ └── useComment.ts
│ │ │ │ └── thirdApp/
│ │ │ │ ├── JThirdAppButton.vue
│ │ │ │ ├── JThirdAppDropdown.vue
│ │ │ │ └── jThirdApp.api.ts
│ │ │ ├── onlinePreview/
│ │ │ │ ├── WpsFileView.vue
│ │ │ │ └── open-jssdk.es.js
│ │ │ ├── registerGlobComp.ts
│ │ │ └── wordtpl/
│ │ │ ├── DocDesign.ts
│ │ │ ├── DocDesign.vue
│ │ │ ├── canvas-editor.js
│ │ │ ├── components/
│ │ │ │ ├── HighlightColorModal.vue
│ │ │ │ ├── HyperlinkDrawer.vue
│ │ │ │ ├── PagerMarginDrawer.vue
│ │ │ │ └── WatermarkDrawer.vue
│ │ │ └── style/
│ │ │ └── DocDesign.css
│ │ ├── design/
│ │ │ ├── ant/
│ │ │ │ ├── btn.less
│ │ │ │ ├── index.less
│ │ │ │ ├── input.less
│ │ │ │ ├── pagination.less
│ │ │ │ └── table.less
│ │ │ ├── color.less
│ │ │ ├── config.less
│ │ │ ├── entry.css
│ │ │ ├── index.less
│ │ │ ├── public.less
│ │ │ ├── theme.less
│ │ │ ├── transition/
│ │ │ │ ├── base.less
│ │ │ │ ├── fade.less
│ │ │ │ ├── index.less
│ │ │ │ ├── scale.less
│ │ │ │ ├── scroll.less
│ │ │ │ ├── slide.less
│ │ │ │ └── zoom.less
│ │ │ └── var/
│ │ │ ├── breakpoint.less
│ │ │ ├── easing.less
│ │ │ └── index.less
│ │ ├── directives/
│ │ │ ├── clickOutside.ts
│ │ │ ├── index.ts
│ │ │ ├── loading.ts
│ │ │ ├── permission.ts
│ │ │ ├── repeatClick.ts
│ │ │ └── ripple/
│ │ │ ├── index.less
│ │ │ └── index.ts
│ │ ├── electron/
│ │ │ └── index.ts
│ │ ├── enums/
│ │ │ ├── CompTypeEnum.ts
│ │ │ ├── DateTypeEnum.ts
│ │ │ ├── appEnum.ts
│ │ │ ├── breakpointEnum.ts
│ │ │ ├── cacheEnum.ts
│ │ │ ├── exceptionEnum.ts
│ │ │ ├── httpEnum.ts
│ │ │ ├── jeecgEnum.ts
│ │ │ ├── menuEnum.ts
│ │ │ ├── pageEnum.ts
│ │ │ ├── roleEnum.ts
│ │ │ └── sizeEnum.ts
│ │ ├── hooks/
│ │ │ ├── component/
│ │ │ │ ├── useFormItem.ts
│ │ │ │ ├── useFormItemSingle.ts
│ │ │ │ └── usePageContext.ts
│ │ │ ├── core/
│ │ │ │ ├── onMountedOrActivated.ts
│ │ │ │ ├── useAttrs.ts
│ │ │ │ ├── useContext.ts
│ │ │ │ ├── useLockFn.ts
│ │ │ │ ├── useRefs.ts
│ │ │ │ └── useTimeout.ts
│ │ │ ├── event/
│ │ │ │ ├── useBreakpoint.ts
│ │ │ │ ├── useEventListener.ts
│ │ │ │ ├── useIntersectionObserver.ts
│ │ │ │ ├── useScroll.ts
│ │ │ │ ├── useScrollTo.ts
│ │ │ │ └── useWindowSizeFn.ts
│ │ │ ├── jeecg/
│ │ │ │ └── useAdaptiveWidth.ts
│ │ │ ├── setting/
│ │ │ │ ├── index.ts
│ │ │ │ ├── useHeaderSetting.ts
│ │ │ │ ├── useMenuSetting.ts
│ │ │ │ ├── useMultipleTabSetting.ts
│ │ │ │ ├── useRootSetting.ts
│ │ │ │ └── useTransitionSetting.ts
│ │ │ ├── system/
│ │ │ │ ├── useAutoAdapt.ts
│ │ │ │ ├── useJvxeMethods.ts
│ │ │ │ ├── useListPage.ts
│ │ │ │ ├── useMethods.ts
│ │ │ │ └── useThirdLogin.ts
│ │ │ └── web/
│ │ │ ├── useAppInject.ts
│ │ │ ├── useContentHeight.ts
│ │ │ ├── useContextMenu.ts
│ │ │ ├── useCopyModal.ts
│ │ │ ├── useCopyToClipboard.ts
│ │ │ ├── useDesign.ts
│ │ │ ├── useDragNotice.ts
│ │ │ ├── useECharts.ts
│ │ │ ├── useFullContent.ts
│ │ │ ├── useI18n.ts
│ │ │ ├── useLockPage.ts
│ │ │ ├── useMessage.ts
│ │ │ ├── useMessage.tsx_backup
│ │ │ ├── usePage.ts
│ │ │ ├── usePagination.ts
│ │ │ ├── usePermission.ts
│ │ │ ├── usePrintJS.ts
│ │ │ ├── useScript.ts
│ │ │ ├── useSortable.ts
│ │ │ ├── useSso.ts
│ │ │ ├── useTabs.ts
│ │ │ ├── useTitle.ts
│ │ │ ├── useWatermark.ts
│ │ │ └── useWebSocket.ts
│ │ ├── layouts/
│ │ │ ├── default/
│ │ │ │ ├── content/
│ │ │ │ │ ├── index.vue
│ │ │ │ │ ├── useContentContext.ts
│ │ │ │ │ └── useContentViewHeight.ts
│ │ │ │ ├── feature/
│ │ │ │ │ └── index.vue
│ │ │ │ ├── footer/
│ │ │ │ │ └── index.vue
│ │ │ │ ├── header/
│ │ │ │ │ ├── MultipleHeader.vue
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── Breadcrumb.vue
│ │ │ │ │ │ ├── ErrorAction.vue
│ │ │ │ │ │ ├── FullScreen.vue
│ │ │ │ │ │ ├── LockScreen.vue
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── lock/
│ │ │ │ │ │ │ └── LockModal.vue
│ │ │ │ │ │ ├── notify/
│ │ │ │ │ │ │ ├── ChangePasswordModal.vue
│ │ │ │ │ │ │ ├── NoticeList.vue
│ │ │ │ │ │ │ ├── data.ts
│ │ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ │ ├── index_old.vue
│ │ │ │ │ │ │ └── notify.api.ts
│ │ │ │ │ │ └── user-dropdown/
│ │ │ │ │ │ ├── DepartSelect.vue
│ │ │ │ │ │ ├── DropMenuItem.vue
│ │ │ │ │ │ ├── UpdatePassword.vue
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.less
│ │ │ │ │ └── index.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── menu/
│ │ │ │ │ ├── index.vue
│ │ │ │ │ └── useLayoutMenu.ts
│ │ │ │ ├── setting/
│ │ │ │ │ ├── SettingDrawer.tsx
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── InputNumberItem.vue
│ │ │ │ │ │ ├── SelectItem.vue
│ │ │ │ │ │ ├── SettingFooter.vue
│ │ │ │ │ │ ├── SwitchItem.vue
│ │ │ │ │ │ ├── ThemeColorPicker.vue
│ │ │ │ │ │ ├── TypePicker.vue
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── enum.ts
│ │ │ │ │ ├── handler.ts
│ │ │ │ │ └── index.vue
│ │ │ │ ├── sider/
│ │ │ │ │ ├── DragBar.vue
│ │ │ │ │ ├── LayoutSider.vue
│ │ │ │ │ ├── MixSider.vue
│ │ │ │ │ ├── index.vue
│ │ │ │ │ └── useLayoutSider.ts
│ │ │ │ ├── tabs/
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── FoldButton.vue
│ │ │ │ │ │ ├── TabContent.vue
│ │ │ │ │ │ └── TabRedo.vue
│ │ │ │ │ ├── index.less
│ │ │ │ │ ├── index.vue
│ │ │ │ │ ├── tabs.theme.card.less
│ │ │ │ │ ├── tabs.theme.smooth.less
│ │ │ │ │ ├── types.ts
│ │ │ │ │ ├── useHideHomeDesign.ts
│ │ │ │ │ ├── useMultipleTabs.ts
│ │ │ │ │ └── useTabDropdown.ts
│ │ │ │ └── trigger/
│ │ │ │ ├── HeaderTrigger.vue
│ │ │ │ ├── SiderTrigger.vue
│ │ │ │ └── index.vue
│ │ │ ├── iframe/
│ │ │ │ ├── index.vue
│ │ │ │ └── useFrameKeepAlive.ts
│ │ │ └── page/
│ │ │ ├── index.vue
│ │ │ ├── transition.ts
│ │ │ └── useEmpty.ts
│ │ ├── locales/
│ │ │ ├── helper.ts
│ │ │ ├── lang/
│ │ │ │ ├── en/
│ │ │ │ │ ├── common.ts
│ │ │ │ │ ├── component.ts
│ │ │ │ │ ├── layout.ts
│ │ │ │ │ ├── routes/
│ │ │ │ │ │ ├── basic.ts
│ │ │ │ │ │ ├── dashboard.ts
│ │ │ │ │ │ └── demo.ts
│ │ │ │ │ └── sys.ts
│ │ │ │ ├── en.ts
│ │ │ │ ├── zh-CN/
│ │ │ │ │ ├── common.ts
│ │ │ │ │ ├── component.ts
│ │ │ │ │ ├── layout.ts
│ │ │ │ │ ├── routes/
│ │ │ │ │ │ ├── basic.ts
│ │ │ │ │ │ ├── dashboard.ts
│ │ │ │ │ │ └── demo.ts
│ │ │ │ │ └── sys.ts
│ │ │ │ └── zh_CN.ts
│ │ │ ├── setupI18n.ts
│ │ │ └── useLocale.ts
│ │ ├── logics/
│ │ │ ├── error-handle/
│ │ │ │ └── index.ts
│ │ │ ├── initAppConfig.ts
│ │ │ ├── mitt/
│ │ │ │ └── routeChange.ts
│ │ │ └── theme/
│ │ │ ├── dark.ts
│ │ │ ├── index.ts
│ │ │ ├── updateBackground.ts
│ │ │ ├── updateColorWeak.ts
│ │ │ ├── updateGrayMode.ts
│ │ │ └── util.ts
│ │ ├── main.ts
│ │ ├── qiankun/
│ │ │ ├── apps.ts
│ │ │ ├── index.ts
│ │ │ ├── micro/
│ │ │ │ ├── index.ts
│ │ │ │ └── qiankunMicro.ts
│ │ │ └── state.ts
│ │ ├── router/
│ │ │ ├── constant.ts
│ │ │ ├── guard/
│ │ │ │ ├── index.ts
│ │ │ │ ├── paramMenuGuard.ts
│ │ │ │ ├── permissionGuard.ts
│ │ │ │ └── stateGuard.ts
│ │ │ ├── helper/
│ │ │ │ ├── menuHelper.ts
│ │ │ │ └── routeHelper.ts
│ │ │ ├── index.ts
│ │ │ ├── menus/
│ │ │ │ └── index.ts
│ │ │ ├── router.ts
│ │ │ ├── routes/
│ │ │ │ ├── basic.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── mainOut.ts
│ │ │ │ ├── modules/
│ │ │ │ │ ├── about.ts
│ │ │ │ │ ├── dashboard.ts
│ │ │ │ │ └── demo/
│ │ │ │ │ ├── charts.ts
│ │ │ │ │ ├── comp.ts
│ │ │ │ │ ├── feat.ts
│ │ │ │ │ ├── iframe.ts
│ │ │ │ │ ├── level.ts
│ │ │ │ │ ├── page.ts
│ │ │ │ │ ├── permission.ts
│ │ │ │ │ ├── setup.ts
│ │ │ │ │ └── system.ts
│ │ │ │ └── staticRouter.ts
│ │ │ └── types.ts
│ │ ├── settings/
│ │ │ ├── componentSetting.ts
│ │ │ ├── designSetting.ts
│ │ │ ├── encryptionSetting.ts
│ │ │ ├── localeSetting.ts
│ │ │ ├── projectSetting.ts
│ │ │ ├── registerThirdComp.ts
│ │ │ └── siteSetting.ts
│ │ ├── store/
│ │ │ ├── index.ts
│ │ │ └── modules/
│ │ │ ├── app.ts
│ │ │ ├── defIndex.ts
│ │ │ ├── errorLog.ts
│ │ │ ├── locale.ts
│ │ │ ├── lock.ts
│ │ │ ├── multipleTab.ts
│ │ │ ├── permission.ts
│ │ │ └── user.ts
│ │ ├── utils/
│ │ │ ├── areaData/
│ │ │ │ └── pcaUtils.ts
│ │ │ ├── auth/
│ │ │ │ └── index.ts
│ │ │ ├── bem.ts
│ │ │ ├── browser.js
│ │ │ ├── cache/
│ │ │ │ ├── index.ts
│ │ │ │ ├── memory.ts
│ │ │ │ ├── persistent.ts
│ │ │ │ └── storageCache.ts
│ │ │ ├── cipher.ts
│ │ │ ├── color.ts
│ │ │ ├── common/
│ │ │ │ ├── compUtils.ts
│ │ │ │ ├── renderUtils.ts
│ │ │ │ └── vxeUtils.ts
│ │ │ ├── dateUtil.ts
│ │ │ ├── desform/
│ │ │ │ └── customExpression.ts
│ │ │ ├── dict/
│ │ │ │ ├── DictColors.js
│ │ │ │ ├── JDictSelectUtil.js
│ │ │ │ └── index.ts
│ │ │ ├── domUtils.ts
│ │ │ ├── encryption/
│ │ │ │ └── signMd5Utils.js
│ │ │ ├── env.ts
│ │ │ ├── event/
│ │ │ │ └── index.ts
│ │ │ ├── factory/
│ │ │ │ └── createAsyncComponent.tsx
│ │ │ ├── file/
│ │ │ │ ├── base64Conver.ts
│ │ │ │ └── download.ts
│ │ │ ├── getConfigByMenuType.ts
│ │ │ ├── helper/
│ │ │ │ ├── treeHelper.ts
│ │ │ │ ├── tsxHelper.tsx
│ │ │ │ └── validator.ts
│ │ │ ├── http/
│ │ │ │ └── axios/
│ │ │ │ ├── Axios.ts
│ │ │ │ ├── axiosCancel.ts
│ │ │ │ ├── axiosTransform.ts
│ │ │ │ ├── checkStatus.ts
│ │ │ │ ├── helper.ts
│ │ │ │ └── index.ts
│ │ │ ├── index.ts
│ │ │ ├── is.ts
│ │ │ ├── lib/
│ │ │ │ └── echarts.ts
│ │ │ ├── log.ts
│ │ │ ├── mitt.ts
│ │ │ ├── monorepo/
│ │ │ │ ├── dynamicRouter.ts
│ │ │ │ └── registerPackages.ts
│ │ │ ├── propTypes.ts
│ │ │ ├── props.ts
│ │ │ ├── types.ts
│ │ │ └── uuid.ts
│ │ └── views/
│ │ ├── dashboard/
│ │ │ ├── Analysis/
│ │ │ │ ├── api.ts
│ │ │ │ ├── components/
│ │ │ │ │ ├── BdcTabCard.vue
│ │ │ │ │ ├── ChartGroupCard.vue
│ │ │ │ │ ├── GrowCard.vue
│ │ │ │ │ ├── QuickNav.vue
│ │ │ │ │ ├── SaleTabCard.vue
│ │ │ │ │ ├── SalesProductPie.vue
│ │ │ │ │ ├── SiteAnalysis.vue
│ │ │ │ │ ├── VisitAnalysis.vue
│ │ │ │ │ ├── VisitAnalysisBar.vue
│ │ │ │ │ ├── VisitRadar.vue
│ │ │ │ │ ├── VisitSource.vue
│ │ │ │ │ └── props.ts
│ │ │ │ ├── data.ts
│ │ │ │ ├── homePage/
│ │ │ │ │ ├── IndexBdc.vue
│ │ │ │ │ ├── IndexChart.vue
│ │ │ │ │ ├── IndexDef.vue
│ │ │ │ │ └── IndexTask.vue
│ │ │ │ └── index.vue
│ │ │ ├── ai/
│ │ │ │ ├── components/
│ │ │ │ │ └── aide/
│ │ │ │ │ └── index.vue
│ │ │ │ └── index.vue
│ │ │ └── workbench/
│ │ │ ├── components/
│ │ │ │ ├── DynamicInfo.vue
│ │ │ │ ├── ProjectCard.vue
│ │ │ │ ├── QuickNav.vue
│ │ │ │ ├── SaleRadar.vue
│ │ │ │ ├── WorkbenchHeader.vue
│ │ │ │ └── data.ts
│ │ │ └── index.vue
│ │ ├── demo/
│ │ │ ├── charts/
│ │ │ │ ├── Line.vue
│ │ │ │ ├── Map.vue
│ │ │ │ ├── Pie.vue
│ │ │ │ ├── SaleRadar.vue
│ │ │ │ ├── china.json
│ │ │ │ ├── data.ts
│ │ │ │ └── map/
│ │ │ │ ├── Baidu.vue
│ │ │ │ ├── Gaode.vue
│ │ │ │ └── Google.vue
│ │ │ ├── codemirror/
│ │ │ │ └── index.vue
│ │ │ ├── comp/
│ │ │ │ ├── button/
│ │ │ │ │ └── index.vue
│ │ │ │ ├── card-list/
│ │ │ │ │ └── index.vue
│ │ │ │ ├── count-to/
│ │ │ │ │ └── index.vue
│ │ │ │ ├── cropper/
│ │ │ │ │ └── index.vue
│ │ │ │ ├── desc/
│ │ │ │ │ └── index.vue
│ │ │ │ ├── drawer/
│ │ │ │ │ ├── Drawer1.vue
│ │ │ │ │ ├── Drawer2.vue
│ │ │ │ │ ├── Drawer3.vue
│ │ │ │ │ ├── Drawer4.vue
│ │ │ │ │ ├── Drawer5.vue
│ │ │ │ │ └── index.vue
│ │ │ │ ├── lazy/
│ │ │ │ │ ├── TargetContent.vue
│ │ │ │ │ ├── Transition.vue
│ │ │ │ │ └── index.vue
│ │ │ │
Showing preview only (923K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (10173 symbols across 1362 files)
FILE: check_jeecgenv.py
function run_command (line 7) | def run_command(cmd: str) -> Tuple[int, str]:
function check_java (line 17) | def check_java() -> bool:
function check_maven (line 39) | def check_maven() -> bool:
function check_node (line 50) | def check_node() -> bool:
function check_pnpm (line 72) | def check_pnpm() -> bool:
function check_redis_connection (line 95) | def check_redis_connection() -> bool:
function check_mysql_connection (line 103) | def check_mysql_connection() -> bool:
function print_mysql_config (line 111) | def print_mysql_config():
function check_ai_vector_db (line 123) | def check_ai_vector_db() -> bool:
function check_ai_config (line 142) | def check_ai_config() -> bool:
function print_redis_config (line 162) | def print_redis_config():
function main (line 173) | def main():
FILE: jeecg-boot/db/jeecgboot-mysql-5.7.sql
type `aigc_word_template` (line 27) | CREATE TABLE `aigc_word_template` (
type `airag_app` (line 56) | CREATE TABLE `airag_app` (
type `airag_ext_data` (line 111) | CREATE TABLE `airag_ext_data` (
type `airag_flow` (line 140) | CREATE TABLE `airag_flow` (
FILE: jeecg-boot/db/tables_nacos.sql
type `config_info` (line 27) | CREATE TABLE `config_info` (
type `config_info_aggr` (line 80) | CREATE TABLE `config_info_aggr` (
type `config_info_beta` (line 101) | CREATE TABLE `config_info_beta` (
type `config_info_tag` (line 127) | CREATE TABLE `config_info_tag` (
type `config_tags_relation` (line 153) | CREATE TABLE `config_tags_relation` (
type `group_capacity` (line 174) | CREATE TABLE `group_capacity` (
type `his_config_info` (line 197) | CREATE TABLE `his_config_info` (
type `permissions` (line 269) | CREATE TABLE `permissions` (
type `roles` (line 284) | CREATE TABLE `roles` (
type `tenant_capacity` (line 299) | CREATE TABLE `tenant_capacity` (
type `tenant_info` (line 322) | CREATE TABLE `tenant_info` (
type `users` (line 345) | CREATE TABLE `users` (
FILE: jeecg-boot/db/tables_xxl_job.sql
type `xxl_job_group` (line 31) | CREATE TABLE `xxl_job_group` (
type `xxl_job_info` (line 52) | CREATE TABLE `xxl_job_info` (
type `xxl_job_lock` (line 90) | CREATE TABLE `xxl_job_lock` (
type `xxl_job_log` (line 104) | CREATE TABLE `xxl_job_log` (
type `xxl_job_log_report` (line 276) | CREATE TABLE `xxl_job_log_report` (
type `xxl_job_logglue` (line 307) | CREATE TABLE `xxl_job_logglue` (
type `xxl_job_registry` (line 326) | CREATE TABLE `xxl_job_registry` (
type `xxl_job_user` (line 344) | CREATE TABLE `xxl_job_user` (
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/CommonAPI.java
type CommonAPI (line 14) | public interface CommonAPI {
method queryUserRoles (line 21) | Set<String> queryUserRoles(String username);
method queryUserRolesById (line 28) | Set<String> queryUserRolesById(String userId);
method queryUserAuths (line 36) | Set<String> queryUserAuths(String userId);
method getDynamicDbSourceById (line 44) | DynamicDataSourceModel getDynamicDbSourceById(String dbSourceId);
method getDynamicDbSourceByCode (line 52) | DynamicDataSourceModel getDynamicDbSourceByCode(String dbSourceCode);
method getUserByName (line 59) | public LoginUser getUserByName(String username);
method getUserIdByName (line 66) | public String getUserIdByName(String username);
method translateDictFromTable (line 77) | String translateDictFromTable(String table, String text, String code, ...
method translateDict (line 85) | String translateDict(String code, String key);
method queryPermissionDataRule (line 94) | List<SysPermissionDataRuleModel> queryPermissionDataRule(String compon...
method getCacheUser (line 102) | SysUserCacheInfo getCacheUser(String username);
method queryDictItemsByCode (line 109) | public List<DictModel> queryDictItemsByCode(String code);
method queryEnableDictItemsByCode (line 116) | public List<DictModel> queryEnableDictItemsByCode(String code);
method queryTableDictItemsByCode (line 125) | List<DictModel> queryTableDictItemsByCode(String tableFilterSql, Strin...
method translateManyDict (line 133) | Map<String, List<DictModel>> translateManyDict(String dictCodes, Strin...
method translateDictFromTableByKeys (line 144) | List<DictModel> translateDictFromTableByKeys(String table, String text...
method runAiragFlow (line 155) | Object runAiragFlow(AiragFlowDTO airagFlowDTO);
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/AiragFlowDTO.java
class AiragFlowDTO (line 17) | @Builder
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/ApprovalCommentDTO.java
class ApprovalCommentDTO (line 13) | @Data
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/DataLogDTO.java
class DataLogDTO (line 9) | @Data
method DataLogDTO (line 22) | public DataLogDTO(){
method DataLogDTO (line 26) | public DataLogDTO(String tableName, String dataId, String content, Str...
method DataLogDTO (line 33) | public DataLogDTO(String tableName, String dataId, String type) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/FileDownDTO.java
class FileDownDTO (line 13) | @Data
method FileDownDTO (line 23) | public FileDownDTO(){}
method FileDownDTO (line 25) | public FileDownDTO(String filePath, String uploadpath, String uploadTy...
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/FileUploadDTO.java
class FileUploadDTO (line 13) | @Data
method FileUploadDTO (line 26) | public FileUploadDTO(){
method FileUploadDTO (line 36) | public FileUploadDTO(MultipartFile file,String bizPath,String uploadTy...
method FileUploadDTO (line 49) | public FileUploadDTO(MultipartFile file,String bizPath,String uploadTy...
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/LogDTO.java
class LogDTO (line 13) | @Data
method LogDTO (line 64) | public LogDTO(){
method LogDTO (line 68) | public LogDTO(String logContent, Integer logType, Integer operatetype){
method LogDTO (line 74) | public LogDTO(String logContent, Integer logType, Integer operatetype,...
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/OnlineAuthDTO.java
class OnlineAuthDTO (line 13) | @Data
method OnlineAuthDTO (line 38) | public OnlineAuthDTO(){
method OnlineAuthDTO (line 42) | public OnlineAuthDTO(String username, List<String> possibleUrl, String...
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/PushMessageDTO.java
class PushMessageDTO (line 17) | @Builder
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/BusMessageDTO.java
class BusMessageDTO (line 13) | @Data
method BusMessageDTO (line 27) | public BusMessageDTO(){
method BusMessageDTO (line 41) | public BusMessageDTO(String fromUser, String toUser, String title, Str...
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/BusTemplateMessageDTO.java
class BusTemplateMessageDTO (line 12) | @Data
method BusTemplateMessageDTO (line 27) | public BusTemplateMessageDTO(){
method BusTemplateMessageDTO (line 41) | public BusTemplateMessageDTO(String fromUser, String toUser, String ti...
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/MessageDTO.java
class MessageDTO (line 13) | @Data
method MessageDTO (line 101) | public MessageDTO(){
method MessageDTO (line 107) | public MessageDTO(String fromUser,String toUser,String title, String c...
method MessageDTO (line 119) | public MessageDTO(String fromUser,String toUser,String title, String c...
method isMarkdown (line 127) | public boolean isMarkdown() {
method setIsMarkdown (line 131) | public void setIsMarkdown(boolean isMarkdown) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/TemplateDTO.java
class TemplateDTO (line 12) | @Data
method TemplateDTO (line 30) | public TemplateDTO(String templateCode, Map<String, String> templatePa...
method TemplateDTO (line 35) | public TemplateDTO(){
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/TemplateMessageDTO.java
class TemplateMessageDTO (line 11) | @Data
method TemplateMessageDTO (line 33) | public TemplateMessageDTO(){
method TemplateMessageDTO (line 40) | public TemplateMessageDTO(String fromUser, String toUser,String title,...
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/vo/Result.java
class Result (line 17) | @Data
method Result (line 53) | public Result() {
method Result (line 61) | public Result(Integer code, String message) {
method success (line 66) | public Result<T> success(String message) {
method ok (line 73) | public static<T> Result<T> ok() {
method ok (line 80) | public static<T> Result<T> ok(String msg) {
method ok (line 90) | public static<T> Result<T> ok(T data) {
method OK (line 98) | public static<T> Result<T> OK() {
method OK (line 112) | public static<T> Result<T> OK(String msg) {
method OK (line 122) | public static<T> Result<T> OK(T data) {
method OK (line 130) | public static<T> Result<T> OK(String msg, T data) {
method error (line 139) | public static<T> Result<T> error(String msg, T data) {
method error (line 148) | public static<T> Result<T> error(String msg) {
method error (line 152) | public static<T> Result<T> error(int code, String msg) {
method error500 (line 160) | public Result<T> error500(String message) {
method noauth (line 170) | public static<T> Result<T> noauth(String msg) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/AutoLogAspect.java
class AutoLogAspect (line 42) | @Aspect
method logPointCut (line 49) | @Pointcut("@annotation(org.jeecg.common.aspect.annotation.AutoLog)")
method around (line 54) | @Around("logPointCut()")
method saveSysLog (line 68) | private void saveSysLog(ProceedingJoinPoint joinPoint, long time, Obje...
method getOperateType (line 120) | private int getOperateType(String methodName,int operateType) {
method getReqestParams (line 136) | private String getReqestParams(HttpServletRequest request, JoinPoint j...
method getOnlineLogContent (line 191) | private String getOnlineLogContent(Object obj, String content){
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/DictAspect.java
class DictAspect (line 37) | @Aspect
method excudeService (line 55) | @Pointcut("(@within(org.springframework.web.bind.annotation.RestContro...
method doAround (line 61) | @Around("excudeService()")
method parseDictText (line 96) | private Object parseDictText(Object result) {
method listAddAllDeduplicate (line 209) | private void listAddAllDeduplicate(List<String> dataList, List<String>...
method translateAllDict (line 222) | private Map<String, List<DictModel>> translateAllDict(Map<String, List...
method translDictText (line 344) | private String translDictText(List<DictModel> dictModels, String value...
method translateDictValue (line 370) | @Deprecated
method checkHasDict (line 425) | private Boolean checkHasDict(List<Object> records){
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/PermissionDataAspect.java
class PermissionDataAspect (line 35) | @Aspect
method pointCut (line 45) | @Pointcut("@annotation(org.jeecg.common.aspect.annotation.PermissionDa...
method arround (line 50) | @Around("pointCut()")
method filterUrl (line 83) | private String filterUrl(String requestPath){
method getJgAuthRequsetPath (line 103) | @Deprecated
method moHuContain (line 126) | @Deprecated
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/UrlMatchEnum.java
type UrlMatchEnum (line 8) | public enum UrlMatchEnum {
method UrlMatchEnum (line 24) | UrlMatchEnum(String url, String matchUrl) {
method getMatchResultByUrl (line 44) | public static String getMatchResultByUrl(String url) {
method getMatchUrl (line 58) | public String getMatchUrl() {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java
type CommonConstant (line 7) | public interface CommonConstant {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonSendStatus.java
type CommonSendStatus (line 8) | public interface CommonSendStatus {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/DataBaseConstant.java
type DataBaseConstant (line 6) | public interface DataBaseConstant {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/DynamicTableConstant.java
class DynamicTableConstant (line 9) | public class DynamicTableConstant {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/FillRuleConstant.java
class FillRuleConstant (line 8) | public class FillRuleConstant {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/PasswordConstant.java
type PasswordConstant (line 9) | public interface PasswordConstant {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/ProvinceCityArea.java
class ProvinceCityArea (line 21) | @Component("pca")
method getText (line 25) | public String getText(String code){
method getCode (line 37) | public String getCode(String text){
method getCode (line 59) | public String[] getCode(String[] texts) {
method getAreaByText (line 92) | public Area getAreaByText(String text) {
method getAreaByPidAndText (line 107) | public Area getAreaByPidAndText(String pCode, String text) {
method getAreaByCode (line 119) | public void getAreaByCode(String code,List<String> ls){
method initAreaList (line 129) | private void initAreaList(){
method jsonRead (line 169) | private String jsonRead(File file){
class Area (line 187) | class Area{
method Area (line 194) | public Area(String id,String text,String pid){
method getId (line 200) | public String getId() {
method getText (line 204) | public String getText() {
method getPid (line 208) | public String getPid() {
method getAheadText (line 212) | public String getAheadText() {
method setAheadText (line 215) | public void setAheadText(String aheadText) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/ServiceNameConstants.java
type ServiceNameConstants (line 26) | public interface ServiceNameConstants {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/SymbolConstant.java
class SymbolConstant (line 8) | public class SymbolConstant {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/TenantConstant.java
type TenantConstant (line 8) | public interface TenantConstant {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/VxeSocketConst.java
class VxeSocketConst (line 7) | public class VxeSocketConst {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/WebsocketConst.java
class WebsocketConst (line 8) | public class WebsocketConst {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/CgformEnum.java
type CgformEnum (line 12) | public enum CgformEnum {
method CgformEnum (line 80) | CgformEnum(int type, String code, String templatePath, String stylePat...
method getTemplatePathByConfig (line 95) | public static String getTemplatePathByConfig(String code) {
method getType (line 100) | public int getType() {
method setType (line 104) | public void setType(int type) {
method getTemplatePath (line 108) | public String getTemplatePath() {
method setTemplatePath (line 112) | public void setTemplatePath(String templatePath) {
method getStylePath (line 116) | public String getStylePath() {
method setStylePath (line 120) | public void setStylePath(String stylePath) {
method getVueStyle (line 124) | public String[] getVueStyle() {
method setVueStyle (line 128) | public void setVueStyle(String[] vueStyle) {
method getCgformEnumByConfig (line 138) | public static CgformEnum getCgformEnumByConfig(String code) {
method getJspModelList (line 153) | public static List<Map<String, Object>> getJspModelList(int type) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/ClientTerminalTypeEnum.java
type ClientTerminalTypeEnum (line 6) | public enum ClientTerminalTypeEnum {
method ClientTerminalTypeEnum (line 15) | ClientTerminalTypeEnum(String value, String text) {
method getKey (line 20) | public String getKey() {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/DateRangeEnum.java
type DateRangeEnum (line 6) | public enum DateRangeEnum {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/DepartCategoryEnum.java
type DepartCategoryEnum (line 11) | public enum DepartCategoryEnum {
method DepartCategoryEnum (line 18) | DepartCategoryEnum(String described, String name, String value) {
method getDescribed (line 38) | public String getDescribed() {
method setDescribed (line 42) | public void setDescribed(String described) {
method getValue (line 46) | public String getValue() {
method setValue (line 50) | public void setValue(String value) {
method getName (line 54) | public String getName() {
method setName (line 58) | public void setName(String name) {
method getNameByValue (line 68) | public static String getNameByValue(String value){
method getValueByName (line 86) | public static String getValueByName(String name){
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/DySmsEnum.java
type DySmsEnum (line 9) | public enum DySmsEnum {
method DySmsEnum (line 33) | private DySmsEnum(String templateCode,String signName,String keys) {
method getTemplateCode (line 39) | public String getTemplateCode() {
method setTemplateCode (line 43) | public void setTemplateCode(String templateCode) {
method getSignName (line 47) | public String getSignName() {
method setSignName (line 51) | public void setSignName(String signName) {
method getKeys (line 55) | public String getKeys() {
method setKeys (line 59) | public void setKeys(String keys) {
method toEnum (line 63) | public static DySmsEnum toEnum(String templateCode) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/EmailTemplateEnum.java
type EmailTemplateEnum (line 11) | public enum EmailTemplateEnum {
method EmailTemplateEnum (line 38) | EmailTemplateEnum(String name, String url) {
method getName (line 43) | public String getName() {
method setName (line 47) | public void setName(String name) {
method getUrl (line 51) | public String getUrl() {
method setUrl (line 55) | public void setUrl(String url) {
method getByName (line 59) | public static EmailTemplateEnum getByName(String name) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/FileTypeEnum.java
type FileTypeEnum (line 8) | public enum FileTypeEnum {
method FileTypeEnum (line 35) | private FileTypeEnum(String type,String value,String text){
method getType (line 40) | public String getType() {
method setType (line 44) | public void setType(String type) {
method getValue (line 48) | public String getValue() {
method setValue (line 52) | public void setValue(String value) {
method getText (line 56) | public String getText() {
method setText (line 60) | public void setText(String text) {
method getByType (line 64) | public static FileTypeEnum getByType(String type){
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/MessageTypeEnum.java
type MessageTypeEnum (line 14) | @EnumDict("messageType")
method MessageTypeEnum (line 34) | MessageTypeEnum(String type, String note) {
method getNote (line 49) | public String getNote() {
method setNote (line 53) | public void setNote(String note) {
method getType (line 57) | public String getType() {
method setType (line 61) | public void setType(String type) {
method getDictList (line 71) | public static List<DictModel> getDictList() {
method valueOfType (line 89) | public static MessageTypeEnum valueOfType(String type) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/ModuleType.java
type ModuleType (line 7) | public enum ModuleType {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/NoticeTypeEnum.java
type NoticeTypeEnum (line 9) | public enum NoticeTypeEnum {
method getName (line 42) | public String getName() {
method setName (line 46) | public void setName(String name) {
method getValue (line 50) | public String getValue() {
method setValue (line 54) | public void setValue(String value) {
method NoticeTypeEnum (line 58) | NoticeTypeEnum(String name, String value) {
method getChatNoticeType (line 69) | public static String getChatNoticeType(String value){
method getNoticeNameByValue (line 79) | public static String getNoticeNameByValue(String value){
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/OperateTypeEnum.java
type OperateTypeEnum (line 10) | public enum OperateTypeEnum {
method getType (line 53) | public int getType() {
method setType (line 57) | public void setType(int type) {
method getCode (line 61) | public String getCode() {
method setCode (line 65) | public void setCode(String code) {
method OperateTypeEnum (line 75) | OperateTypeEnum(int type, String code) {
method getTypeByMethodName (line 87) | public static Integer getTypeByMethodName(String methodName) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/PositionLevelEnum.java
type PositionLevelEnum (line 13) | public enum PositionLevelEnum {
method PositionLevelEnum (line 29) | PositionLevelEnum(String name, int level, PositionType type) {
method getName (line 35) | public String getName() {
method getLevel (line 39) | public int getLevel() {
method getType (line 43) | public PositionType getType() {
type PositionType (line 50) | public enum PositionType {
method PositionType (line 56) | PositionType(String desc) {
method getDesc (line 60) | public String getDesc() {
method getByName (line 70) | public static PositionLevelEnum getByName(String name) {
method getByLevel (line 84) | public static PositionLevelEnum getByLevel(int level) {
method isStaffLevel (line 98) | public static boolean isStaffLevel(String name) {
method isLeaderLevel (line 108) | public static boolean isLeaderLevel(String name) {
method compareLevel (line 119) | public static int compareLevel(String name1, String name2) {
method isHigherLevel (line 137) | public static boolean isHigherLevel(String currentName, String targetN...
method getStaffLevelNames (line 145) | public static List<String> getStaffLevelNames() {
method getLeaderLevelNames (line 153) | public static List<String> getLeaderLevelNames() {
method getAllPositionNames (line 161) | public static List<String> getAllPositionNames() {
method getPositionsByLevelRange (line 174) | public static List<String> getPositionsByLevelRange(int minLevel, int ...
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/RoleIndexConfigEnum.java
type RoleIndexConfigEnum (line 13) | public enum RoleIndexConfigEnum {
method RoleIndexConfigEnum (line 41) | RoleIndexConfigEnum(String roleCode, String componentUrl) {
method getEnumByCode (line 50) | private static RoleIndexConfigEnum getEnumByCode(String roleCode) {
method getIndexByCode (line 63) | private static String getIndexByCode(String roleCode) {
method getIndexByRoles (line 72) | public static String getIndexByRoles(List<String> roles) {
method getRoleCode (line 82) | public String getRoleCode() {
method setRoleCode (line 86) | public void setRoleCode(String roleCode) {
method getComponentUrl (line 90) | public String getComponentUrl() {
method setComponentUrl (line 94) | public void setComponentUrl(String componentUrl) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/SysAnnmentTypeEnum.java
type SysAnnmentTypeEnum (line 9) | public enum SysAnnmentTypeEnum {
method SysAnnmentTypeEnum (line 59) | SysAnnmentTypeEnum(String type, String openType, String openPage) {
method getType (line 65) | public String getType() {
method setType (line 69) | public void setType(String type) {
method getOpenType (line 73) | public String getOpenType() {
method setOpenType (line 77) | public void setOpenType(String openType) {
method getOpenPage (line 81) | public String getOpenPage() {
method setOpenPage (line 85) | public void setOpenPage(String openPage) {
method getByType (line 89) | public static SysAnnmentTypeEnum getByType(String type) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/UniPushTypeEnum.java
type UniPushTypeEnum (line 9) | public enum UniPushTypeEnum {
method UniPushTypeEnum (line 41) | UniPushTypeEnum(String type, String title, String content) {
method getType (line 47) | public String getType() {
method setType (line 51) | public void setType(String type) {
method getTitle (line 55) | public String getTitle() {
method setTitle (line 59) | public void setTitle(String openType) {
method getContent (line 63) | public String getContent() {
method setContent (line 67) | public void setContent(String content) {
method getByType (line 71) | public static UniPushTypeEnum getByType(String type) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/Vue3MessageHrefEnum.java
type Vue3MessageHrefEnum (line 14) | @EnumDict("messageHref")
method Vue3MessageHrefEnum (line 46) | Vue3MessageHrefEnum(String busType, String path) {
method getBusType (line 51) | public String getBusType() {
method getPath (line 55) | public String getPath() {
method getDictList (line 63) | public static List<DictModel> getDictList(){
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/desensitization/SensitiveSerialize.java
class SensitiveSerialize (line 24) | @NoArgsConstructor
method serialize (line 31) | @Override
method createContextual (line 71) | @Override
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/desensitization/aspect/SensitiveDataAspect.java
class SensitiveDataAspect (line 22) | @Slf4j
method sensitivePointCut (line 30) | @Pointcut("@annotation(org.jeecg.common.desensitization.annotation.Sen...
method around (line 34) | @Around("sensitivePointCut()")
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/desensitization/enums/SensitiveEnum.java
type SensitiveEnum (line 6) | public enum SensitiveEnum {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/desensitization/util/SensitiveInfoUtil.java
class SensitiveInfoUtil (line 19) | @Slf4j
method handleNestedObject (line 29) | public static void handleNestedObject(Object obj, Class entity, boolea...
method handlerObject (line 65) | public static Object handlerObject(Object obj, boolean isEncode) throw...
method handleList (line 111) | public static void handleList(Object obj, Class entity, boolean isEnco...
method getDecodeData (line 134) | public static String getDecodeData(String data){
method getEncodeData (line 154) | public static String getEncodeData(String data, SensitiveEnum sensitiv...
method chineseName (line 201) | public static String chineseName(String fullName) {
method chineseName (line 214) | public static String chineseName(String familyName, String firstName) {
method idCardNum (line 226) | public static String idCardNum(String id) {
method fixedPhone (line 239) | public static String fixedPhone(String num) {
method mobilePhone (line 251) | public static String mobilePhone(String num) {
method address (line 268) | public static String address(String address, int sensitiveSize) {
method email (line 284) | public static String email(String email) {
method bankCard (line 303) | public static String bankCard(String cardNum) {
method cnapsCode (line 315) | public static String cnapsCode(String code) {
method formatRight (line 329) | public static String formatRight(String str, int reservedLength){
method formatLeft (line 341) | public static String formatLeft(String str, int reservedLength){
method formatBetween (line 355) | public static String formatBetween(String str, int beginLen, int endLen){
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/es/JeecgElasticsearchTemplate.java
class JeecgElasticsearchTemplate (line 24) | @Slf4j
method JeecgElasticsearchTemplate (line 43) | public JeecgElasticsearchTemplate(@Value("${jeecg.elasticsearch.cluste...
method getElasticsearchVersion (line 64) | private void getElasticsearchVersion() {
method getBaseUrl (line 75) | public StringBuilder getBaseUrl(String indexName, String typeName) {
method getBaseUrl (line 80) | public StringBuilder getBaseUrl(String indexName) {
method getBaseUrl (line 85) | public StringBuilder getBaseUrl() {
method cat (line 92) | private <T> ResponseEntity<T> cat(String urlAfter, Class<T> responseTy...
method getIndices (line 102) | public JSONArray getIndices() {
method getIndices (line 112) | public JSONArray getIndices(String indexName) {
method indexExists (line 123) | public boolean indexExists(String indexName) {
method getDataById (line 146) | public JSONObject getDataById(String indexName, String typeName, Strin...
method createIndex (line 163) | public boolean createIndex(String indexName) {
method removeIndex (line 190) | public boolean removeIndex(String indexName) {
method getIndexMapping (line 212) | public JSONObject getIndexMapping(String indexName, String typeName) {
method getIndexMappingFormat (line 268) | public <T> Map<String, T> getIndexMappingFormat(String indexName, Stri...
method save (line 290) | public boolean save(String indexName, String typeName, String dataId, ...
method update (line 297) | public boolean update(String indexName, String typeName, String dataId...
method saveOrUpdate (line 312) | public boolean saveOrUpdate(String indexName, String typeName, String ...
method saveBatch (line 371) | public boolean saveBatch(String indexName, String typeName, JSONArray ...
method delete (line 401) | public boolean delete(String indexName, String typeName, String dataId) {
method search (line 438) | public JSONObject search(String indexName, String typeName, JSONObject...
method buildQuery (line 454) | public JSONObject buildQuery(List<String> source, JSONObject query, in...
method buildBoolQuery (line 468) | public JSONObject buildBoolQuery(JSONArray must, JSONArray mustNot, JS...
method buildQueryString (line 489) | public JSONObject buildQueryString(String field, String... args) {
method buildQueryString (line 506) | public JSONObject buildQueryString(String query) {
method buildRangeQuery (line 522) | public JSONObject buildRangeQuery(String field, Object min, Object max...
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/es/QueryStringBuilder.java
class QueryStringBuilder (line 8) | public class QueryStringBuilder {
method QueryStringBuilder (line 12) | public QueryStringBuilder(String field, String str, boolean not, boole...
method QueryStringBuilder (line 16) | public QueryStringBuilder(String field, String str, boolean not) {
method createBuilder (line 29) | public StringBuilder createBuilder(String field, String str, boolean n...
method and (line 38) | public QueryStringBuilder and(String str) {
method and (line 42) | public QueryStringBuilder and(String str, boolean addQuot) {
method or (line 48) | public QueryStringBuilder or(String str) {
method or (line 52) | public QueryStringBuilder or(String str, boolean addQuot) {
method not (line 58) | public QueryStringBuilder not(String str) {
method not (line 62) | public QueryStringBuilder not(String str, boolean addQuot) {
method addQuot (line 71) | private QueryStringBuilder addQuot(String str, boolean addQuot) {
method addQuotEffect (line 82) | private QueryStringBuilder addQuotEffect(StringBuilder builder, String...
method toString (line 93) | @Override
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgBoot401Exception.java
class JeecgBoot401Exception (line 7) | public class JeecgBoot401Exception extends RuntimeException {
method JeecgBoot401Exception (line 10) | public JeecgBoot401Exception(String message){
method JeecgBoot401Exception (line 14) | public JeecgBoot401Exception(Throwable cause)
method JeecgBoot401Exception (line 19) | public JeecgBoot401Exception(String message, Throwable cause)
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgBootAssertException.java
class JeecgBootAssertException (line 9) | public class JeecgBootAssertException extends JeecgBootException {
method JeecgBootAssertException (line 13) | public JeecgBootAssertException(String message) {
method JeecgBootAssertException (line 17) | public JeecgBootAssertException(String message, int errCode) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgBootBizTipException.java
class JeecgBootBizTipException (line 10) | public class JeecgBootBizTipException extends RuntimeException {
method JeecgBootBizTipException (line 18) | public JeecgBootBizTipException(String message){
method JeecgBootBizTipException (line 22) | public JeecgBootBizTipException(String message, int errCode){
method getErrCode (line 27) | public int getErrCode() {
method JeecgBootBizTipException (line 31) | public JeecgBootBizTipException(Throwable cause)
method JeecgBootBizTipException (line 36) | public JeecgBootBizTipException(String message, Throwable cause)
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgBootException.java
class JeecgBootException (line 9) | public class JeecgBootException extends RuntimeException {
method JeecgBootException (line 17) | public JeecgBootException(String message){
method JeecgBootException (line 21) | public JeecgBootException(String message, int errCode){
method getErrCode (line 26) | public int getErrCode() {
method JeecgBootException (line 30) | public JeecgBootException(Throwable cause)
method JeecgBootException (line 35) | public JeecgBootException(String message,Throwable cause)
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgBootExceptionHandler.java
class JeecgBootExceptionHandler (line 47) | @RestControllerAdvice
method handleValidationExceptions (line 54) | @ExceptionHandler(MethodArgumentNotValidException.class)
method handleJeecgBootException (line 64) | @ExceptionHandler(JeecgBootException.class)
method handleJeecgBootBizTipException (line 74) | @ExceptionHandler(JeecgBootBizTipException.class)
method handleJeecgCloudException (line 83) | @ExceptionHandler(JeecgCloudException.class)
method handleJeecgBoot401Exception (line 93) | @ExceptionHandler(JeecgBoot401Exception.class)
method handlerNoFoundException (line 101) | @ExceptionHandler(NoHandlerFoundException.class)
method handleDuplicateKeyException (line 108) | @ExceptionHandler(DuplicateKeyException.class)
method handleAuthorizationException (line 115) | @ExceptionHandler({UnauthorizedException.class, AuthorizationException...
method handleException (line 121) | @ExceptionHandler(Exception.class)
method httpRequestMethodNotSupportedException (line 139) | @ExceptionHandler(HttpRequestMethodNotSupportedException.class)
method handleMaxUploadSizeExceededException (line 162) | @ExceptionHandler(MaxUploadSizeExceededException.class)
method handleMaxUploadSizeExceededException (line 178) | @ExceptionHandler(MultipartException.class)
method handleDataIntegrityViolationException (line 190) | @ExceptionHandler(DataIntegrityViolationException.class)
method handlePoolException (line 198) | @ExceptionHandler(PoolException.class)
method handleSQLException (line 212) | @ExceptionHandler(JeecgSqlInjectionException.class)
method addSysLog (line 232) | private void addSysLog(Throwable e) {
method isTooBigException (line 284) | private static boolean isTooBigException(Throwable e) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgSqlInjectionException.java
class JeecgSqlInjectionException (line 7) | public class JeecgSqlInjectionException extends RuntimeException {
method JeecgSqlInjectionException (line 10) | public JeecgSqlInjectionException(String message){
method JeecgSqlInjectionException (line 14) | public JeecgSqlInjectionException(Throwable cause)
method JeecgSqlInjectionException (line 19) | public JeecgSqlInjectionException(String message, Throwable cause)
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/handler/IFillRuleHandler.java
type IFillRuleHandler (line 11) | public interface IFillRuleHandler {
method execute (line 19) | public Object execute(JSONObject params, JSONObject formData);
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/controller/JeecgController.java
class JeecgController (line 39) | @Slf4j
method exportXls (line 52) | protected ModelAndView exportXls(HttpServletRequest request, T object,...
method exportXlsSheet (line 94) | protected ModelAndView exportXlsSheet(HttpServletRequest request, T ob...
method exportXlsForBigData (line 144) | protected ModelAndView exportXlsForBigData(HttpServletRequest request,...
method exportXls (line 186) | protected ModelAndView exportXls(HttpServletRequest request, T object,...
method getId (line 197) | private String getId(T item) {
method importExcel (line 213) | protected Result<?> importExcel(HttpServletRequest request, HttpServle...
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/entity/JeecgEntity.java
class JeecgEntity (line 23) | @Data
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/service/JeecgService.java
type JeecgService (line 11) | public interface JeecgService<T> extends IService<T> {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/service/impl/JeecgServiceImpl.java
class JeecgServiceImpl (line 16) | @Slf4j
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/enhance/UserFilterEnhance.java
type UserFilterEnhance (line 8) | public interface UserFilterEnhance {
method getUserIds (line 16) | default List<String> getUserIds(String loginUserId) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/MatchTypeEnum.java
type MatchTypeEnum (line 10) | public enum MatchTypeEnum {
method MatchTypeEnum (line 19) | MatchTypeEnum(String value) {
method getValue (line 23) | public String getValue() {
method getByValue (line 27) | public static MatchTypeEnum getByValue(Object value) {
method getByValue (line 34) | public static MatchTypeEnum getByValue(String value) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryCondition.java
class QueryCondition (line 9) | public class QueryCondition implements Serializable {
method QueryCondition (line 24) | public QueryCondition(String field, String type, String dbType, String...
method getField (line 32) | public String getField() {
method setField (line 36) | public void setField(String field) {
method getType (line 40) | public String getType() {
method setType (line 44) | public void setType(String type) {
method getDbType (line 48) | public String getDbType() {
method setDbType (line 52) | public void setDbType(String dbType) {
method getRule (line 56) | public String getRule() {
method setRule (line 60) | public void setRule(String rule) {
method getVal (line 64) | public String getVal() {
method setVal (line 68) | public void setVal(String val) {
method toString (line 72) | @Override
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryGenerator.java
class QueryGenerator (line 35) | @Slf4j
method getTime (line 77) | private static SimpleDateFormat getTime(){
method initQueryWrapper (line 92) | public static <T> QueryWrapper<T> initQueryWrapper(T searchObj,Map<Str...
method initQueryWrapper (line 107) | public static <T> QueryWrapper<T> initQueryWrapper(T searchObj,Map<Str...
method installMplus (line 124) | private static void installMplus(QueryWrapper<?> queryWrapper, Object ...
method doIntervalQuery (line 228) | private static void doIntervalQuery(QueryWrapper<?> queryWrapper, Map<...
method doMultiFieldsOrder (line 247) | private static void doMultiFieldsOrder(QueryWrapper<?> queryWrapper,Ma...
method allColumnExist (line 366) | private static boolean allColumnExist(String columnStr, Set<String> al...
method doSuperQuery (line 388) | private static void doSuperQuery(QueryWrapper<?> queryWrapper,Map<Stri...
method convert2Rule (line 491) | public static QueryRuleEnum convert2Rule(Object value) {
method replaceValue (line 563) | private static Object replaceValue(QueryRuleEnum rule, Object value) {
method addQueryByRule (line 603) | private static void addQueryByRule(QueryWrapper<?> queryWrapper,String...
method parseByType (line 631) | private static Object parseByType(String value, String type, QueryRule...
method getDateQueryByRule (line 669) | private static Date getDateQueryByRule(String value,QueryRuleEnum rule...
method addEasyQuery (line 695) | public static void addEasyQuery(QueryWrapper<?> queryWrapper, String n...
method judgedIsUselessField (line 790) | private static boolean judgedIsUselessField(String name) {
method getRuleMap (line 804) | public static Map<String, SysPermissionDataRuleModel> getRuleMap() {
method addRuleToQueryWrapper (line 828) | private static void addRuleToQueryWrapper(SysPermissionDataRuleModel d...
method converRuleValue (line 855) | public static String converRuleValue(String ruleValue) {
method trimSingleQuote (line 867) | public static String trimSingleQuote(String ruleValue) {
method getSqlRuleValue (line 880) | public static String getSqlRuleValue(String sqlRule){
method getSqlRuleParams (line 899) | public static Set<String> getSqlRuleParams(String sql) {
method getSingleQueryConditionSql (line 924) | public static String getSingleQueryConditionSql(String field,String al...
method installAuthJdbc (line 933) | @SuppressWarnings({ "unchecked", "rawtypes" })
method installAuthMplus (line 981) | public static void installAuthMplus(QueryWrapper<?> queryWrapper,Class...
method convertSystemVariables (line 1011) | public static String convertSystemVariables(String sql){
method getDbType (line 1018) | private static String getDbType(){
method specialStrConvert (line 1028) | private static String specialStrConvert(String value) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryRuleEnum.java
type QueryRuleEnum (line 10) | public enum QueryRuleEnum {
method QueryRuleEnum (line 75) | QueryRuleEnum(String value, String condition, String msg){
method getValue (line 81) | public String getValue() {
method setValue (line 85) | public void setValue(String value) {
method getMsg (line 89) | public String getMsg() {
method setMsg (line 93) | public void setMsg(String msg) {
method getCondition (line 97) | public String getCondition() {
method setCondition (line 101) | public void setCondition(String condition) {
method getByValue (line 105) | public static QueryRuleEnum getByValue(String value){
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/JeecgDataAutorUtils.java
class JeecgDataAutorUtils (line 19) | public class JeecgDataAutorUtils {
method installDataSearchConditon (line 33) | public static synchronized void installDataSearchConditon(HttpServletR...
method loadDataSearchConditon (line 53) | @SuppressWarnings("unchecked")
method loadDataSearchConditonSqlString (line 64) | public static synchronized String loadDataSearchConditonSqlString() {
method installDataSearchConditon (line 74) | public static synchronized void installDataSearchConditon(HttpServletR...
method installUserInfo (line 86) | public static synchronized void installUserInfo(HttpServletRequest req...
method installUserInfo (line 94) | public static synchronized void installUserInfo(SysUserCacheInfo useri...
method loadUserInfo (line 102) | public static synchronized SysUserCacheInfo loadUserInfo() {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/JwtUtil.java
class JwtUtil (line 41) | @Slf4j
method responseError (line 56) | public static void responseError(HttpServletResponse response, Integer...
method verify (line 82) | public static boolean verify(String token, String username, String sec...
method getUsername (line 101) | public static String getUsername(String token) {
method sign (line 119) | @Deprecated
method sign (line 138) | @Deprecated
method sign (line 156) | public static String sign(String username, String secret, String clien...
method getClientType (line 178) | public static String getClientType(String token) {
method getUserNameByToken (line 197) | public static String getUserNameByToken(HttpServletRequest request) th...
method getSessionData (line 211) | public static String getSessionData(String key) {
method getUserSystemData (line 239) | public static String getUserSystemData(String key, SysUserCacheInfo us...
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/ResourceUtil.java
class ResourceUtil (line 24) | @Slf4j
method getEnumDictData (line 64) | public static Map<String, List<DictModel>> getEnumDictData() {
method initEnumDictData (line 85) | private static void initEnumDictData() {
method hasEnumDictAnnotation (line 134) | private static boolean hasEnumDictAnnotation(MetadataReader reader) {
method processEnumClass (line 145) | private static void processEnumClass(String classname) {
method queryManyDictByKeys (line 171) | public static Map<String, List<DictModel>> queryManyDictByKeys(List<St...
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/SqlConcatUtil.java
class SqlConcatUtil (line 27) | @Slf4j
method getSingleSqlByRule (line 38) | public static String getSingleSqlByRule(QueryRuleEnum rule,String fiel...
method getSingleQueryConditionSql (line 51) | public static String getSingleQueryConditionSql(String field,String al...
method getSingleSqlByRule (line 69) | private static String getSingleSqlByRule(QueryRuleEnum rule,String fie...
method getFieldConditionValue (line 119) | private static String getFieldConditionValue(Object value,boolean isSt...
method getInConditionValue (line 152) | private static String getInConditionValue(Object value,boolean isStrin...
method getLikeConditionValue (line 180) | private static String getLikeConditionValue(Object value, QueryRuleEnu...
method getDbType (line 245) | private static String getDbType() {
method getQueryConditionOrders (line 253) | public static List<OrderItem> getQueryConditionOrders(String column, S...
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/ComboModel.java
class ComboModel (line 14) | @Data
method ComboModel (line 30) | public ComboModel(){
method ComboModel (line 34) | public ComboModel(String id,String title,boolean checked,String userna...
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/DictModel.java
class DictModel (line 16) | @Data
method DictModel (line 23) | public DictModel() {
method DictModel (line 26) | public DictModel(String value, String text) {
method DictModel (line 31) | public DictModel(String value, String text, String color) {
method getTitle (line 54) | public String getTitle() {
method getLabel (line 60) | public String getLabel() {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/DictModelMany.java
class DictModelMany (line 10) | @Data
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/DictQuery.java
class DictQuery (line 9) | @Data
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/DynamicDataSourceModel.java
class DynamicDataSourceModel (line 10) | @Data
method DynamicDataSourceModel (line 13) | public DynamicDataSourceModel() {
method DynamicDataSourceModel (line 17) | public DynamicDataSourceModel(Object dbSource) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/LoginUser.java
class LoginUser (line 20) | @Data
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/SelectTreeModel.java
class SelectTreeModel (line 13) | @Data
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/SysCategoryModel.java
class SysCategoryModel (line 11) | public class SysCategoryModel {
method getId (line 21) | public String getId() {
method setId (line 25) | public void setId(String id) {
method getPid (line 29) | public String getPid() {
method setPid (line 33) | public void setPid(String pid) {
method getName (line 37) | public String getName() {
method setName (line 41) | public void setName(String name) {
method getCode (line 45) | public String getCode() {
method setCode (line 49) | public void setCode(String code) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/SysDepartModel.java
class SysDepartModel (line 7) | public class SysDepartModel {
method getId (line 37) | public String getId() {
method setId (line 41) | public void setId(String id) {
method getParentId (line 45) | public String getParentId() {
method setParentId (line 49) | public void setParentId(String parentId) {
method getDepartName (line 53) | public String getDepartName() {
method setDepartName (line 57) | public void setDepartName(String departName) {
method getDepartNameEn (line 61) | public String getDepartNameEn() {
method setDepartNameEn (line 65) | public void setDepartNameEn(String departNameEn) {
method getDepartNameAbbr (line 69) | public String getDepartNameAbbr() {
method setDepartNameAbbr (line 73) | public void setDepartNameAbbr(String departNameAbbr) {
method getDepartOrder (line 77) | public Integer getDepartOrder() {
method setDepartOrder (line 81) | public void setDepartOrder(Integer departOrder) {
method getDescription (line 85) | public String getDescription() {
method setDescription (line 89) | public void setDescription(String description) {
method getOrgCategory (line 93) | public String getOrgCategory() {
method setOrgCategory (line 97) | public void setOrgCategory(String orgCategory) {
method getOrgType (line 101) | public String getOrgType() {
method setOrgType (line 105) | public void setOrgType(String orgType) {
method getOrgCode (line 109) | public String getOrgCode() {
method setOrgCode (line 113) | public void setOrgCode(String orgCode) {
method getMobile (line 117) | public String getMobile() {
method setMobile (line 121) | public void setMobile(String mobile) {
method getFax (line 125) | public String getFax() {
method setFax (line 129) | public void setFax(String fax) {
method getAddress (line 133) | public String getAddress() {
method setAddress (line 137) | public void setAddress(String address) {
method getMemo (line 141) | public String getMemo() {
method setMemo (line 145) | public void setMemo(String memo) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/SysFilesModel.java
class SysFilesModel (line 9) | public class SysFilesModel {
method getId (line 25) | public String getId() {
method setId (line 29) | public void setId(String id) {
method getFileName (line 33) | public String getFileName() {
method setFileName (line 37) | public void setFileName(String fileName) {
method getUrl (line 41) | public String getUrl() {
method setUrl (line 45) | public void setUrl(String url) {
method getFileType (line 49) | public String getFileType() {
method setFileType (line 53) | public void setFileType(String fileType) {
method getStoreType (line 57) | public String getStoreType() {
method setStoreType (line 61) | public void setStoreType(String storeType) {
method getFileSize (line 65) | public Double getFileSize() {
method setFileSize (line 69) | public void setFileSize(Double fileSize) {
method getTenantId (line 73) | public String getTenantId() {
method setTenantId (line 77) | public void setTenantId(String tenantId) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/SysPermissionDataRuleModel.java
class SysPermissionDataRuleModel (line 20) | public class SysPermissionDataRuleModel {
method getId (line 72) | public String getId() {
method setId (line 76) | public void setId(String id) {
method getPermissionId (line 80) | public String getPermissionId() {
method setPermissionId (line 84) | public void setPermissionId(String permissionId) {
method getRuleName (line 88) | public String getRuleName() {
method setRuleName (line 92) | public void setRuleName(String ruleName) {
method getRuleColumn (line 96) | public String getRuleColumn() {
method setRuleColumn (line 100) | public void setRuleColumn(String ruleColumn) {
method getRuleConditions (line 104) | public String getRuleConditions() {
method setRuleConditions (line 108) | public void setRuleConditions(String ruleConditions) {
method getRuleValue (line 112) | public String getRuleValue() {
method setRuleValue (line 116) | public void setRuleValue(String ruleValue) {
method getCreateTime (line 120) | public Date getCreateTime() {
method setCreateTime (line 124) | public void setCreateTime(Date createTime) {
method getCreateBy (line 128) | public String getCreateBy() {
method setCreateBy (line 132) | public void setCreateBy(String createBy) {
method getUpdateTime (line 136) | public Date getUpdateTime() {
method setUpdateTime (line 140) | public void setUpdateTime(Date updateTime) {
method getUpdateBy (line 144) | public String getUpdateBy() {
method setUpdateBy (line 148) | public void setUpdateBy(String updateBy) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/SysUserCacheInfo.java
class SysUserCacheInfo (line 11) | public class SysUserCacheInfo {
method isOneDepart (line 35) | public boolean isOneDepart() {
method setOneDepart (line 39) | public void setOneDepart(boolean oneDepart) {
method getSysDate (line 43) | public String getSysDate() {
method getSysTime (line 47) | public String getSysTime() {
method getSysUserCode (line 51) | public String getSysUserCode() {
method setSysUserCode (line 55) | public void setSysUserCode(String sysUserCode) {
method getSysUserName (line 59) | public String getSysUserName() {
method setSysUserName (line 63) | public void setSysUserName(String sysUserName) {
method getSysOrgCode (line 67) | public String getSysOrgCode() {
method setSysOrgCode (line 71) | public void setSysOrgCode(String sysOrgCode) {
method getSysMultiOrgCode (line 75) | public List<String> getSysMultiOrgCode() {
method setSysMultiOrgCode (line 79) | public void setSysMultiOrgCode(List<String> sysMultiOrgCode) {
method getSysUserId (line 83) | public String getSysUserId() {
method setSysUserId (line 87) | public void setSysUserId(String sysUserId) {
method getSysOrgId (line 91) | public String getSysOrgId() {
method setSysOrgId (line 95) | public void setSysOrgId(String sysOrgId) {
method getSysRoleCode (line 99) | public String getSysRoleCode() {
method setSysRoleCode (line 103) | public void setSysRoleCode(String sysRoleCode) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/UserAccountInfo.java
class UserAccountInfo (line 20) | @Data
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/AssertUtils.java
class AssertUtils (line 12) | public class AssertUtils {
method assertEmpty (line 23) | public static void assertEmpty(String msg, Object obj) {
method assertNotEmpty (line 39) | public static void assertNotEmpty(String msg, Object obj) {
method assertEquals (line 55) | public static void assertEquals(String message, Object expected,
method assertNotEquals (line 72) | public static void assertNotEquals(String message, Object expected,
method assertSame (line 89) | public static void assertSame(String message, Object expected,
method assertNotSame (line 106) | public static void assertNotSame(String message, Object unexpected,
method assertTrue (line 119) | public static void assertTrue(String message, boolean condition) {
method assertFalse (line 131) | public static void assertFalse(String message, boolean condition) {
method assertIn (line 147) | public static <T> void assertIn(String message, T obj, T... objs) {
method assertNotIn (line 167) | public static <T> void assertNotIn(String message, T obj, T... objs) {
method assertGt (line 185) | public static void assertGt(String message, Number src, Number des) {
method assertGe (line 201) | public static void assertGe(String message, Number src, Number des) {
method assertLt (line 218) | public static void assertLt(String message, Number src, Number des) {
method assertLe (line 233) | public static void assertLe(String message, Number src, Number des) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/BrowserType.java
type BrowserType (line 8) | public enum BrowserType {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/BrowserUtils.java
class BrowserUtils (line 15) | public class BrowserUtils {
method isIe (line 22) | public static boolean isIe(HttpServletRequest request) {
method getIeVersion (line 34) | public static Double getIeVersion(HttpServletRequest request) {
method getBrowserType (line 58) | public static BrowserType getBrowserType(HttpServletRequest request) {
method getBrowserType (line 96) | private static boolean getBrowserType(HttpServletRequest request,
method checkBrowse (line 119) | public static String checkBrowse(HttpServletRequest request) {
method regex (line 166) | public static boolean regex(String regex, String str) {
method getBrowserLanguage (line 187) | public static String getBrowserLanguage(HttpServletRequest request) {
method isDesktop (line 200) | public static boolean isDesktop(HttpServletRequest request) {
method isMobile (line 205) | public static boolean isMobile(HttpServletRequest request) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/CommonUtils.java
class CommonUtils (line 42) | @Slf4j
method uploadOnlineImage (line 56) | public static String uploadOnlineImage(byte[] data,String basePath,Str...
method getFileName (line 92) | public static String getFileName(String fileName){
method ifContainChinese (line 120) | public static boolean ifContainChinese(String str) {
method upload (line 136) | public static String upload(MultipartFile file, String bizPath, String...
method uploadLocal (line 156) | public static String uploadLocal(MultipartFile mf,String bizPath,Strin...
method upload (line 204) | public static String upload(MultipartFile file, String bizPath, String...
method getDatabaseType (line 226) | @Deprecated
method getDatabaseTypeEnum (line 245) | public static DbType getDatabaseTypeEnum() {
method getDataSourceProperty (line 268) | public static DataSourceProperty getDataSourceProperty(String sourceKey){
method getDataSourceConnect (line 281) | public static Connection getDataSourceConnect(String sourceKey) throws...
method getDatabaseTypeByDataSource (line 305) | private static String getDatabaseTypeByDataSource(DataSource dataSourc...
method getBaseUrl (line 341) | public static String getBaseUrl(HttpServletRequest request) {
method mergeJSON (line 381) | public static JSONObject mergeJSON(JSONObject target, JSONObject... so...
method mergeJSON (line 394) | public static JSONObject mergeJSON(JSONObject target, JSONObject sourc...
method getSplitText (line 420) | public static String getSplitText(List<String> list, String separator) {
method getFilterSqlByTableSql (line 433) | public static String getFilterSqlByTableSql(String tableSql) {
method getTableNameByTableSql (line 453) | public static String getTableNameByTableSql(String tableSql) {
method hasIntersection (line 472) | public static boolean hasIntersection(Set<String> set1, String[] arr2) {
method logInfo (line 493) | public static void logInfo(String msg, Object... objects) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DateRangeUtils.java
class DateRangeUtils (line 15) | public class DateRangeUtils {
method getDateRangeByEnum (line 23) | public static Date[] getDateRangeByEnum(DateRangeEnum rangeEnum) {
method getNextMonthStartDay (line 78) | public static Date getNextMonthStartDay() {
method getNextMonthEndDay (line 85) | public static Date getNextMonthEndDay() {
method getThisMonthStartDay (line 92) | public static Date getThisMonthStartDay() {
method getThisMonthEndDay (line 99) | public static Date getThisMonthEndDay() {
method getLastMonthStartDay (line 106) | public static Date getLastMonthStartDay() {
method getLastMonthEndDay (line 113) | public static Date getLastMonthEndDay() {
method getLastWeekStartDay (line 120) | public static Date getLastWeekStartDay() {
method getLastWeekEndDay (line 127) | public static Date getLastWeekEndDay() {
method getThisWeekStartDay (line 134) | public static Date getThisWeekStartDay() {
method getThisWeekEndDay (line 142) | public static Date getThisWeekEndDay() {
method getNextWeekStartDay (line 150) | public static Date getNextWeekStartDay() {
method getNextWeekEndDay (line 157) | public static Date getNextWeekEndDay() {
method getLast7DaysStartTime (line 166) | public static Date getLast7DaysStartTime() {
method getLast7DaysEndTime (line 178) | public static Date getLast7DaysEndTime() {
method getYesterdayStartTime (line 190) | public static Date getYesterdayStartTime() {
method getYesterdayEndTime (line 202) | public static Date getYesterdayEndTime() {
method getTomorrowStartTime (line 211) | public static Date getTomorrowStartTime() {
method getTomorrowEndTime (line 220) | public static Date getTomorrowEndTime() {
method getTodayStartTime (line 229) | public static Date getTodayStartTime() {
method getTodayEndTime (line 238) | public static Date getTodayEndTime() {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils.java
class DateUtils (line 29) | public class DateUtils extends PropertyEditorSupport {
method initialValue (line 32) | @Override
method initialValue (line 38) | @Override
method initialValue (line 44) | @Override
method initialValue (line 50) | @Override
method initialValue (line 56) | @Override
method initialValue (line 62) | @Override
method initialValue (line 68) | @Override
method getSdFormat (line 87) | private static SimpleDateFormat getSdFormat(String pattern) {
method getCalendar (line 96) | public static Calendar getCalendar() {
method getCalendar (line 106) | public static Calendar getCalendar(long millis) {
method getDate (line 123) | public static Date getDate() {
method getLocalDate (line 133) | public static LocalDate getLocalDate() {
method getDate (line 144) | public static Date getDate(long millis) {
method timestamptoStr (line 154) | public static String timestamptoStr(Timestamp time) {
method str2Timestamp (line 168) | public static Timestamp str2Timestamp(String str) {
method str2Date (line 180) | public static Date str2Date(String str, SimpleDateFormat sdf) {
method date2Str (line 200) | public static String date2Str(SimpleDateFormat dateSdf) {
method dateformat (line 217) | public static String dateformat(String date, String format) {
method date2Str (line 236) | public static String date2Str(Date date, SimpleDateFormat dateSdf) {
method getDate (line 251) | public static String getDate(String format) {
method getTimestamp (line 266) | public static Timestamp getTimestamp(long millis) {
method getTimestamp (line 276) | public static Timestamp getTimestamp(String time) {
method getTimestamp (line 285) | public static Timestamp getTimestamp() {
method now (line 294) | public static String now() {
method getTimestamp (line 304) | public static Timestamp getTimestamp(Date date) {
method getCalendarTimestamp (line 314) | public static Timestamp getCalendarTimestamp(Calendar cal) {
method gettimestamp (line 319) | public static Timestamp gettimestamp() {
method getMillis (line 337) | public static long getMillis() {
method getMillis (line 347) | public static long getMillis(Calendar cal) {
method getMillis (line 358) | public static long getMillis(Date date) {
method getMillis (line 368) | public static long getMillis(Timestamp ts) {
method formatDate (line 382) | public static String formatDate() {
method formatDateTime (line 391) | public static String formatDateTime() {
method getDataString (line 398) | public static String getDataString(SimpleDateFormat formatstr) {
method formatDate (line 410) | public static String formatDate(Calendar cal) {
method formatDate (line 420) | public static String formatDate(Date date) {
method formatDate (line 430) | public static String formatDate(long millis) {
method formatDate (line 440) | public static String formatDate(String pattern) {
method formatDate (line 451) | public static String formatDate(Calendar cal, String pattern) {
method formatDate (line 462) | public static String formatDate(Date date, String pattern) {
method formatTime (line 476) | public static String formatTime() {
method formatTime (line 486) | public static String formatTime(long millis) {
method formatTime (line 496) | public static String formatTime(Calendar cal) {
method formatTime (line 506) | public static String formatTime(Date date) {
method formatShortTime (line 520) | public static String formatShortTime() {
method formatShortTime (line 530) | public static String formatShortTime(long millis) {
method formatShortTime (line 540) | public static String formatShortTime(Calendar cal) {
method formatShortTime (line 550) | public static String formatShortTime(Date date) {
method parseDate (line 569) | public static Date parseDate(String src, String pattern) throws ParseE...
method parseCalendar (line 582) | public static Calendar parseCalendar(String src, String pattern) throw...
method formatAddDate (line 590) | public static String formatAddDate(String src, String pattern, int amo...
method parseTimestamp (line 605) | public static Timestamp parseTimestamp(String src, String pattern) thr...
method dateDiff (line 623) | public static int dateDiff(char flag, Calendar calSrc, Calendar calDes) {
method getCurrentTimestamp (line 655) | public static Long getCurrentTimestamp() {
method setAsText (line 663) | @Override
method getYear (line 686) | public static int getYear() {
method parseDatetime (line 697) | public static Date parseDatetime(String str){
method isSameDay (line 712) | public static boolean isSameDay(Date date1, Date date2) {
method calculateTimeDifference (line 731) | public static long calculateTimeDifference(Date targetDate) {
method calculateDaysDifference (line 753) | public static long calculateDaysDifference(Date targetDate) {
method isSameWeek (line 770) | public static boolean isSameWeek(Date date1, Date date2) {
method isSameMonth (line 789) | public static boolean isSameMonth(Date date1, Date date2) {
method isSameYear (line 808) | public static boolean isSameYear(Date date1, Date date2) {
method getDateRangeList (line 826) | public static List<Date> getDateRangeList(Date begin, Date end) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DySmsHelper.java
class DySmsHelper (line 35) | public class DySmsHelper {
method setAccessKeyId (line 48) | public static void setAccessKeyId(String accessKeyId) {
method setAccessKeySecret (line 52) | public static void setAccessKeySecret(String accessKeySecret) {
method getAccessKeyId (line 56) | public static String getAccessKeyId() {
method getAccessKeySecret (line 60) | public static String getAccessKeySecret() {
method sendSms (line 65) | public static boolean sendSms(String phone, JSONObject templateParamJs...
method validateParam (line 138) | private static void validateParam(JSONObject templateParamJson,DySmsEn...
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DySmsLimit.java
class DySmsLimit (line 19) | @Slf4j
method canSendSms (line 37) | public static boolean canSendSms(String ip) {
method clearSendSmsCount (line 76) | public static void clearSendSmsCount(String ip) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/FileDownloadUtils.java
class FileDownloadUtils (line 31) | @Slf4j
method downloadFile (line 43) | public static void downloadFile(HttpServletResponse response, String s...
method downloadFileMulti (line 85) | public static void downloadFileMulti(HttpServletResponse response, Lis...
method download2DiskFromNet (line 133) | public static String download2DiskFromNet(String fileUrl, String store...
method getUniqueFile (line 171) | public static File getUniqueFile(final File file) {
method ensureDestFileDir (line 195) | private static File ensureDestFileDir(String destFilePath) {
method checkDirAndCreate (line 209) | public static void checkDirAndCreate(File dir) {
method downLoadSingleFile (line 223) | public static void downLoadSingleFile(String fileUrl, String fileName,...
method getDownInputStream (line 259) | public static InputStream getDownInputStream(String fileUrl, String up...
method getFileExtension (line 287) | public static String getFileExtension(String fileName) {
method createInternetShortcut (line 300) | public static InputStream createInternetShortcut(String name, String u...
method getFileNameFromUrl (line 321) | public static String getFileNameFromUrl(String fileUrl) {
method generateFileName (line 345) | public static String generateFileName(String fileUrl, int index, int t...
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/FillRuleUtil.java
class FillRuleUtil (line 22) | @Slf4j
method executeRule (line 29) | @SuppressWarnings("unchecked")
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/HTMLUtils.java
class HTMLUtils (line 14) | @SuppressWarnings("AlibabaClassNamingShouldBeCamel")
method getInnerText (line 22) | public static String getInnerText(String html) {
method parseMarkdown (line 40) | public static String parseMarkdown(String markdownContent) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/ImportExcelUtil.java
class ImportExcelUtil (line 17) | @Slf4j
method imporReturnRes (line 20) | public static Result<?> imporReturnRes(int errorLines,int successLines...
method importDateSave (line 42) | public static List<String> importDateSave(List<?> list, Class serviceC...
method importDateSaveOne (line 71) | public static List<String> importDateSaveOne(Object obj, Class service...
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/IpUtils.java
class IpUtils (line 22) | public class IpUtils {
method getIpAddr (line 31) | public static String getIpAddr(HttpServletRequest request) {
method isValidIpAddress (line 78) | public static boolean isValidIpAddress(String ipAddress) {
method getServerIp (line 89) | public static String getServerIp(){
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/Md5Util.java
class Md5Util (line 9) | public class Md5Util {
method byteArrayToHexString (line 14) | public static String byteArrayToHexString(byte[] b) {
method byteToHexString (line 22) | private static String byteToHexString(byte b) {
method md5Encode (line 32) | public static String md5Encode(String origin, String charsetname) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/MinioUtil.java
class MinioUtil (line 18) | @Slf4j
method setMinioUrl (line 25) | public static void setMinioUrl(String minioUrl) {
method setMinioName (line 29) | public static void setMinioName(String minioName) {
method setMinioPass (line 33) | public static void setMinioPass(String minioPass) {
method setBucketName (line 37) | public static void setBucketName(String bucketName) {
method getMinioUrl (line 41) | public static String getMinioUrl() {
method getBucketName (line 45) | public static String getBucketName() {
method upload (line 56) | public static String upload(MultipartFile file, String bizPath, String...
method upload (line 114) | public static String upload(MultipartFile file, String bizPath) throws...
method getMinioFile (line 124) | public static InputStream getMinioFile(String bucketName,String object...
method removeObject (line 143) | public static void removeObject(String bucketName, String objectName) {
method getObjectUrl (line 161) | public static String getObjectUrl(String bucketName, String objectName...
method initMinio (line 183) | private static MinioClient initMinio(String minioUrl, String minioName...
method upload (line 203) | public static String upload(InputStream stream,String relativePath) th...
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/MyClassLoader.java
class MyClassLoader (line 8) | public class MyClassLoader extends ClassLoader {
method getClassByScn (line 9) | public static Class getClassByScn(String className) {
method getPackPath (line 25) | public static String getPackPath(Object object) {
method getAppPath (line 35) | public static String getAppPath(Class cls) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/MyCommonsMultipartFile.java
class MyCommonsMultipartFile (line 15) | public class MyCommonsMultipartFile implements MultipartFile {
method MyCommonsMultipartFile (line 22) | public MyCommonsMultipartFile(FileItem fileItem) throws IOException {
method MyCommonsMultipartFile (line 31) | public MyCommonsMultipartFile(InputStream inputStream, String fileName...
method getName (line 37) | @Override
method getOriginalFilename (line 42) | @Override
method getContentType (line 47) | @Override
method isEmpty (line 52) | @Override
method getSize (line 57) | @Override
method getBytes (line 62) | @Override
method getInputStream (line 67) | @Override
method transferTo (line 72) | @Override
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/PasswordUtil.java
class PasswordUtil (line 15) | public class PasswordUtil {
method getSalt (line 44) | public static byte[] getSalt() throws Exception {
method getStaticSalt (line 51) | public static byte[] getStaticSalt() {
method getPbeKey (line 63) | private static Key getPbeKey(String password) {
method encrypt (line 93) | public static String encrypt(String plaintext, String password, String...
method decrypt (line 121) | public static String decrypt(String ciphertext, String password, Strin...
method bytesToHexString (line 147) | public static String bytesToHexString(byte[] src) {
method hexStringToBytes (line 170) | public static byte[] hexStringToBytes(String hexString) {
method charToByte (line 185) | private static byte charToByte(char c) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/PmsUtil.java
class PmsUtil (line 18) | @Slf4j
method setUploadPath (line 26) | @Value("${jeecg.path.upload:}")
method saveErrorTxtByList (line 31) | public static String saveErrorTxtByList(List<String> msg, String name) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/ReflectHelper.java
class ReflectHelper (line 17) | @Slf4j
method ReflectHelper (line 41) | public ReflectHelper(Object o) {
method initMethods (line 49) | public void initMethods() {
method setMethodValue (line 80) | public boolean setMethodValue(String property, Object object) {
method getMethodValue (line 98) | public Object getMethodValue(String property) {
method setAll (line 121) | public Object setAll(Map<String, Object> data) {
method setAll (line 138) | public static Object setAll(Object o, Map<String, Object> data) {
method setAll (line 151) | @SuppressWarnings("unchecked")
method transList2Entrys (line 171) | public static <T> List<T> transList2Entrys(List<Map<String, Object>> m...
method getFieldValueByName (line 184) | public static Object getFieldValueByName(String fieldName, Object o) {
method getFieldVal (line 200) | public static Object getFieldVal(String fieldName, Object o) {
method getFiledName (line 217) | public static String[] getFiledName(Object o) {
method getFiledsInfo (line 230) | public static List<Map> getFiledsInfo(Object o) {
method getFiledValues (line 248) | public static Object[] getFiledValues(Object o) {
method isClassField (line 263) | public static boolean isClassField(String field, Class clazz){
method getClassFields (line 280) | public static List<Field> getClassFields(Class<?> clazz) {
method getTableFieldName (line 299) | public static String getTableFieldName(Class<?> clazz, String name) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/RestDesformUtil.java
class RestDesformUtil (line 15) | public class RestDesformUtil {
method queryOne (line 33) | public static Result queryOne(String desformCode, String dataId, Strin...
method addOne (line 48) | public static Result addOne(String desformCode, JSONObject formData, S...
method editOne (line 60) | public static Result editOne(String desformCode, JSONObject formData, ...
method addOrEditOne (line 64) | private static Result addOrEditOne(String desformCode, JSONObject form...
method removeOne (line 79) | public static Result removeOne(String desformCode, String dataId, Stri...
method packageReturn (line 86) | private static Result packageReturn(ResponseEntity<JSONObject> result) {
method getBaseUrl (line 93) | private static StringBuilder getBaseUrl() {
method getBaseUrl (line 99) | private static StringBuilder getBaseUrl(String desformCode, String dat...
method getBaseUrl (line 108) | private static StringBuilder getBaseUrl(String desformCode) {
method getHeaders (line 112) | private static HttpHeaders getHeaders(String token) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/RestUtil.java
class RestUtil (line 20) | @Slf4j
method getDomain (line 26) | private static String getDomain() {
method getPath (line 40) | private static String getPath() {
method getBaseUrl (line 47) | public static String getBaseUrl() {
method getRestTemplate (line 74) | public static RestTemplate getRestTemplate() {
method get (line 81) | public static JSONObject get(String url) {
method get (line 88) | public static JSONObject get(String url, JSONObject variables) {
method get (line 95) | public static JSONObject get(String url, JSONObject variables, JSONObj...
method getNative (line 102) | public static ResponseEntity<JSONObject> getNative(String url, JSONObj...
method post (line 109) | public static JSONObject post(String url) {
method post (line 116) | public static JSONObject post(String url, JSONObject params) {
method post (line 123) | public static JSONObject post(String url, JSONObject variables, JSONOb...
method postNative (line 130) | public static ResponseEntity<JSONObject> postNative(String url, JSONOb...
method put (line 137) | public static JSONObject put(String url) {
method put (line 144) | public static JSONObject put(String url, JSONObject params) {
method put (line 151) | public static JSONObject put(String url, JSONObject variables, JSONObj...
method putNative (line 158) | public static ResponseEntity<JSONObject> putNative(String url, JSONObj...
method delete (line 165) | public static JSONObject delete(String url) {
method delete (line 172) | public static JSONObject delete(String url, JSONObject variables, JSON...
method deleteNative (line 179) | public static ResponseEntity<JSONObject> deleteNative(String url, JSON...
method request (line 186) | public static ResponseEntity<JSONObject> request(String url, HttpMetho...
method request (line 201) | public static <T> ResponseEntity<T> request(String url, HttpMethod met...
method request (line 253) | public static <T> ResponseEntity<T> request(String url, HttpMethod met...
method getHeaderApplicationJson (line 317) | public static HttpHeaders getHeaderApplicationJson() {
method getHeader (line 324) | public static HttpHeaders getHeader(String mediaType) {
method asUrlVariables (line 334) | public static String asUrlVariables(JSONObject variables) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/ShiroThreadPoolExecutor.java
class ShiroThreadPoolExecutor (line 16) | public class ShiroThreadPoolExecutor extends ThreadPoolExecutor {
method ShiroThreadPoolExecutor (line 18) | public ShiroThreadPoolExecutor(int corePoolSize, int maximumPoolSize, ...
method execute (line 22) | @Override
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/SpringContextUtils.java
class SpringContextUtils (line 20) | @Lazy(false)
method setApplicationContext (line 29) | @Override
method getApplicationContext (line 39) | public static ApplicationContext getApplicationContext() {
method getHttpServletRequest (line 46) | public static HttpServletRequest getHttpServletRequest() {
method getHttpServletResponse (line 52) | public static HttpServletResponse getHttpServletResponse() {
method getDomain (line 59) | public static String getDomain(){
method getOrigin (line 78) | public static String getOrigin(){
method getBean (line 89) | public static Object getBean(String name) {
method getBean (line 100) | public static <T> T getBean(Class<T> clazz) {
method getBean (line 112) | public static <T> T getBean(String name, Class<T> clazz) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/SqlInjectionUtil.java
class SqlInjectionUtil (line 18) | @Slf4j
method filterContentMulti (line 84) | public static void filterContentMulti(String... values) {
method filterContent (line 96) | public static void filterContent(String value, String customXssString) {
method isExistSqlInjectKeyword (line 145) | @SuppressWarnings("AlibabaUndefineMagicConstant")
method isExistSqlInjectTableKeyword (line 183) | @SuppressWarnings("AlibabaUndefineMagicConstant")
method filterContent (line 204) | public static void filterContent(String[] values, String customXssStri...
method specialFilterContentForDictSql (line 221) | public static void specialFilterContentForDictSql(String value) {
method specialFilterContentForOnlineReport (line 265) | public static void specialFilterContentForOnlineReport(String value) {
method checkSqlAnnotation (line 308) | public static void checkSqlAnnotation(String str){
method getSqlInjectTableName (line 333) | public static String getSqlInjectTableName(String table) {
method getSqlInjectField (line 374) | public static String getSqlInjectField(String field) {
method getSqlInjectField (line 409) | public static String getSqlInjectField(String... fields) {
method getSqlInjectSortField (line 426) | public static String getSqlInjectSortField(String sortField) {
method getSqlInjectSortFields (line 440) | public static List getSqlInjectSortFields(String... sortFields) {
method getSqlInjectOrderType (line 458) | public static String getSqlInjectOrderType(String orderType) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/TencentSms.java
class TencentSms (line 28) | public class TencentSms {
method sendTencentSms (line 41) | public static boolean sendTencentSms(String phone, JSONObject template...
method getSmsClient (line 73) | private static SmsClient getSmsClient(JeecgTencent tencent) {
method buildSendSmsRequest (line 95) | private static SendSmsRequest buildSendSmsRequest(
method getSmsSignName (line 130) | private static String getSmsSignName(DySmsEnum dySmsEnum) {
method getSmsTemplateId (line 147) | private static String getSmsTemplateId(DySmsEnum dySmsEnum) {
method extractTemplateParams (line 167) | private static String[] extractTemplateParams(JSONObject templateParam...
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/TokenUtils.java
class TokenUtils (line 21) | @Slf4j
method getTokenByRequest (line 30) | public static String getTokenByRequest(HttpServletRequest request) {
method getTokenByRequest (line 46) | public static String getTokenByRequest() {
method getTenantIdByRequest (line 63) | public static String getTenantIdByRequest(HttpServletRequest request) {
method getLowAppIdByRequest (line 81) | public static String getLowAppIdByRequest(HttpServletRequest request) {
method verifyToken (line 92) | public static boolean verifyToken(HttpServletRequest request, CommonAP...
method verifyToken (line 101) | public static boolean verifyToken(String token, CommonAPI commonApi, R...
method jwtTokenRefresh (line 139) | private static boolean jwtTokenRefresh(String token, String userName, ...
method getLoginUser (line 166) | public static LoginUser getLoginUser(String username, CommonAPI common...
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/UUIDGenerator.java
class UUIDGenerator (line 11) | public class UUIDGenerator {
method generate (line 20) | public static String generate() {
method format (line 42) | private final static String format(int intval) {
method format (line 49) | private final static String format(short shortval) {
method getJvm (line 56) | private final static int getJvm() {
method getCount (line 60) | private final static short getCount() {
method getIp (line 72) | private final static int getIp() {
method getHiTime (line 79) | private final static short getHiTime() {
method getLoTime (line 83) | private final static int getLoTime() {
method toInt (line 87) | private final static int toInt(byte[] bytes) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/YouBianCodeUtil.java
class YouBianCodeUtil (line 12) | public class YouBianCodeUtil {
method getNextYouBianCode (line 30) | public static synchronized String getNextYouBianCode(String code) {
method getSubYouBianCode (line 82) | public static synchronized String getSubYouBianCode(String parentCode,...
method getNextStrNum (line 102) | private static String getNextStrNum(int num) {
method getStrNum (line 112) | private static String getStrNum(int num) {
method getNextNum (line 123) | private static int getNextNum(int num) {
method getNextZiMu (line 134) | private static char getNextZiMu(char zimu) {
method getMaxNumByLength (line 147) | private static int getMaxNumByLength(int length){
method cutYouBianCode (line 157) | public static String[] cutYouBianCode(String code){
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/DataSourceCachePool.java
class DataSourceCachePool (line 17) | public class DataSourceCachePool {
method getRedisTemplate (line 22) | private static RedisTemplate<String, Object> getRedisTemplate() {
method getCacheDynamicDataSourceModel (line 35) | public static DynamicDataSourceModel getCacheDynamicDataSourceModel(St...
method getCacheBasicDataSource (line 48) | public static DruidDataSource getCacheBasicDataSource(String dbKey) {
method putCacheBasicDataSource (line 58) | public static void putCacheBasicDataSource(String dbKey, DruidDataSour...
method cleanAllCache (line 65) | public static void cleanAllCache() {
method removeCache (line 80) | public static void removeCache(String dbKey) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/DbTypeUtils.java
class DbTypeUtils (line 14) | public class DbTypeUtils {
method dbTypeIsMySql (line 63) | public static boolean dbTypeIsMySql(DbType dbType) {
method dbTypeIsOracle (line 67) | public static boolean dbTypeIsOracle(DbType dbType) {
method dbTypeIsDm (line 74) | public static boolean dbTypeIsDm(DbType dbType) {
method dbTypeIsSqlServer (line 78) | public static boolean dbTypeIsSqlServer(DbType dbType) {
method dbTypeIsPostgre (line 82) | public static boolean dbTypeIsPostgre(DbType dbType) {
method getDbTypeString (line 93) | public static String getDbTypeString(DbType dbType){
method getDbDialect (line 113) | public static String getDbDialect(DbType dbType){
method dbTypeIf (line 120) | public static boolean dbTypeIf(DbType dbType, DbType... correctTypes) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/DynamicDBUtil.java
class DynamicDBUtil (line 27) | @Slf4j
method getJdbcDataSource (line 36) | private static DruidDataSource getJdbcDataSource(final DynamicDataSour...
method getDbSourceByDbKey (line 76) | public static DruidDataSource getDbSourceByDbKey(final String dbKey) {
method closeDbKey (line 106) | public static void closeDbKey(final String dbKey) {
method getJdbcTemplate (line 121) | private static JdbcTemplate getJdbcTemplate(String dbKey) {
method getNamedParameterJdbcTemplate (line 131) | private static NamedParameterJdbcTemplate getNamedParameterJdbcTemplat...
method update (line 142) | public static int update(final String dbKey, String sql, Object... par...
method updateByHash (line 161) | public static int updateByHash(final String dbKey, String sql, HashMap...
method findOne (line 171) | public static Object findOne(final String dbKey, String sql, Object......
method findOneByHash (line 192) | public static Object findOneByHash(final String dbKey, String sql, Has...
method findOne (line 213) | @SuppressWarnings("unchecked")
method findOneByHash (line 228) | @SuppressWarnings("unchecked")
method findList (line 234) | public static List<Map<String, Object>> findList(final String dbKey, S...
method queryCount (line 253) | public static Map<String, Object> queryCount(String dbKey, String sql,...
method findListByNamedParam (line 265) | public static List<Map<String, Object>> findListByNamedParam(final Str...
method findListByHash (line 279) | public static List<Map<String, Object>> findListByHash(final String db...
method findList (line 298) | public static <T> List<T> findList(final String dbKey, String sql, Cla...
method findListByHash (line 319) | public static <T> List<T> findListByHash(final String dbKey, String sq...
method findListEntities (line 338) | public static <T> List<T> findListEntities(final String dbKey, String ...
method findListEntitiesByHash (line 352) | public static <T> List<T> findListEntitiesByHash(final String dbKey, S...
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/FreemarkerParseFactory.java
class FreemarkerParseFactory (line 25) | @Slf4j
method isExistTemplate (line 68) | public static boolean isExistTemplate(String tplName) throws Exception {
method parseTemplate (line 93) | public static String parseTemplate(String tplName, Map<String, Object>...
method parseTemplateContent (line 122) | public static String parseTemplateContent(String tplContent,Map<String...
method parseTemplateContent (line 125) | public static String parseTemplateContent(String tplContent, Map<Strin...
method getSqlText (line 153) | private static String getSqlText(String sql) {
method getSqlText (line 157) | private static String getSqlText(String sql, boolean keepSpace) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/encryption/AesEncryptUtil.java
class AesEncryptUtil (line 14) | @Slf4j
method decryptPkcs5 (line 21) | private static String decryptPkcs5(String cipherBase64) throws Excepti...
method decryptLegacyNoPadding (line 31) | private static String decryptLegacyNoPadding(String cipherBase64) thro...
method resolvePassword (line 42) | public static String resolvePassword(String input){
method clean (line 67) | private static String clean(String s){
method desEncrypt (line 74) | @Deprecated
method encrypt (line 80) | @Deprecated
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/encryption/EncryptedString.java
class EncryptedString (line 10) | @Data
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/filter/SsrfFileTypeFilter.java
class SsrfFileTypeFilter (line 20) | @Slf4j
method getFileTypeBySuffix (line 140) | private static String getFileTypeBySuffix(String fileName) {
method checkDownloadFileType (line 150) | public static void checkDownloadFileType(String filePath) throws IOExc...
method checkUploadFileType (line 166) | public static void checkUploadFileType(MultipartFile file) throws Exce...
method checkUploadFileType (line 175) | public static void checkUploadFileType(MultipartFile file, String cust...
method getFileType (line 196) | private static String getFileType(MultipartFile file, String customPat...
method bytesToHexString (line 245) | private static String bytesToHexString(byte[] src) {
method validatePathSecurity (line 264) | private static void validatePathSecurity(String customPath) throws Jee...
method checkPathTraversal (line 293) | public static void checkPathTraversal(String filePath) {
method checkPathTraversalBatch (line 312) | public static void checkPathTraversalBatch(String files) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/filter/StrAttackFilter.java
class StrAttackFilter (line 11) | public class StrAttackFilter {
method filter (line 13) | public static String filter(String str) throws PatternSyntaxException {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/oConvertUtils.java
class oConvertUtils (line 37) | @Slf4j
method isEmpty (line 39) | public static boolean isEmpty(Object object) {
method isNotEmpty (line 52) | public static boolean isNotEmpty(Object object) {
method decodeString (line 66) | public static String decodeString(String inStr) {
method decode (line 80) | public static String decode(String strIn, String sourceCode, String ta...
method StrToUTF (line 85) | @SuppressWarnings("AlibabaLowerCamelCaseVariableNaming")
method code2code (line 98) | private static String code2code(String strIn, String sourceCode, Strin...
method getInt (line 116) | public static int getInt(String s, int defval) {
method getInt (line 127) | public static int getInt(String s) {
method getInt (line 138) | public static int getInt(String s, Integer df) {
method getInts (line 149) | public static Integer[] getInts(String[] s) {
method getDouble (line 161) | public static double getDouble(String s, double defval) {
method getDou (line 172) | public static double getDou(Double s, double defval) {
method getInt (line 187) | public static int getInt(Object object, int defval) {
method getInteger (line 198) | public static Integer getInteger(Object object, Integer defval) {
method getInt (line 209) | public static Integer getInt(Object object) {
method getInt (line 220) | public static int getInt(BigDecimal s, int defval) {
method getIntegerArry (line 227) | public static Integer[] getIntegerArry(String[] object) {
method getString (line 240) | public static String getString(String s) {
method getString (line 253) | public static String getString(Object object) {
method getString (line 260) | public static String getString(int i) {
method getString (line 264) | public static String getString(float i) {
method getNormalString (line 274) | public static String getNormalString(String input) {
method getString (line 282) | public static String getString(String s, String defval) {
method getString (line 289) | public static String getString(Object s, String defval) {
method stringToLong (line 296) | public static long stringToLong(String str) {
method getIp (line 308) | public static String getIp() {
method isBaseDataType (line 327) | private static boolean isBaseDataType(Class clazz) throws Exception {
method decodeBase64Str (line 337) | public static String decodeBase64Str(String base64Str) {
method getIpAddrByRequest (line 352) | public static String getIpAddrByRequest(HttpServletRequest request) {
method getRealIp (line 370) | public static String getRealIp() throws SocketException {
method replaceBlank (line 410) | public static String replaceBlank(String str) {
method isIn (line 429) | public static boolean isIn(String child, String[] all) {
method isArrayIn (line 449) | public static boolean isArrayIn(String[] childArray, String[] all) {
method isJsonArrayIn (line 468) | public static boolean isJsonArrayIn(JSONArray childArray, String[] all) {
method isJson (line 487) | public static boolean isJson(String str) {
method getHashMap (line 502) | public static Map<Object, Object> getHashMap() {
method setToMap (line 512) | public static Map<Object, Object> setToMap(Set<Object> setobj) {
method isInnerIp (line 522) | public static boolean isInnerIp(String ipAddress) {
method getIpNum (line 539) | private static long getIpNum(String ipAddress) {
method isInner (line 550) | private static boolean isInner(long userIp, long begin, long end) {
method camelName (line 563) | public static String camelName(String name) {
method camelNames (line 603) | public static String camelNames(String names) {
method camelNameCapFirst (line 626) | public static String camelNameCapFirst(String name) {
method camelToUnderline (line 655) | public static String camelToUnderline(String para){
method randomGen (line 677) | public static String randomGen(int place) {
method getAllFields (line 693) | public static Field[] getAllFields(Object object) {
method toLowerCasePageList (line 710) | public static List<Map<String, Object>> toLowerCasePageList(List<Map<S...
method entityListToModelList (line 732) | public static<F,T> List<T> entityListToModelList(List<F> fromList, Cla...
method entityToModel (line 744) | public static<F,T> T entityToModel(F entity, Class<T> modelClass) {
method listIsEmpty (line 770) | public static boolean listIsEmpty(Collection list) {
method isEqual (line 781) | public static boolean isEqual(Object oldVal, Object newVal) {
method isArray (line 817) | public static boolean isArray(Object obj) {
method getCollectionSize (line 830) | public static int getCollectionSize(Collection<?> collection) {
method equalityOfJSONArray (line 841) | public static boolean equalityOfJSONArray(JSONArray oldVal, JSONArray ...
method equalityOfStringArrays (line 862) | public static boolean equalityOfStringArrays(String oldVal, String new...
method equalityOfArrays (line 894) | public static boolean equalityOfArrays(Object[] oldVal, Object newVal[...
method listIsNotEmpty (line 924) | public static boolean listIsNotEmpty(Collection list) {
method readStatic (line 933) | public static String readStatic(String url) {
method list2JSONArray (line 949) | public static JSONArray list2JSONArray(List<String> list){
method isEqList (line 965) | public static boolean isEqList(List<String> list1, List<String> list2){
method isInList (line 993) | public static boolean isInList(List<String> sourceList, List<String> t...
method isAllInList (line 1015) | public static boolean isAllInList(List<String> sourceList, List<String...
method calculateFileSizeToMb (line 1043) | public static Double calculateFileSizeToMb(Long uploadCount){
method mapToString (line 1061) | public static String mapToString(Map<String, String[]> map) {
method isObjectEmpty (line 1091) | public static boolean isObjectEmpty(Object obj) {
method isEmptyIterator (line 1116) | public static boolean isEmptyIterator(Iterator<?> iterator) {
method isObjectNotEmpty (line 1129) | public static boolean isObjectNotEmpty(Object object) {
method isGt (line 1142) | public static boolean isGt(Number src, Number des) {
method isGe (line 1161) | public static boolean isGe(Number src, Number des) {
method isIn (line 1182) | public static <T> boolean isIn(T obj, T... objs) {
method isEffectiveTenant (line 1199) | public static boolean isEffectiveTenant(String tenantId) {
method copyNonNullFields (line 1209) | public static void copyNonNullFields(Object source, Object target) {
method getNullPropertyNames (line 1224) | private static String[] getNullPropertyNames(Object source) {
method getLong (line 1242) | public static long getLong(Object v, long def) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/oss/OssBootUtil.java
class OssBootUtil (line 32) | @Slf4j
method setEndPoint (line 41) | public static void setEndPoint(String endPoint) {
method setAccessKeyId (line 45) | public static void setAccessKeyId(String accessKeyId) {
method setAccessKeySecret (line 49) | public static void setAccessKeySecret(String accessKeySecret) {
method setBucketName (line 53) | public static void setBucketName(String bucketName) {
method setStaticDomain (line 57) | public static void setStaticDomain(String staticDomain) {
method getStaticDomain (line 61) | public static String getStaticDomain() {
method getEndPoint (line 65) | public static String getEndPoint() {
method getAccessKeyId (line 69) | public static String getAccessKeyId() {
method getAccessKeySecret (line 73) | public static String getAccessKeySecret() {
method getBucketName (line 77) | public static String getBucketName() {
method getOssClient (line 81) | public static OSSClient getOssClient() {
method upload (line 99) | public static String upload(MultipartFile file, String fileDir,String ...
method getOriginalUrl (line 157) | public static String getOriginalUrl(String url) {
method upload (line 171) | public static String upload(MultipartFile file, String fileDir) throws...
method upload (line 184) | public static String upload(FileItemStream file, String fileDir) {
method deleteUrl (line 218) | public static void deleteUrl(String url) {
method deleteUrl (line 226) | public static void deleteUrl(String url,String bucket) {
method delete (line 247) | public static void delete(String fileName) {
method getOssFile (line 257) | public static InputStream getOssFile(String objectName,String bucket){
method getObjectUrl (line 291) | public static String getObjectUrl(String bucketName, String objectName...
method initOss (line 314) | private static OSSClient initOss(String endpoint, String accessKeyId, ...
method upload (line 330) | public static String upload(InputStream stream, String relativePath) {
method replacePrefix (line 356) | private static String replacePrefix(String objectName,String customBuc...
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/AbstractQueryBlackListHandler.java
class AbstractQueryBlackListHandler (line 18) | @Slf4j
method getQueryTableInfo (line 46) | protected abstract List<QueryTable> getQueryTableInfo(String sql);
method isPass (line 54) | public boolean isPass(String sql) {
method checkTableAndFieldsName (line 113) | private boolean checkTableAndFieldsName(List<QueryTable> list){
method hasSpecialString (line 139) | private boolean hasSpecialString(String name){
class QueryTable (line 151) | protected class QueryTable {
method QueryTable (line 163) | public QueryTable() {
method QueryTable (line 166) | public QueryTable(String name, String alias) {
method addField (line 173) | public void addField(String field) {
method getDbName (line 177) | public String getDbName() {
method setDbName (line 181) | public void setDbName(String dbName) {
method getName (line 185) | public String getName() {
method getFields (line 189) | public Set<String> getFields() {
method setName (line 193) | public void setName(String name) {
method setFields (line 197) | public void setFields(Set<String> fields) {
method getAlias (line 201) | public String getAlias() {
method setAlias (line 205) | public void setAlias(String alias) {
method isAll (line 209) | public boolean isAll() {
method setAll (line 213) | public void setAll(boolean all) {
method existSameField (line 223) | public boolean existSameField(String fieldString) {
method toString (line 247) | @Override
method getError (line 258) | public String getError(){
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/JdbcSecurityUtil.java
class JdbcSecurityUtil (line 11) | public class JdbcSecurityUtil {
method validate (line 26) | public static void validate(String jdbcUrl){
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/SecurityTools.java
class SecurityTools (line 20) | public class SecurityTools {
method valid (line 23) | public static SecurityResp valid(SecurityReq req) {
method sign (line 47) | public static SecuritySignResp sign(SecuritySignReq req) {
method generateKeyPair (line 71) | public static MyKeyPair generateKeyPair(){
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/entity/MyKeyPair.java
class MyKeyPair (line 9) | @Data
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/entity/SecurityReq.java
class SecurityReq (line 9) | @Data
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/entity/SecurityResp.java
class SecurityResp (line 10) | @Data
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/entity/SecuritySignReq.java
class SecuritySignReq (line 9) | @Data
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/entity/SecuritySignResp.java
class SecuritySignResp (line 9) | @Data
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/AiRagConfigBean.java
class AiRagConfigBean (line 13) | @Data
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/AutoPoiConfig.java
class AutoPoiConfig (line 13) | @Lazy(false)
method applicationContextUtil (line 24) | @Bean
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/AutoPoiDictConfig.java
class AutoPoiDictConfig (line 27) | @Slf4j
method queryDict (line 45) | @Override
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/CorsFilterCondition.java
class CorsFilterCondition (line 12) | public class CorsFilterCondition implements Condition {
method matches (line 14) | @Override
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/DruidConfig.java
class DruidConfig (line 22) | @Configuration
method removeDruidAdFilter (line 45) | @Bean
class RemoveAdFilter (line 70) | private class RemoveAdFilter implements Filter {
method RemoveAdFilter (line 74) | public RemoveAdFilter(String newJs) {
method doFilter (line 78) | @Override
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/DruidWallConfigRegister.java
class DruidWallConfigRegister (line 20) | public class DruidWallConfigRegister implements SpringApplicationRunList...
method DruidWallConfigRegister (line 32) | public DruidWallConfigRegister(SpringApplication application, String[]...
method contextLoaded (line 37) | @Override
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/JeecgBaseConfig.java
class JeecgBaseConfig (line 17) | @Component("jeecgBaseConfig")
method getCustomResourcePrefixPath (line 109) | public String getCustomResourcePrefixPath() {
method setCustomResourcePrefixPath (line 113) | public void setCustomResourcePrefixPath(String customResourcePrefixPat...
method getElasticsearch (line 117) | public Elasticsearch getElasticsearch() {
method setElasticsearch (line 121) | public void setElasticsearch(Elasticsearch elasticsearch) {
method getFirewall (line 125) | public Firewall getFirewall() {
method setFirewall (line 129) | public void setFirewall(Firewall firewall) {
method getSignatureSecret (line 133) | public String getSignatureSecret() {
method setSignatureSecret (line 137) | public void setSignatureSecret(String signatureSecret) {
method getShiro (line 141) | public Shiro getShiro() {
method setShiro (line 145) | public void setShiro(Shiro shiro) {
method getPath (line 149) | public Path getPath() {
method setPath (line 153) | public void setPath(Path path) {
method getDomainUrl (line 157) | public DomainUrl getDomainUrl() {
method setDomainUrl (line 161) | public void setDomainUrl(DomainUrl domainUrl) {
method getSignUrls (line 164) | public String getSignUrls() {
method setSignUrls (line 168) | public void setSignUrls(String signUrls) {
method getFileViewDomain (line 173) | public String getFileViewDomain() {
method setFileViewDomain (line 177) | public void setFileViewDomain(String fileViewDomain) {
method getUploadType (line 181) | public String getUploadType() {
method setUploadType (line 185) | public void setUploadType(String uploadType) {
method getWeiXinPay (line 189) | public WeiXinPay getWeiXinPay() {
method setWeiXinPay (line 193) | public void setWeiXinPay(WeiXinPay weiXinPay) {
method getBaiduApi (line 197) | public BaiduApi getBaiduApi() {
method setBaiduApi (line 201) | public void setBaiduApi(BaiduApi baiduApi) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/JeecgCloudCondition.java
class JeecgCloudCondition (line 12) | public class JeecgCloudCondition implements Condition {
method matches (line 14) | @Override
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/JeecgGaodeBaseConfig.java
class JeecgGaodeBaseConfig (line 11) | @Lazy(false)
method getGaoDeApi (line 21) | public GaoDeApi getGaoDeApi() {
method setGaoDeApi (line 25) | public void setGaoDeApi(GaoDeApi gaoDeApi) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/JeecgSmsTemplateConfig.java
class JeecgSmsTemplateConfig (line 15) | @Data
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/RestTemplateConfig.java
class RestTemplateConfig (line 14) | @Configuration
method restTemplate (line 17) | @Bean
method simpleClientHttpRequestFactory (line 22) | @Bean
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/StaticConfig.java
class StaticConfig (line 12) | @Lazy(false)
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger3Config.java
class Swagger3Config (line 33) | @Slf4j
method addResourceHandlers (line 73) | @Override
method globalOpenApiMethodFilter (line 80) | @Bean
method operationCustomizer (line 85) | @Bean
method getFullPath (line 98) | private String getFullPath(HandlerMethod handlerMethod) {
method isExcludedPath (line 122) | private boolean isExcludedPath(String path) {
method customOpenAPI (line 134) | @Bean
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/TaskSchedulerConfig.java
class TaskSchedulerConfig (line 16) | @Slf4j
method taskScheduler (line 20) | @Bean
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/WebMvcConfiguration.java
class WebMvcConfiguration (line 50) | @Slf4j
method addResourceHandlers (line 73) | @Override
method addViewControllers (line 90) | @Override
method corsFilter (line 95) | @Bean
method configureMessageConverters (line 111) | @Override
method objectMapper (line 120) | @Bean
method initPrometheusMeterRegistry (line 161) | @PostConstruct
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/WebSocketConfig.java
class WebSocketConfig (line 13) | @Configuration
method serverEndpointExporter (line 19) | @Bean
method websocketFilter (line 24) | @Bean
method getFilterRegistrationBean (line 29) | @Bean
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/filter/RequestBodyReserveFilter.java
class RequestBodyReserveFilter (line 15) | public class RequestBodyReserveFilter implements Filter {
method doFilter (line 17) | @Override
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/filter/WebsocketFilter.java
class WebsocketFilter (line 20) | @Slf4j
method doFilter (line 29) | @Override
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/firewall/SqlInjection/IDictTableWhiteListHandler.java
type IDictTableWhiteListHandler (line 9) | public interface IDictTableWhiteListHandler {
method isPassBySql (line 17) | boolean isPassBySql(String sql);
method isPassByDict (line 25) | boolean isPassByDict(String dictCodeString);
method isPassByDict (line 27) | boolean isPassByDict(String tableName, String... fields);
method clear (line 34) | boolean clear();
method getErrorMsg (line 36) | String getErrorMsg();
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/firewall/SqlInjection/SysDictTableWhite.java
class SysDictTableWhite (line 11) | @Slf4j
method SysDictTableWhite (line 22) | public SysDictTableWhite() {
method SysDictTableWhite (line 26) | public SysDictTableWhite(String name, String alias) {
method addField (line 33) | public void addField(String field) {
method getName (line 37) | public String getName() {
method getFields (line 41) | public Set<String> getFields() {
method setName (line 45) | public void setName(String name) {
method setFields (line 49) | public void setFields(Set<String> fields) {
method getAlias (line 53) | public String getAlias() {
method setAlias (line 57) | public void setAlias(String alias) {
method isAll (line 61) | public boolean isAll() {
method setAll (line 65) | public void setAll(boolean all) {
method isAllFieldsValid (line 75) | public boolean isAllFieldsValid(String fieldControlString) {
method toString (line 93) | @Override
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/firewall/interceptor/LowCodeModeConfiguration.java
class LowCodeModeConfiguration (line 8) | @Configuration
method LowCodeModeConfiguration (line 13) | public LowCodeModeConfiguration(LowCodeModeInterceptor lowCodeModeInte...
method addInterceptors (line 17) | @Override
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/firewall/interceptor/LowCodeModeInterceptor.java
class LowCodeModeInterceptor (line 40) | @Slf4j
method preHandle (line 55) | @Override
method returnErrorMessage (line 104) | private void returnErrorMessage(HttpServletResponse response) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/firewall/interceptor/enums/LowCodeUrlsEnum.java
type LowCodeUrlsEnum (line 13) | public enum LowCodeUrlsEnum {
method getUrl (line 74) | public String getUrl() {
method setUrl (line 78) | public void setUrl(String url) {
method getTitle (line 82) | public String getTitle() {
method setTitle (line 86) | public void setTitle(String title) {
method LowCodeUrlsEnum (line 90) | LowCodeUrlsEnum(String url, String title) {
method getLowCodeInterceptUrls (line 100) | public static List<String> getLowCodeInterceptUrls() {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/MybatisInterceptor.java
class MybatisInterceptor (line 28) | @Slf4j
method intercept (line 33) | @Override
method plugin (line 175) | @Override
method setProperties (line 180) | @Override
method getLoginUser (line 189) | private LoginUser getLoginUser() {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/MybatisPlusSaasConfig.java
class MybatisPlusSaasConfig (line 37) | @Slf4j
method mybatisPlusInterceptor (line 92) | @Bean
method dynamicTableNameInnerInterceptor (line 162) | private DynamicTableNameInnerInterceptor dynamicTableNameInnerIntercep...
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/ThreadLocalDataHelper.java
class ThreadLocalDataHelper (line 13) | public class ThreadLocalDataHelper {
method put (line 30) | public static void put(String key, Object value) {
method get (line 43) | public static <T> T get(String key) {
method clear (line 56) | public static void clear() {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/aspect/DynamicTableAspect.java
class DynamicTableAspect (line 23) | @Aspect
method dynamicTable (line 31) | @Pointcut("@annotation(org.jeecg.common.aspect.annotation.DynamicTable)")
method around (line 36) | @Around("dynamicTable()")
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/interceptor/DynamicDatasourceInterceptor.java
class DynamicDatasourceInterceptor (line 19) | @Slf4j
method preHandle (line 25) | @Override
method postHandle (line 42) | @Override
method afterCompletion (line 50) | @Override
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/oss/MinioConfig.java
class MinioConfig (line 18) | @Lazy(false)
method initMinio (line 32) | @PostConstruct
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/oss/OssConfiguration.java
class OssConfiguration (line 15) | @Lazy(false)
method initOssBootConfiguration (line 32) | @PostConstruct
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/JwtToken.java
class JwtToken (line 10) | public class JwtToken implements AuthenticationToken {
method JwtToken (line 15) | public JwtToken(String token) {
method getPrincipal (line 19) | @Override
method getCredentials (line 24) | @Override
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
class ShiroConfig (line 49) | @Slf4j
method shiroFilter (line 69) | @Bean("shiroFilterFactoryBean")
method shiroFilterRegistration (line 221) | @Bean
method securityManager (line 245) | @Bean("securityManager")
method defaultAdvisorAutoProxyCreator (line 269) | @Bean
method lifecycleBeanPostProcessor (line 283) | @Bean
method authorizationAttributeSourceAdvisor (line 288) | @Bean
method redisCacheManager (line 301) | public RedisCacheManager redisCacheManager() {
method redisManager (line 321) | @Bean
method overridedRequestMappingHandlerMapping (line 373) | @Primary
method rebuildUrl (line 381) | private List<String> rebuildUrl(String[] bases, String[] uris) {
method prefix (line 391) | private String prefix(String seg) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroRealm.java
class ShiroRealm (line 38) | @Component
method supports (line 53) | @Override
method doGetAuthorizationInfo (line 65) | @Override
method doGetAuthenticationInfo (line 98) | @Override
method checkUserTokenIsEffect (line 124) | public LoginUser checkUserTokenIsEffect(String token) throws Authentic...
method jwtTokenRefresh (line 200) | public boolean jwtTokenRefresh(String token, String userName, String p...
method clearCache (line 233) | @Override
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/filters/CustomShiroFilterFactoryBean.java
class CustomShiroFilterFactoryBean (line 22) | @Slf4j
method getObjectType (line 24) | @Override
method createInstance (line 29) | @Override
class MySpringShiroFilter (line 63) | private static final class MySpringShiroFilter extends AbstractShiroFi...
method MySpringShiroFilter (line 64) | protected MySpringShiroFilter(WebSecurityManager webSecurityManager,...
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/filters/JwtFilter.java
class JwtFilter (line 26) | @Slf4j
method JwtFilter (line 35) | public JwtFilter(){}
method JwtFilter (line 36) | public JwtFilter(boolean allowOrigin){
method isAccessAllowed (line 48) | @Override
method executeLogin (line 72) | @Override
method preHandle (line 91) | @Override
method afterCompletion (line 127) | @Override
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/filters/ResourceCheckFilter.java
class ResourceCheckFilter (line 16) | @Slf4j
method getErrorUrl (line 21) | public String getErrorUrl() {
method setErrorUrl (line 25) | public void setErrorUrl(String errorUrl) {
method isAccessAllowed (line 38) | @Override
method onAccessDenied (line 55) | @Override
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ignore/IgnoreAuthPostProcessor.java
class IgnoreAuthPostProcessor (line 23) | @Slf4j
method afterPropertiesSet (line 32) | @Override
method processIgnoreAuthMethod (line 60) | private List<String> processIgnoreAuthMethod(Class<?> clazz, Method me...
method rebuildUrl (line 82) | private List<String> rebuildUrl(String[] bases, String[] uris) {
method prefix (line 102) | private String prefix(String seg) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ignore/InMemoryIgnoreAuth.java
class InMemoryIgnoreAuth (line 14) | public class InMemoryIgnoreAuth {
method InMemoryIgnoreAuth (line 18) | public InMemoryIgnoreAuth() {}
method set (line 20) | public static void set(List<String> list) {
method get (line 24) | public static List<String> get() {
method clear (line 28) | public static void clear() {
method contains (line 32) | public static boolean contains(String url) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/aspect/SignatureCheckAspect.java
class SignatureCheckAspect (line 29) | @Aspect
method signatureCheckPointCut (line 42) | @Pointcut("@annotation(org.jeecg.config.sign.annotation.SignatureCheck)")
method doSignatureValidation (line 49) | @Before("signatureCheckPointCut()")
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/interceptor/SignAuthConfiguration.java
class SignAuthConfiguration (line 20) | @Configuration
method signAuthInterceptor (line 25) | @Bean
method addInterceptors (line 30) | @Override
method requestBodyReserveFilter (line 46) | @Bean
method reqBodyFilterRegistrationBean (line 51) | @Bean
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/interceptor/SignAuthInterceptor.java
class SignAuthInterceptor (line 27) | @Slf4j
method preHandle (line 34) | @Override
method validateSignature (line 60) | public void validateSignature(HttpServletRequest request) throws Illeg...
method validateSignature (line 70) | public void validateSignature(HttpServletRequest request, Object bodyP...
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/util/BodyReaderHttpServletRequestWrapper.java
class BodyReaderHttpServletRequestWrapper (line 17) | public class BodyReaderHttpServletRequestWrapper extends HttpServletRequ...
method BodyReaderHttpServletRequestWrapper (line 21) | public BodyReaderHttpServletRequestWrapper(HttpServletRequest request) {
method getBodyString (line 34) | public String getBodyString(final ServletRequest request) {
method cloneInputStream (line 55) | public InputStream cloneInputStream(ServletInputStream inputStream) {
method getReader (line 71) | @Override
method getInputStream (line 77) | @Override
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/util/HttpUtils.java
class HttpUtils (line 28) | @Slf4j
method getAllParams (line 38) | public static SortedMap<String, String> getAllParams(HttpServletReques...
method getAllParams (line 93) | public static SortedMap<String, String> getAllParams(String url, Strin...
method getAllRequestParam (line 136) | public static Map<String, String> getAllRequestParam(final HttpServlet...
method getAllRequestParam (line 155) | public static Map<String, String> getAllRequestParam(final byte[] body...
method getUrlParams (line 169) | public static Map<String, String> getUrlParams(HttpServletRequest requ...
method getUrlParams (line 196) | public static Map<String, String> getUrlParams(String queryString) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/util/SignUtil.java
class SignUtil (line 27) | @Slf4j
method verifySign (line 36) | public static boolean verifySign(SortedMap<String, String> params,Stri...
method getParamsSign (line 51) | public static String getParamsSign(SortedMap<String, String> params) {
method generateRequestSign (line 75) | public static String generateRequestSign(String url, Map<String, Objec...
method parseQueryString (line 105) | private static Map<String, String> parseQueryString(String url) {
method mergeObject (line 153) | private static Map<String, String> mergeObject(Map<String, String> tar...
method getSignatureSecret (line 181) | private static String getSignatureSecret() {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/tencent/JeecgTencent.java
class JeecgTencent (line 11) | @Data
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/vo/BaiduApi.java
class BaiduApi (line 8) | @Data
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/vo/DomainUrl.java
class DomainUrl (line 9) | @Data
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/vo/Elasticsearch.java
class Elasticsearch (line 7) | public class Elasticsearch {
method getClusterNodes (line 11) | public String getClusterNodes() {
method setClusterNodes (line 15) | public void setClusterNodes(String clusterNodes) {
method isCheckEnabled (line 19) | public boolean isCheckEnabled() {
method setCheckEnabled (line 23) | public void setCheckEnabled(boolean checkEnabled) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/vo/Firewall.java
class Firewall (line 9) | public class Firewall {
method getEnableLoginCaptcha (line 42) | public Boolean getEnableLoginCaptcha() {
method setEnableLoginCaptcha (line 46) | public void setEnableLoginCaptcha(Boolean enableLoginCaptcha) {
method getEnableDefaultPwdCheck (line 50) | public Boolean getEnableDefaultPwdCheck() {
method setEnableDefaultPwdCheck (line 54) | public void setEnableDefaultPwdCheck(Boolean enableDefaultPwdCheck) {
method getDataSourceSafe (line 58) | public Boolean getDataSourceSafe() {
method setDataSourceSafe (line 62) | public void setDataSourceSafe(Boolean dataSourceSafe) {
method getLowCodeMode (line 66) | public String getLowCodeMode() {
method setLowCodeMode (line 70) | public void setLowCodeMode(String lowCodeMode) {
method getDisableSelectAll (line 74) | public Boolean getDisableSelectAll() {
method setDisableSelectAll (line 78) | public void setDisableSelectAll(Boolean disableSelectAll) {
method getIsConcurrent (line 82) | public Boolean getIsConcurrent() {
method setIsConcurrent (line 86) | public void setIsConcurrent(Boolean isConcurrent) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/vo/GaoDeApi.java
class GaoDeApi (line 11) | @Data
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/vo/JeecgMinio.java
class JeecgMinio (line 5) | @Data
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/vo/JeecgOSS.java
class JeecgOSS (line 5) | @Data
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/vo/Path.java
class Path (line 10) | public class Path {
method getUpload (line 14) | public String getUpload() {
method setUpload (line 18) | public void setUpload(String upload) {
method getWebapp (line 22) | public String getWebapp() {
method setWebapp (line 26) | public void setWebapp(String webapp) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/vo/Shiro.java
class Shiro (line 8) | public class Shiro {
method getExcludeUrls (line 11) | public String getExcludeUrls() {
method setExcludeUrls (line 15) | public void setExcludeUrls(String excludeUrls) {
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/vo/WeiXinPay.java
class WeiXinPay (line 5) | @Data
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/mapper/BaseCommonMapper.java
type BaseCommonMapper (line 11) | public interface BaseCommonMapper {
method saveLog (line 17) | @InterceptorIgnore(illegalSql = "true", tenantLine = "true")
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/service/BaseCommonService.java
type BaseCommonService (line 10) | public interface BaseCommonService {
method addLog (line 16) | void addLog(LogDTO logDTO);
method addLog (line 25) | void addLog(String logContent, Integer logType, Integer operateType, L...
method addLog (line 33) | void addLog(String logContent, Integer logType, Integer operateType);
FILE: jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/service/impl/BaseCommonServiceImpl.java
class BaseCommonServiceImpl (line 25) | @Service
method addLog (line 32) | @Override
method addLog (line 47) | @Override
method addLog (line 96) | @Override
FILE: jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/sqlparse/TestIpUtil.java
class TestIpUtil (line 14) | public class TestIpUtil {
method main (line 15) | public static void main(String[] args) {
method test (line 24) | @Test
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/doc/RAG/main.py
class FixedMCPServer (line 41) | class FixedMCPServer:
method __init__ (line 44) | def __init__(self):
method initialize_tools (line 48) | def initialize_tools(self):
method handle_request (line 112) | def handle_request(self, request: Dict[str, Any]) -> Dict[str, Any]:
method handle_tools_list (line 137) | def handle_tools_list(self) -> Dict[str, Any]:
method handle_tool_call (line 145) | def handle_tool_call(self, params: Dict[str, Any]) -> Dict[str, Any]:
method execute_get_time (line 179) | def execute_get_time(self, args: Dict[str, Any]) -> Dict[str, Any]:
method execute_text_process (line 213) | def execute_text_process(self, args: Dict[str, Any]) -> Dict[str, Any]:
method execute_format_data (line 254) | def execute_format_data(self, args: Dict[str, Any]) -> Dict[str, Any]:
method create_success_response (line 304) | def create_success_response(self, data: Dict[str, Any]) -> Dict[str, A...
method create_error_response (line 321) | def create_error_response(self, code: int, message: str) -> Dict[str, ...
function safe_json_dump (line 331) | def safe_json_dump(data: Dict[str, Any]) -> str:
function main (line 340) | def main():
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/consts/AiAppConsts.java
class AiAppConsts (line 9) | public class AiAppConsts {
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/consts/Prompts.java
class Prompts (line 8) | public class Prompts {
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/controller/AiragAppController.java
class AiragAppController (line 35) | @RestController
method queryPageList (line 54) | @GetMapping(value = "/list")
method edit (line 71) | @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestM...
method release (line 87) | @RequestMapping(value = "/release", method = RequestMethod.POST)
method delete (line 110) | @DeleteMapping(value = "/delete")
method queryById (line 134) | @IgnoreAuth
method debugApp (line 153) | @PostMapping(value = "/debug")
method generatePrompt (line 166) | @GetMapping(value = "/prompt/generate")
method generatePromptSse (line 179) | @PostMapping(value = "/prompt/generate")
method generatePromptByAppIdSse (line 190) | @PostMapping(value = "/prompt/generateMemoryByAppId")
method saveArticleWrite (line 199) | @PostMapping("/save/article/write")
method deleteArticleWrite (line 208) | @DeleteMapping("/delete/article/write")
method listArticleWrite (line 218) | @GetMapping("/list/article/write")
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/controller/AiragChatController.java
class AiragChatController (line 29) | @Slf4j
method send (line 54) | @IgnoreAuth
method sendByGet (line 71) | @GetMapping(value = "/send")
method initChat (line 87) | @IgnoreAuth
method getConversations (line 100) | @IgnoreAuth
method getConversationsByType (line 113) | @IgnoreAuth
method deleteConversation (line 127) | @IgnoreAuth
method deleteConversationByType (line 141) | @IgnoreAuth
method updateConversationTitle (line 156) | @IgnoreAuth
method getMessages (line 169) | @IgnoreAuth
method clearMessage (line 183) | @IgnoreAuth
method clearMessageByType (line 196) | @IgnoreAuth
method receiveByRequestId (line 211) | @IgnoreAuth
method stop (line 226) | @IgnoreAuth
method upload (line 244) | @IgnoreAuth
method genAiPoster (line 268) | @PostMapping("/genAiPoster")
method genAiWriter (line 281) | @PostMapping("/genAiWriter")
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/entity/AiragApp.java
class AiragApp (line 29) | @Data
method getKnowIds (line 212) | public List<String> getKnowIds() {
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/mapper/AiragAppMapper.java
type AiragAppMapper (line 13) | public interface AiragAppMapper extends BaseMapper<AiragApp> {
method getByIdIgnoreTenant (line 22) | @InterceptorIgnore(tenantLine = "true")
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/IAiragAppService.java
type IAiragAppService (line 14) | public interface IAiragAppService extends IService<AiragApp> {
method generatePrompt (line 24) | Object generatePrompt(String prompt,boolean blocking);
method generateMemoryByAppId (line 34) | Object generateMemoryByAppId(String variables, String memoryId, boolea...
method saveArticleWrite (line 41) | void saveArticleWrite(AiArticleWriteVersionVo aiWriteVersionVo);
method listArticleWrite (line 48) | List<AiArticleWriteVersionVo> listArticleWrite();
method deleteArticleWrite (line 55) | void deleteArticleWrite(String version);
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/IAiragChatService.java
type IAiragChatService (line 16) | public interface IAiragChatService {
method send (line 26) | SseEmitter send(ChatSendParams chatSendParams);
method debugApp (line 37) | SseEmitter debugApp(AppDebugParams appDebugParams);
method stop (line 47) | Result<?> stop(String requestId);
method getConversations (line 57) | Result<?> getConversations(String appId);
method getMessages (line 68) | Result<?> getMessages(String conversationId, String sessionType);
method deleteConversation (line 79) | Result<?> deleteConversation(String conversationId, String sessionType);
method updateConversationTitle (line 88) | Result<?> updateConversationTitle(ChatConversation updateTitleParams);
method clearMessage (line 98) | Result<?> clearMessage(String conversationId, String sessionType);
method initChat (line 108) | Result<?> initChat(String appId);
method receiveByRequestId (line 117) | SseEmitter receiveByRequestId(String requestId);
method getConversationsByType (line 125) | Result<?> getConversationsByType(String sessionType);
method genAiPoster (line 132) | String genAiPoster(ChatSendParams chatSendParams);
method genAiWriter (line 140) | SseEmitter genAiWriter(AiWriteGenerateVo chatSendParams);
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/IAiragVariableService.java
type IAiragVariableService (line 6) | public interface IAiragVariableService {
method updateVariable (line 15) | void updateVariable(String userId, String appId, String name, String v...
method additionalPrompt (line 24) | String additionalPrompt(String username, AiragApp app);
method initVariable (line 34) | void initVariable(String userId, String appId, String name, String def...
method addUpdateVariableTool (line 43) | void addUpdateVariableTool(AiragApp aiApp, String username, AIChatPara...
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/impl/AiragAppServiceImpl.java
class AiragAppServiceImpl (line 57) | @Slf4j
method generatePrompt (line 70) | @Override
method generateMemoryByAppId (line 94) | @Override
method startSseChat (line 172) | private SseEmitter startSseChat(List<ChatMessage> messages, AIChatPara...
method closeSSE (line 249) | private static void closeSSE(SseEmitter emitter, EventData eventData) {
method listArticleWrite (line 267) | @Override
method saveArticleWrite (line 283) | @Override
method deleteArticleWrite (line 305) | @Override
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/impl/AiragChatServiceImpl.java
class AiragChatServiceImpl (line 82) | @Service
method send (line 126) | @Override
method debugApp (line 164) | @Override
method stop (line 193) | @Override
method closeSSE (line 215) | private static void closeSSE(SseEmitter emitter, EventData eventData) {
method getConversations (line 242) | @Override
method getMessages (line 294) | @Override
method clearMessage (line 342) | @Override
method initChat (line 361) | @Override
method receiveByRequestId (line 412) | @Override
method createSSE (line 489) | private static SseEmitter createSSE(String requestId) {
method deleteConversation (line 502) | @Override
method updateConversationTitle (line 520) | @Override
method getConversationCacheKey (line 550) | private String getConversationCacheKey(String conversationId, HttpServ...
method getConversationDirCacheKey (line 572) | private String getConversationDirCacheKey(HttpServletRequest httpReque...
method getOrCreateChatConversation (line 599) | @NotNull
method createConversation (line 627) | @NotNull
method saveChatConversation (line 644) | private void saveChatConversation(ChatConversation chatConversation, S...
method saveChatConversation (line 656) | private void saveChatConversation(ChatConversation chatConversation, b...
method collateMessage (line 688) | private List<ChatMessage> collateMessage(ChatConversation conversation...
method appendMessage (line 762) | private void appendMessage(List<ChatMessage> messages, ChatMessage mes...
method appendMessage (line 766) | private void appendMessage(List<ChatMessage> messages, ChatMessage mes...
method doChat (line 849) | @NotNull
method genImageChat (line 933) | private SseEmitter genImageChat(SseEmitter emitter, ChatSendParams sen...
method sendWithFlow (line 997) | private void sendWithFlow(String requestId, String flowId, ChatConvers...
method sendWithAppChat (line 1097) | private void sendWithAppChat(String requestId, List<ChatMessage> messa...
method addPluginToParams (line 1211) | private void addPluginToParams(AIChatParams aiChatParams, Map<String, ...
method sendWithDefault (line 1244) | private void sendWithDefault(String requestId, ChatConversation chatCo...
method sendThinkEnd (line 1447) | private void sendThinkEnd(String requestId, ChatConversation chatConve...
method sendMessage2Client (line 1468) | private static void sendMessage2Client(SseEmitter emitter, EventData e...
class ChatResult (line 1491) | private static class ChatResult {
method ChatResult (line 1495) | public ChatResult(SseEmitter emitter, AiragModel chatModel) {
method summaryConversationTitle (line 1516) | protected void summaryConversationTitle(ChatConversation chatConversat...
method getUsername (line 1571) | private String getUsername(HttpServletRequest httpRequest) {
method printChatDuration (line 1597) | private static void printChatDuration(String requestId,String message) {
method getConversationsByType (line 1611) | @Override
method saveVariables (line 1661) | private void saveVariables(AiragApp app) {
method genAiPoster (line 1699) | @Override
method uploadImage (line 1725) | private String uploadImage(Map<String, Object> map) {
method buildContentWithFiles (line 1775) | private String buildContentWithFiles(String content, List<String> file...
method parseFilesToText (line 1798) | private String parseFilesToText(List<String> files) {
method ensureLocalFile (line 1855) | private File ensureLocalFile(String fileRef, String fileName) {
method genAiWriter (line 1878) | @Override
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/impl/AiragVariableServiceImpl.java
class AiragVariableServiceImpl (line 30) | @Service
method initVariable (line 47) | @Override
method additionalPrompt (line 63) | @Override
method updateVariable (line 117) | @Override
method addUpdateVariableTool (line 134) | @Override
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/vo/AiArticleWriteVersionVo.java
class AiArticleWriteVersionVo (line 11) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/vo/AiWriteGenerateVo.java
class AiWriteGenerateVo (line 11) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/vo/AppDebugParams.java
class AppDebugParams (line 12) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/vo/AppVariableVo.java
class AppVariableVo (line 13) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/vo/ChatConversation.java
class ChatConversation (line 16) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/vo/ChatSendParams.java
class ChatSendParams (line 14) | @NoArgsConstructor
method ChatSendParams (line 18) | public ChatSendParams(String content, String conversationId, String to...
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/demo/JimuDataReader.java
class JimuDataReader (line 22) | @Component("jimuDataReader")
method process (line 27) | @Override
method readExcelData (line 56) | public static Map<String, Object> readExcelData(File file) throws Exce...
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/demo/TestAiragEnhance.java
class TestAiragEnhance (line 15) | @Slf4j
method process (line 18) | @Override
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/config/EmbedStoreConfigBean.java
class EmbedStoreConfigBean (line 14) | @NoArgsConstructor
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/config/KnowConfigBean.java
class KnowConfigBean (line 14) | @NoArgsConstructor
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/consts/FlowPluginContent.java
type FlowPluginContent (line 9) | public interface FlowPluginContent {
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/consts/LLMConsts.java
class LLMConsts (line 13) | public class LLMConsts {
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/controller/AiragBaseApiController.java
class AiragBaseApiController (line 16) | @RestController("airagBaseApiController")
method knowledgeWriteTextDocument (line 22) | @PostMapping("/airag/api/knowledgeWriteTextDocument")
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/controller/AiragKnowledgeController.java
class AiragKnowledgeController (line 41) | @RestController
method queryPageList (line 63) | @GetMapping(value = "/list")
method add (line 82) | @PostMapping(value = "/add")
method edit (line 101) | @Transactional(rollbackFor = Exception.class)
method rebuild (line 129) | @PutMapping(value = "/rebuild")
method delete (line 147) | @Transactional(rollbackFor = Exception.class)
method queryById (line 175) | @GetMapping(value = "/queryById")
method queryDocumentPageList (line 195) | @GetMapping(value = "/doc/list")
method addDocument (line 215) | @PostMapping(value = "/doc/edit")
method importDocumentFromZip (line 228) | @PostMapping(value = "/doc/import/zip")
method importDocumentTaskList (line 242) | @GetMapping(value = "/doc/import/task/list")
method rebuildDocument (line 255) | @PutMapping(value = "/doc/rebuild")
method deleteDocumentBatch (line 269) | @Transactional(rollbackFor = Exception.class)
method deleteDocumentAll (line 297) | @Transactional(rollbackFor = Exception.class)
method hitTest (line 326) | @GetMapping(value = "/embedding/hitTest/{knowId}")
method embeddingSearch (line 346) | @GetMapping(value = "/embedding/search")
method queryBatchByIds (line 363) | @GetMapping(value = "/query/batch/byId")
method add (line 376) | @Operation(summary = "添加记忆")
method pluginQuery (line 405) | @Operation(summary = "查询记忆")
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/controller/AiragMcpController.java
class AiragMcpController (line 27) | @Tag(name = "MCP")
method queryPageList (line 44) | @Operation(summary = "MCP-分页列表查询")
method save (line 63) | @Operation(summary = "MCP-保存")
method saveAndSync (line 79) | @Operation(summary = "MCP-保存并同步")
method sync (line 101) | @Operation(summary = "MCP-同步MCP信息")
method toggleStatus (line 116) | @Operation(summary = "MCP-启用/禁用MCP信息")
method saveTools (line 131) | @Operation(summary = "MCP-保存插件工具")
method delete (line 143) | @Operation(summary = "MCP-通过id删除")
method queryById (line 156) | @Operation(summary = "MCP-通过id查询")
method exportXls (line 173) | @RequestMapping(value = "/exportXls")
method importExcel (line 186) | @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/controller/AiragModelController.java
class AiragModelController (line 41) | @Tag(name = "AiRag模型配置")
method queryPageList (line 61) | @GetMapping(value = "/list")
method add (line 75) | @PostMapping(value = "/add")
method edit (line 98) | @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestM...
method delete (line 111) | @DeleteMapping(value = "/delete")
method queryById (line 135) | @GetMapping(value = "/queryById")
method exportXls (line 150) | @RequestMapping(value = "/exportXls")
method importExcel (line 162) | @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
method test (line 167) | @PostMapping(value = "/test")
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/document/TikaDocumentParser.java
class TikaDocumentParser (line 46) | public class TikaDocumentParser {
method TikaDocumentParser (line 60) | public TikaDocumentParser() {
method TikaDocumentParser (line 65) | public TikaDocumentParser(Supplier<Parser> parserSupplier, Supplier<Co...
method parse (line 72) | public Document parse(File file) {
method parseDocExcelPdfUsingApachePoi (line 102) | public Document parseDocExcelPdfUsingApachePoi(File file) {
method tryExtractDocOrDocx (line 118) | private static Document tryExtractDocOrDocx(InputStream inputStream) t...
method extractByTika (line 141) | private Document extractByTika(InputStream inputStream) {
method extractTextFromDocx (line 173) | @Deprecated
method extractTextFromDoc (line 194) | @Deprecated
method extractTextFromExcel (line 212) | @Deprecated
method extractTextFromPptx (line 240) | @Deprecated
method extractTextFromPpt (line 269) | @Deprecated
method toByteArray (line 284) | private static byte[] toByteArray(InputStream inputStream) throws IOEx...
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/dto/SaveToolsDTO.java
class SaveToolsDTO (line 11) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/entity/AiragKnowledge.java
class AiragKnowledge (line 22) | @Schema(description="AIRag知识库")
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/entity/AiragKnowledgeDoc.java
class AiragKnowledgeDoc (line 27) | @Schema(description="airag知识库文档")
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/entity/AiragMcp.java
class AiragMcp (line 22) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/entity/AiragModel.java
class AiragModel (line 30) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/handler/AIChatHandler.java
class AIChatHandler (line 47) | @Slf4j
method completions (line 78) | @Override
method completions (line 96) | @Override
method completions (line 116) | public String completions(AiragModel airagModel, List<ChatMessage> mes...
method completionsByDefaultModel (line 167) | @Override
method chat (line 181) | @Override
method chat (line 196) | @Override
method chat (line 216) | private TokenStream chat(AiragModel airagModel, List<ChatMessage> mess...
method chatByDefaultModel (line 230) | @Override
method mergeParams (line 244) | private AIChatParams mergeParams(AiragModel airagModel, AIChatParams p...
method buildPlugins (line 320) | private void buildPlugins(AIChatParams params) {
method buildUserMessage (line 384) | @Override
method buildImageContents (line 397) | @Override
method imageGenerate (line 435) | @Override
method imageGenerate (line 451) | public List<Map<String, Object>> imageGenerate(AiragModel airagModel, ...
method imageEdit (line 483) | @Override
method getFirstImageBase64 (line 513) | private List<String> getFirstImageBase64(List<String> images) {
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/handler/CommandExecUtil.java
class CommandExecUtil (line 17) | @Slf4j
method execCommand (line 31) | public static String execCommand(String command, String[] args) throws...
method execCommand (line 46) | public static String execCommand(String[] command, String[] args) thro...
class InputStreamRunnable (line 112) | static class InputStreamRunnable implements Runnable {
method InputStreamRunnable (line 116) | public InputStreamRunnable(InputStream is, String _type) {
method run (line 124) | @SuppressWarnings("unused")
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/handler/EmbeddingHandler.java
class EmbeddingHandler (line 68) | @Slf4j
method embeddingDocument (line 152) | public Map<String, Object> embeddingDocument(String knowId, AiragKnowl...
method embeddingSearch (line 240) | @Override
method searchEmbedding (line 310) | public List<Map<String, Object>> searchEmbedding(String knowId, String...
method getQueryRouter (line 380) | @Override
method deleteEmbedDocsByKnowId (line 441) | public void deleteEmbedDocsByKnowId(String knowId, String modelId) {
method deleteEmbedDocsByDocIds (line 458) | public void deleteEmbedDocsByDocIds(List<String> docIds, String modelI...
method getEmbedModelData (line 475) | private AiragModel getEmbedModelData(String modelId) {
method getEmbedStore (line 491) | private EmbeddingStore<TextSegment> getEmbedStore(AiragModel model) {
method buildModelOptions (line 550) | public static AiModelOptions buildModelOptions(AiragModel model) {
method parseFile (line 572) | private String parseFile(AiragKnowledgeDoc doc) {
method replaceImageUrl (line 616) | @NotNull
method parseFileByMinerU (line 653) | private void parseFileByMinerU(AiragKnowledgeDoc doc) {
method ensureFile (line 710) | @NotNull
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/handler/JeecgToolsProvider.java
type JeecgToolsProvider (line 15) | public interface JeecgToolsProvider {
method getDefaultTools (line 23) | public Map<ToolSpecification, ToolExecutor> getDefaultTools();
class JeecgLlmTools (line 30) | @Getter
method JeecgLlmTools (line 35) | public JeecgLlmTools(ToolSpecification toolSpecification, ToolExecut...
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/handler/PluginToolBuilder.java
class PluginToolBuilder (line 34) | @Slf4j
method buildTools (line 43) | public static Map<ToolSpecification, ToolExecutor> buildTools(AiragMcp...
method buildToolSpecification (line 103) | private static ToolSpecification buildToolSpecification(JSONObject too...
method buildToolExecutor (line 196) | private static ToolExecutor buildToolExecutor(JSONObject toolConfig, S...
method buildUrl (line 253) | private static String buildUrl(String baseUrl, String path, JSONArray ...
method buildHttpHeaders (line 291) | private static HttpHeaders buildHttpHeaders(JSONArray parameters, JSON...
method buildUrlVariables (line 331) | private static JSONObject buildUrlVariables(JSONArray parameters, JSON...
method buildRequestBody (line 372) | private static Object buildRequestBody(JSONArray parameters, JSONObjec...
method parseHttpMethod (line 470) | private static HttpMethod parseHttpMethod(String method) {
method parseHeaders (line 483) | private static Map<String, String> parseHeaders(String headersStr) {
method applyAuthConfig (line 513) | private static void applyAuthConfig(Map<String, String> headersMap, St...
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/mapper/AiragKnowledgeDocMapper.java
type AiragKnowledgeDocMapper (line 13) | public interface AiragKnowledgeDocMapper extends BaseMapper<AiragKnowled...
method deleteByMainId (line 21) | public boolean deleteByMainId(@Param("mainId") String mainId);
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/mapper/AiragKnowledgeMapper.java
type AiragKnowledgeMapper (line 13) | public interface AiragKnowledgeMapper extends BaseMapper<AiragKnowledge> {
method getByIdIgnoreTenant (line 23) | @InterceptorIgnore(tenantLine = "true")
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/mapper/AiragMcpMapper.java
type AiragMcpMapper (line 12) | public interface AiragMcpMapper extends BaseMapper<AiragMcp> {
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/mapper/AiragModelMapper.java
type AiragModelMapper (line 13) | public interface AiragModelMapper extends BaseMapper<AiragModel> {
method getByIdIgnoreTenant (line 23) | @InterceptorIgnore(tenantLine = "true")
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/service/IAiragFlowPluginService.java
type IAiragFlowPluginService (line 11) | public interface IAiragFlowPluginService {
method getFlowsToPlugin (line 18) | Map<String, Object> getFlowsToPlugin(String flowIds);
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/service/IAiragKnowledgeDocService.java
type IAiragKnowledgeDocService (line 16) | public interface IAiragKnowledgeDocService extends IService<AiragKnowled...
method rebuildDocument (line 26) | Result<?> rebuildDocument(String docIds);
method editDocument (line 36) | Result<?> editDocument(AiragKnowledgeDoc airagKnowledgeDoc);
method rebuildDocumentByKnowId (line 47) | Result<?> rebuildDocumentByKnowId(String knowId);
method removeByKnowIds (line 58) | Result<?> removeByKnowIds(List<String> knowIds);
method removeDocByIds (line 68) | Result<?> removeDocByIds(List<String> docIds);
method deleteAllByKnowId (line 76) | Result<?> deleteAllByKnowId(String knowId);
method importDocumentFromZip (line 86) | Result<?> importDocumentFromZip(String knowId, MultipartFile file);
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/service/IAiragKnowledgeService.java
type IAiragKnowledgeService (line 15) | public interface IAiragKnowledgeService extends IService<AiragKnowledge> {
method getPluginMemory (line 23) | Map<String, Object> getPluginMemory(String memoryId);
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/service/IAiragMcpService.java
type IAiragMcpService (line 13) | public interface IAiragMcpService extends IService<AiragMcp> {
method edit (line 15) | Result<String> edit(AiragMcp airagMcp);
method sync (line 17) | Result<?> sync(String id);
method toggleStatus (line 20) | Result<?> toggleStatus(String id, String action);
method saveTools (line 31) | Result<String> saveTools(String id, String tools);
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/service/IAiragModelService.java
type IAiragModelService (line 15) | public interface IAiragModelService extends IService<AiragModel> {
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/service/impl/AiragBaseApiImpl.java
class AiragBaseApiImpl (line 18) | @Slf4j
method knowledgeWriteTextDocument (line 26) | @Override
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/service/impl/AiragFlowPluginServiceImpl.java
class AiragFlowPluginServiceImpl (line 35) | @Service
method getFlowsToPlugin (line 42) | @Override
method buildMetadata (line 113) | private String buildMetadata(int toolCount, String tenantId) {
method buildParameter (line 133) | private String buildParameter(JSONArray parameter, JSONArray outParams...
method getInputParameter (line 158) | private JSONArray getInputParameter(AiragFlow flow, SubFlowResult subF...
method getOutputParameter (line 202) | private JSONArray getOutputParameter(AiragFlow flow, SubFlowResult sub...
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/service/impl/AiragKnowledgeDocServiceImpl.java
class AiragKnowledgeDocServiceImpl (line 54) | @Slf4j
method editDocument (line 93) | @Transactional(rollbackFor = {Exception.class})
method rebuildDocumentByKnowId (line 114) | @Override
method rebuildDocument (line 125) | @Transactional(rollbackFor = {java.lang.Exception.class})
method handleDocBuildFailed (line 201) | private void handleDocBuildFailed(AiragKnowledgeDoc doc, String failed...
method removeByKnowIds (line 217) | @Override
method removeDocByIds (line 239) | @Override
method deleteAllByKnowId (line 272) | @Override
method importDocumentFromZip (line 290) | @Transactional(rollbackFor = {java.lang.Exception.class})
method unzipFile (line 368) | public static void unzipFile(String zipFilePath, String destDir, Consu...
method unzipFile (line 383) | private static void unzipFile(Path zipFilePath, Path targetDir, Consum...
method safeResolve (line 437) | private static Path safeResolve(Path targetDir, String entryName) thro...
method copyLimited (line 456) | private static long copyLimited(InputStream in, OutputStream out, long...
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/service/impl/AiragKnowledgeServiceImpl.java
class AiragKnowledgeServiceImpl (line 33) | @Slf4j
method getPluginMemory (line 37) | @Override
method getKnowledgeToPlugin (line 54) | public Map<String, Object> getKnowledgeToPlugin(String knowledgeId, St...
method buildMetadata (line 101) | private String buildMetadata(String tenantId) {
method buildAddMemoryTool (line 117) | private JSONObject buildAddMemoryTool(String knowId, String descr) {
method buildQueryMemoryTool (line 174) | private JSONObject buildQueryMemoryTool(String knowId, String descr) {
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/service/impl/AiragMcpServiceImpl.java
class AiragMcpServiceImpl (line 38) | @Slf4j
method edit (line 56) | @Override
method sync (line 114) | @Override
method mcpHttpCreate (line 255) | private McpClient mcpHttpCreate(String endpoint, Map<String, String> h...
method safeWriteJson (line 272) | private String safeWriteJson(Object obj) {
method convertToolSpec (line 281) | private Map<String, Object> convertToolSpec(ToolSpecification spec) {
method extractDescription (line 313) | private String extractDescription(Object schema) {
method toggleStatus (line 336) | @Override
method saveTools (line 369) | @Override
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/service/impl/AiragModelServiceImpl.java
class AiragModelServiceImpl (line 15) | @Service
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/ocr/controller/AiOcrController.java
class AiOcrController (line 18) | @RestController
method list (line 27) | @GetMapping("/list")
method add (line 40) | @PostMapping("/add")
method updateById (line 56) | @PutMapping("/edit")
method deleteById (line 73) | @DeleteMapping("/deleteById")
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/ocr/entity/AiOcr.java
class AiOcr (line 11) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/prompts/consts/AiPromptsConsts.java
class AiPromptsConsts (line 7) | public class AiPromptsConsts {
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/prompts/controller/AiragExtDataController.java
class AiragExtDataController (line 33) | @Tag(name="airag_ext_data")
method queryPageList (line 51) | @Operation(summary="airag_ext_data-分页列表查询")
method getTrackList (line 72) | @Operation(summary="airag_ext_data-分页列表查询")
method add (line 95) | @AutoLog(value = "airag_ext_data-添加")
method edit (line 110) | @AutoLog(value = "airag_ext_data-编辑")
method delete (line 124) | @AutoLog(value = "airag_ext_data-通过id删除")
method deleteBatch (line 138) | @AutoLog(value = "airag_ext_data-批量删除")
method queryById (line 153) | @Operation(summary="airag_ext_data-通过id查询")
method queryTrackById (line 169) | @Operation(summary="airag_ext_data-通过id查询")
method debugEvaluator (line 186) | @PostMapping(value = "/evaluator/debug")
method exportXls (line 196) | @RequestMapping(value = "/exportXls")
method importExcel (line 208) | @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/prompts/controller/AiragPromptsController.java
class AiragPromptsController (line 30) | @Tag(name="airag_prompts")
method queryPageList (line 48) | @Operation(summary="airag_prompts-分页列表查询")
method add (line 66) | @AutoLog(value = "airag_prompts-添加")
method edit (line 82) | @AutoLog(value = "airag_prompts-编辑")
method delete (line 96) | @AutoLog(value = "airag_prompts-通过id删除")
method deleteBatch (line 110) | @AutoLog(value = "airag_prompts-批量删除")
method queryById (line 125) | @Operation(summary="airag_prompts-通过id查询")
method promptExperiment (line 140) | @PostMapping(value = "/experiment")
method exportXls (line 150) | @RequestMapping(value = "/exportXls")
method importExcel (line 162) | @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/prompts/entity/AiragExtData.java
class AiragExtData (line 28) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/prompts/entity/AiragPrompts.java
class AiragPrompts (line 28) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/prompts/mapper/AiragExtDataMapper.java
type AiragExtDataMapper (line 15) | public interface AiragExtDataMapper extends BaseMapper<AiragExtData> {
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/prompts/mapper/AiragPromptsMapper.java
type AiragPromptsMapper (line 15) | public interface AiragPromptsMapper extends BaseMapper<AiragPrompts> {
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/prompts/service/IAiragExtDataService.java
type IAiragExtDataService (line 16) | public interface IAiragExtDataService extends IService<AiragExtData> {
method debugEvaluator (line 18) | Result debugEvaluator(AiragDebugVo debugVo);
method queryTrackById (line 20) | List<AiragExtData> queryTrackById(String id);
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/prompts/service/IAiragPromptsService.java
type IAiragPromptsService (line 15) | public interface IAiragPromptsService extends IService<AiragPrompts> {
method promptExperiment (line 17) | Result<?> promptExperiment(AiragExperimentVo experimentVo, HttpServlet...
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/prompts/service/impl/AiragExtDataServiceImpl.java
class AiragExtDataServiceImpl (line 31) | @Service("airagExtDataServiceImpl")
method debugEvaluator (line 37) | @Override
method queryTrackById (line 89) | @Override
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/prompts/service/impl/AiragPromptsServiceImpl.java
class AiragPromptsServiceImpl (line 43) | @Slf4j
method promptExperiment (line 68) | @Override
method getPromptAnswer (line 232) | public String getPromptAnswer(AiragPrompts airagPrompts, JSONObject qu...
method getAnswerScore (line 295) | public String getAnswerScore(String promptAnswer, JSONObject questions...
method findDataType (line 369) | public static String findDataType(JSONArray columns, JSONObject variab...
method getFileAccessHttpUrl (line 387) | private String getFileAccessHttpUrl(HttpServletRequest request,String ...
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/prompts/vo/AiragDebugVo.java
class AiragDebugVo (line 24) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/prompts/vo/AiragExperimentVo.java
class AiragExperimentVo (line 15) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/wordtpl/consts/WordTitleEnum.java
type WordTitleEnum (line 11) | @Getter
method WordTitleEnum (line 21) | WordTitleEnum(String code, String name) {
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/wordtpl/controller/EoaWordTemplateController.java
class EoaWordTemplateController (line 39) | @Tag(name = "word模版管理")
method queryPageList (line 59) | @Operation(summary = "word模版管理-分页列表查询")
method add (line 77) | @AutoLog(value = "word模版管理-添加")
method edit (line 96) | @AutoLog(value = "word模版管理-编辑")
method delete (line 115) | @AutoLog(value = "word模版管理-通过id删除")
method deleteBatch (line 130) | @AutoLog(value = "word模版管理-批量删除")
method queryById (line 146) | @Operation(summary = "word模版管理-通过id查询")
method downloadTemplate (line 164) | @GetMapping(value = "/download")
method parseWOrdFile (line 194) | @PostMapping(value = "/parse/file")
method generateWord (line 214) | @PostMapping(value = "/generate/word")
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/wordtpl/dto/MergeColDTO.java
class MergeColDTO (line 10) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/wordtpl/dto/WordImageDTO.java
class WordImageDTO (line 11) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/wordtpl/dto/WordTableCellDTO.java
class WordTableCellDTO (line 8) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/wordtpl/dto/WordTableDTO.java
class WordTableDTO (line 10) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/wordtpl/dto/WordTableRowDTO.java
class WordTableRowDTO (line 7) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/wordtpl/dto/WordTextDTO.java
class WordTextDTO (line 14) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/wordtpl/dto/WordTplGenDTO.java
class WordTplGenDTO (line 12) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/wordtpl/entity/EoaWordTemplate.java
class EoaWordTemplate (line 23) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/wordtpl/mapper/EoaWordTemplateMapper.java
type EoaWordTemplateMapper (line 12) | public interface EoaWordTemplateMapper extends BaseMapper<EoaWordTemplat...
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/wordtpl/service/IEoaWordTemplateService.java
type IEoaWordTemplateService (line 15) | public interface IEoaWordTemplateService extends IService<EoaWordTemplat...
method generateWordFromTpl (line 25) | void generateWordFromTpl(WordTplGenDTO wordTplGenDTO, ByteArrayOutputS...
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/wordtpl/service/impl/EoaWordTemplateServiceImpl.java
class EoaWordTemplateServiceImpl (line 27) | @Slf4j
method generateWordFromTpl (line 47) | @Override
method mergeSystemVarsToData (line 75) | private static void mergeSystemVarsToData(Map<String, Object> data) {
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/wordtpl/utils/WordTplUtils.java
class WordTplUtils (line 36) | @Component("jeecgWordTplUtils")
method generateWordTemplate (line 60) | public void generateWordTemplate(EoaWordTemplate template, ByteArrayOu...
method renderHeaderAndFooter (line 103) | private static void renderHeaderAndFooter(EoaWordTemplate template, XW...
method renderDocumentBody (line 175) | private void renderDocumentBody(XWPFDocument doc, EoaWordTemplate temp...
method parseWordFile (line 340) | public EoaWordTemplate parseWordFile(InputStream wordFileIs) throws Ex...
method parseParagraph (line 414) | private void parseParagraph(XWPFParagraph paragraph, List<Object> docu...
method parseTable (line 447) | private void parseTable(XWPFTable table, List<Object> documentElements...
method parseListParagraph (line 537) | private void parseListParagraph(XWPFParagraph paragraph, JSONObject li...
method parseTitleParagraph (line 597) | private void parseTitleParagraph(XWPFParagraph paragraph, List<Object>...
method parseTextParagraph (line 701) | private void parseTextParagraph(XWPFParagraph paragraph, List<Object> ...
method getRowSpan (line 880) | private void getRowSpan(int r, int c, WordTableCellDTO wordTableCellDt...
method isSeperator (line 903) | private boolean isSeperator(XWPFParagraph paragraph) {
method getSupSubScriptType (line 932) | private String getSupSubScriptType(XWPFRun run) {
method uploadFile (line 960) | private String uploadFile(MultipartFile file, String bizPath) {
method main (line 971) | public static void main(String[] args) {
class CustomMultipartFile (line 996) | private static class CustomMultipartFile implements MultipartFile {
method CustomMultipartFile (line 1004) | public CustomMultipartFile(File file, String name, String contentTyp...
method CustomMultipartFile (line 1013) | public CustomMultipartFile(String name, String originalFilename, Str...
method getName (line 1021) | @Override
method getOriginalFilename (line 1026) | @Override
method getContentType (line 1031) | @Override
method isEmpty (line 1036) | @Override
method getSize (line 1044) | @Override
method getBytes (line 1052) | @Override
method getInputStream (line 1068) | @Override
method transferTo (line 1076) | @Override
FILE: jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/wordtpl/utils/WordUtil.java
class WordUtil (line 36) | @Slf4j
method addCustomHeadingStyle (line 54) | public static void addCustomHeadingStyle(XWPFDocument doc, String strS...
method setPaperSize (line 100) | public static void setPaperSize(XWPFDocument document, int height, int...
method setPaperMargins (line 128) | public static void setPaperMargins(XWPFDocument document, JSONArray ma...
method addSeparator (line 145) | public static void addSeparator(XWPFParagraph paragraph, JSONObject co...
method addPageBreak (line 188) | public static void addPageBreak(XWPFParagraph paragraph) {
method addParagraph (line 218) | public static void addParagraph(XWPFParagraph paragraph, JSONObject co...
method addTitleParagraph (line 264) | public static void addTitleParagraph(XWPFParagraph paragraph, JSONObje...
method addTab (line 296) | public static void addTab(XWPFParagraph paragraph, XWPFRun run) {
method setSingleLineSpacing (line 313) | public static void setSingleLineSpacing(XWPFParagraph paragraph, Float...
method setRunText (line 335) | private static void setRunText(XWPFRun run, JSONObject content, String...
method addSubSupScript (line 472) | public static void addSubSupScript(XWPFParagraph paragraph, JSONObject...
method addHyperlink (line 485) | public static void addHyperlink(XWPFParagraph paragraph, JSONObject co...
method addList (line 511) | public static int addList(XWPFDocument document, JSONObject content, i...
method addCellList (line 573) | public static int addCellList(XWPFDocument document, JSONObject conten...
method getNewDecimalNumberingId (line 640) | private static BigInteger getNewDecimalNumberingId(XWPFDocument docume...
method addImage (line 689) | public static void addImage(XWPFParagraph paragraph, JSONObject conten...
method addFloatingPicture (line 811) | private static void addFloatingPicture(byte[] imageData, XWPFDocument ...
method addTable (line 890) | public static int addTable(XWPFDocument doc, JSONObject tableData, int...
method setTableWidthFixed (line 1069) | public static void setTableWidthFixed(XWPFTable table, boolean isFixed) {
method setCellValue (line 1088) | private static int setCellValue(XWPFTableCell cell, JSONObject cellInf...
method getCellPlainText (line 1213) | public static String getCellPlainText(JSONObject cellInfo) {
method rgbStringToRgb (line 1234) | public static int[] rgbStringToRgb(String rgb) {
method rgb2Hex (line 1258) | public static String rgb2Hex(int r, int g, int b) {
method getHighlightName (line 1267) | private static String getHighlightName(String color) {
method getHighlightByName (line 1304) | public static String getHighlightByName(String name) {
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/cloud/controller/JcloudDemoProviderController.java
class JcloudDemoProviderController (line 18) | @Slf4j
method getMessage (line 26) | @GetMapping("/getMessage")
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/cloud/service/JcloudDemoService.java
type JcloudDemoService (line 9) | public interface JcloudDemoService {
method getMessage (line 16) | String getMessage(String name);
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/cloud/service/impl/JcloudDemoServiceImpl.java
class JcloudDemoServiceImpl (line 11) | @Service
method getMessage (line 13) | @Override
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/mcp/McpDemoController.java
class McpDemoController (line 33) | @Slf4j
method sse (line 81) | @IgnoreAuth
method ssePost (line 123) | @IgnoreAuth
method handleMessage (line 135) | @IgnoreAuth
method handleJsonRpcRequest (line 148) | private void handleJsonRpcRequest(String body, HttpServletResponse res...
method handleInitialize (line 211) | private Map<String, Object> handleInitialize(JSONObject params) {
method handleInitialized (line 228) | private Map<String, Object> handleInitialized() {
method handlePing (line 236) | private Map<String, Object> handlePing() {
method handleCancelled (line 244) | private Map<String, Object> handleCancelled(JSONObject params) {
method handleToolsList (line 252) | private Map<String, Object> handleToolsList() {
method handleToolsCall (line 260) | private Map<String, Object> handleToolsCall(JSONObject params) {
method info (line 307) | @IgnoreAuth
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/mock/MockController.java
class MockController (line 24) | @RestController
method getJsonData (line 37) | @RequestMapping(value = "/json/{filename}", method = RequestMethod.GET)
method asynTreeList (line 43) | @GetMapping(value = "/asynTreeList")
method user (line 49) | @GetMapping(value = "/user")
method userInfo (line 58) | @GetMapping(value = "/user/info")
method role (line 63) | @GetMapping(value = "/role")
method service (line 68) | @GetMapping(value = "/service")
method permission (line 73) | @GetMapping(value = "/permission")
method permissionNoPage (line 78) | @GetMapping(value = "/permission/no-pager")
method area (line 86) | @GetMapping(value = "/area")
method getYearCountInfo (line 94) | @GetMapping(value = "/report/getYearCountInfo")
method getMonthCountInfo (line 98) | @GetMapping(value = "/report/getMonthCountInfo")
method getCntrNoCountInfo (line 102) | @GetMapping(value = "/report/getCntrNoCountInfo")
method getCabinetCountInfo (line 106) | @GetMapping(value = "/report/getCabinetCountInfo")
method getTubiao (line 110) | @GetMapping(value = "/report/getTubiao")
method queryDiskInfo (line 121) | @GetMapping("/queryDiskInfo")
method projects (line 157) | @GetMapping(value = "/list/search/projects")
method activity (line 162) | @GetMapping(value = "/workplace/activity")
method teams (line 167) | @GetMapping(value = "/workplace/teams")
method radar (line 172) | @GetMapping(value = "/workplace/radar")
method taskProcess (line 177) | @GetMapping(value = "/task/process")
method sysDataLogJson (line 187) | public String sysDataLogJson() {
method getUserInfo (line 196) | @GetMapping(value = "/getUserInfo")
method readJson (line 206) | private String readJson(String jsonSrc) {
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/mock/vxe/controller/VxeMockController.java
class VxeMockController (line 31) | @RestController
method mockChange1 (line 43) | @GetMapping("/change1")
method mockChange2 (line 66) | @Deprecated
method mockChange3 (line 91) | @GetMapping("/change3")
method mockChange (line 107) | private void mockChange(JSONObject rowData) {
method mockChange4 (line 127) | @GetMapping("/change4")
method mockImmediateSaveRow (line 149) | @PutMapping("/immediateSaveRow")
method mockImmediateSaveAll (line 162) | @PostMapping("/immediateSaveAll")
method getMockData (line 185) | @GetMapping("/getData")
method getMockDdjhData (line 211) | @GetMapping("/getDdjhData")
method queryDataPage (line 347) | private IPage<JSONObject> queryDataPage(JSONArray dataList, String par...
method queryByParentId (line 382) | private void queryByParentId(JSONArray dataList, List<String> parentId...
method readJsonData (line 401) | private JSONArray readJsonData(String path) {
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/mock/vxe/entity/MockEntity.java
class MockEntity (line 9) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/mock/vxe/websocket/VxeSocket.java
class VxeSocket (line 23) | @Slf4j
method getUserPool (line 60) | public static Map<String, VxeSocket> getUserPool(String userId) {
method sendMessage (line 69) | public void sendMessage(String message) {
method packageMessage (line 82) | public static String packageMessage(String type, Object data) {
method sendMessageTo (line 95) | public static void sendMessageTo(String userId, String message) {
method sendMessageTo (line 112) | public static void sendMessageTo(String userId, String pageId, String ...
method sendMessageTo (line 127) | public static void sendMessageTo(String[] userIds, String message) {
method sendMessageToAll (line 138) | public static void sendMessageToAll(String message) {
method onOpen (line 147) | @OnOpen
method onClose (line 166) | @OnClose
method onMessage (line 180) | @OnMessage
method handleUpdateForm (line 211) | private void handleUpdateForm(JSONObject json) {
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/online/OnlCgformDemoController.java
class OnlCgformDemoController (line 23) | @Slf4j
method enhanceJavaListHttp (line 33) | @PostMapping("/enhanceJavaListHttp")
method virtualDictData (line 61) | private List<DictModel> virtualDictData() {
method enhanceJavaHttp (line 75) | @PostMapping("/enhanceJavaHttp")
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/shop/controller/ShopController.java
class ShopController (line 25) | @Tag(name = "商品管理Demo")
method initProducts (line 52) | @PostConstruct
method getProducts (line 87) | @Operation(summary = "查询商品列表", description = "支持按分类和关键词搜索")
method getStock (line 128) | @Operation(summary = "查询商品库存", description = "根据商品ID查询库存数量")
method purchase (line 159) | @Operation(summary = "购买商品", description = "创建订单,但不立即扣减库存")
method deductStock (line 213) | @Operation(summary = "扣减商品库存", description = "根据订单ID扣减对应商品库存")
method getOrder (line 277) | @Operation(summary = "查询订单详情", description = "根据订单ID查询订单信息")
method getCategories (line 299) | @Operation(summary = "获取商品分类", description = "获取所有商品的分类列表")
method reset (line 320) | @Operation(summary = "重置数据", description = "清空所有订单并重置商品库存(仅用于测试)")
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/shop/entity/Order.java
class Order (line 15) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/shop/entity/Product.java
class Product (line 14) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/BigScreenTemplatController.java
class BigScreenTemplatController (line 20) | @Slf4j
method ftl (line 29) | @RequestMapping("/html")
method index1 (line 46) | @RequestMapping("/index1")
method index2 (line 57) | @RequestMapping("/index2")
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JeecgDemoController.java
class JeecgDemoController (line 45) | @Slf4j
method list (line 65) | @Operation(summary = "获取Demo数据列表")
method add (line 88) | @PostMapping(value = "/add")
method edit (line 102) | @AutoLog(value = "编辑DEMO", operateType = CommonConstant.OPERATE_TYPE_3)
method delete (line 116) | @AutoLog(value = "删除测试DEMO")
method deleteBatch (line 130) | @DeleteMapping(value = "/deleteBatch")
method queryById (line 143) | @GetMapping(value = "/queryById")
method exportXls (line 155) | @RequestMapping(value = "/exportXls")
method importExcel (line 171) | @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
method redisSet (line 181) | @GetMapping(value = "/redisSet")
method redisGet (line 189) | @GetMapping(value = "/redisGet")
method redisSetObj (line 197) | @GetMapping(value = "/redisSetObj")
method redisGetObj (line 211) | @GetMapping(value = "/redisGetObj")
method redisGetJeecgDemo (line 219) | @GetMapping(value = "/redis/{id}")
method ftl (line 234) | @IgnoreAuth
method testOnlineAdd (line 252) | @PostMapping(value = "/testOnlineAdd")
method loadMpPermissonList (line 268) | @GetMapping(value = "/mpList")
method loadSqlPermissonList (line 289) | @GetMapping(value = "/sqlList")
method enhanceJavaListHttp (line 303) | @PostMapping("/enhanceJavaListHttp")
method enhanceJavaFormHttp (line 320) | @PostMapping("/enhanceJavaFormHttp")
method hello (line 330) | @GetMapping(value = "/hello")
method oneNativeList (line 336) | @GetMapping(value = "/oneNative/list")
method oneNativeAdd (line 348) | @PostMapping("/oneNative/add")
method oneNativeEdit (line 364) | @PutMapping("/oneNative/edit")
method oneNativeDelete (line 374) | @DeleteMapping("/oneNative/delete")
method getNativeById (line 393) | public JSONArray getNativeById(JSONArray data,JSONObject jsonObject){
method deleteNativeById (line 411) | public JSONArray deleteNativeById(JSONArray data,String ids){
method queryDataPage (line 434) | private IPage<JSONObject> queryDataPage(JSONArray dataList, Integer pa...
method groupList (line 469) | @GetMapping(value = "/groupList")
method test (line 478) | @GetMapping(value ="/test")
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JeecgDynamicDataController.java
class JeecgDynamicDataController (line 25) | @Slf4j
method selectSpelByKey (line 40) | @PostMapping(value = "/test1")
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JeecgOrderErpMainController.java
class JeecgOrderErpMainController (line 29) | @Slf4j
method respondePagedData (line 50) | @GetMapping(value = "/orderList")
method add (line 67) | @PostMapping(value = "/add")
method edit (line 81) | @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMe...
method delete (line 95) | @DeleteMapping(value = "/delete")
method deleteBatch (line 107) | @DeleteMapping(value = "/deleteBatch")
method queryById (line 119) | @GetMapping(value = "/queryById")
method queryOrderCustomerListByMainId (line 132) | @GetMapping(value = "/listOrderCustomerByMainId")
method queryOrderTicketListByMainId (line 149) | @GetMapping(value = "/listOrderTicketByMainId")
method addCustomer (line 166) | @PostMapping(value = "/addCustomer")
method editCustomer (line 178) | @RequestMapping(value = "/editCustomer", method = {RequestMethod.PUT,R...
method deleteCustomer (line 190) | @DeleteMapping(value = "/deleteCustomer")
method deleteBatchCustomer (line 202) | @DeleteMapping(value = "/deleteBatchCustomer")
method addTicket (line 214) | @PostMapping(value = "/addTicket")
method editTicket (line 226) | @RequestMapping(value = "/editTicket", method = {RequestMethod.PUT,Req...
method deleteTicket (line 238) | @DeleteMapping(value = "/deleteTicket")
method deleteBatchTicket (line 250) | @DeleteMapping(value = "/deleteBatchTicket")
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JeecgOrderMainController.java
class JeecgOrderMainController (line 58) | @RestController
method queryPageList (line 79) | @GetMapping(value = "/list")
method add (line 93) | @PostMapping(value = "/add")
method eidt (line 107) | @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMe...
method delete (line 121) | @DeleteMapping(value = "/delete")
method deleteBatch (line 133) | @DeleteMapping(value = "/deleteBatch")
method queryById (line 145) | @GetMapping(value = "/queryById")
method queryOrderCustomerListByMainId (line 157) | @GetMapping(value = "/queryOrderCustomerListByMainId")
method queryOrderTicketListByMainId (line 169) | @GetMapping(value = "/queryOrderTicketListByMainId")
method exportXls (line 180) | @RequestMapping(value = "/exportXls")
method importExcel (line 222) | @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JoaDemoController.java
class JoaDemoController (line 50) | @RestController
method queryPageList (line 65) | @GetMapping(value = "/list")
method add (line 84) | @PostMapping(value = "/add")
method edit (line 102) | @PutMapping(value = "/edit")
method delete (line 124) | @DeleteMapping(value = "/delete")
method deleteBatch (line 145) | @DeleteMapping(value = "/deleteBatch")
method queryById (line 162) | @GetMapping(value = "/queryById")
method exportXls (line 181) | @RequestMapping(value = "/exportXls")
method importExcel (line 214) | @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/entity/JeecgDemo.java
class JeecgDemo (line 25) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/entity/JeecgOrderCustomer.java
class JeecgOrderCustomer (line 19) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/entity/JeecgOrderMain.java
class JeecgOrderMain (line 18) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/entity/JeecgOrderTicket.java
class JeecgOrderTicket (line 18) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/entity/JoaDemo.java
class JoaDemo (line 21) | @Data
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/mapper/JeecgDemoMapper.java
type JeecgDemoMapper (line 18) | public interface JeecgDemoMapper extends BaseMapper<JeecgDemo> {
method getDemoByName (line 25) | public List<JeecgDemo> getDemoByName(@Param("name") String name);
method queryListWithPermission (line 33) | public IPage<JeecgDemo> queryListWithPermission(Page<JeecgDemo> page,@...
method queryAllAuth (line 40) | public List<String> queryAllAuth(@Param("permsPrefix")String permsPref...
method queryUserAuth (line 48) | public List<String> queryUserAuth(@Param("userId")String userId,@Param...
method getCreateByList (line 55) | List<String> getCreateByList();
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/mapper/JeecgOrderCustomerMapper.java
type JeecgOrderCustomerMapper (line 17) | public interface JeecgOrderCustomerMapper extends BaseMapper<JeecgOrderC...
method deleteCustomersByMainId (line 24) | @Delete("DELETE FROM JEECG_ORDER_CUSTOMER WHERE ORDER_ID = #{mainId}")
method selectCustomersByMainId (line 32) | @Select("SELECT * FROM JEECG_ORDER_CUSTOMER WHERE ORDER_ID = #{mainId}")
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/mapper/JeecgOrderMainMapper.java
type JeecgOrderMainMapper (line 15) | public interface JeecgOrderMainMapper extends BaseMapper<JeecgOrderMain> {
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/mapper/JeecgOrderTicketMapper.java
type JeecgOrderTicketMapper (line 16) | public interface JeecgOrderTicketMapper extends BaseMapper<JeecgOrderTic...
method deleteTicketsByMainId (line 23) | @Delete("DELETE FROM JEECG_ORDER_TICKET WHERE ORDER_ID = #{mainId}")
method selectTicketsByMainId (line 31) | @Select("SELECT * FROM JEECG_ORDER_TICKET WHERE ORDER_ID = #{mainId}")
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/mapper/JoaDemoMapper.java
type JoaDemoMapper (line 13) | public interface JoaDemoMapper extends BaseMapper<JoaDemo> {
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/service/IJeecgDemoService.java
type IJeecgDemoService (line 16) | public interface IJeecgDemoService extends JeecgService<JeecgDemo> {
method testTran (line 21) | public void testTran();
method getByIdCacheable (line 28) | public JeecgDemo getByIdCacheable(String id);
method getByIdCacheableTTL (line 34) | public JeecgDemo getByIdCacheableTTL(String id);
method queryListWithPermission (line 42) | IPage<JeecgDemo> queryListWithPermission(int pageSize,int pageNo);
method getExportFields (line 48) | String getExportFields();
method getCreateByList (line 54) | List<String> getCreateByList();
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/service/IJeecgDynamicDataService.java
type IJeecgDynamicDataService (line 13) | public interface IJeecgDynamicDataService extends JeecgService<JeecgDemo> {
method selectSpelByHeader (line 19) | public List<JeecgDemo> selectSpelByHeader();
method selectSpelByKey (line 26) | public List<JeecgDemo> selectSpelByKey(String dsName);
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/service/IJeecgOrderCustomerService.java
type IJeecgOrderCustomerService (line 15) | public interface IJeecgOrderCustomerService extends IService<JeecgOrderC...
method selectCustomersByMainId (line 22) | public List<JeecgOrderCustomer> selectCustomersByMainId(String mainId);
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/service/IJeecgOrderMainService.java
type IJeecgOrderMainService (line 19) | public interface IJeecgOrderMainService extends IService<JeecgOrderMain> {
method saveMain (line 27) | public void saveMain(JeecgOrderMain jeecgOrderMain,List<JeecgOrderCust...
method updateMain (line 35) | public void updateMain(JeecgOrderMain jeecgOrderMain,List<JeecgOrderCu...
method delMain (line 41) | public void delMain (String id);
method delBatchMain (line 47) | public void delBatchMain (Collection<? extends Serializable> idList);
method updateCopyMain (line 55) | public void updateCopyMain(JeecgOrderMain jeecgOrderMain, List<JeecgOr...
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/service/IJeecgOrderTicketService.java
type IJeecgOrderTicketService (line 15) | public interface IJeecgOrderTicketService extends IService<JeecgOrderTic...
method selectTicketsByMainId (line 22) | public List<JeecgOrderTicket> selectTicketsByMainId(String mainId);
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/service/IJoaDemoService.java
type IJoaDemoService (line 13) | public interface IJoaDemoService extends IService<JoaDemo> {
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/service/impl/JeecgDemoServiceImpl.java
class JeecgDemoServiceImpl (line 29) | @Service
method testTran (line 38) | @Override
method getByIdCacheable (line 64) | @Override
method getByIdCacheableTTL (line 80) | @Override
method queryListWithPermission (line 90) | @Override
method getExportFields (line 98) | @Override
method getCreateByList (line 127) | @Override
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/service/impl/JeecgDynamicDataServiceImpl.java
class JeecgDynamicDataServiceImpl (line 16) | @Service
method selectSpelByHeader (line 19) | @Override
method selectSpelByKey (line 24) | @Override
FILE: jeecg-boot/jeecg-boot-module/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/service/impl/JeecgOrderCustomerServiceImpl.java
class JeecgOrderC
Copy disabled (too large)
Download .json
Condensed preview — 3173 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (37,201K chars).
[
{
"path": ".gitattributes",
"chars": 170,
"preview": "*.js linguist-language=Java\n*.css linguist-language=Java\n*.ts linguist-language=vue\n*.html linguist-language=vue\n*.sql l"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 244,
"preview": "---\nname: 提交 Bug\nabout: 请告诉我框架存在的问题,我会协助你解决此问题!\nlabels: bug\nassignees: getActivity\n\n---\n\n\n##### 版本号:\n\n\n##### 分支:\n\n\n#####"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 245,
"preview": "---\nname: 提交建议\nabout: 请告诉我框架的不足之处,让我做得更好!\nlabels: help wanted\nassignees: getActivity\n\n---\n\n##### 版本号:\n\n\n##### 分支:\n\n\n####"
},
{
"path": ".gitignore",
"chars": 147,
"preview": "## ide\n**/.idea\n*.iml\nrebel.xml\n\n## backend\n**/target\n**/logs\n\n## front\n**/*.lock\nos_del.cmd\nos_del_doc.cmd\n.svn\nderby.l"
},
{
"path": "LICENSE",
"chars": 11518,
"preview": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/li"
},
{
"path": "README-AI.md",
"chars": 4659,
"preview": "AIGC应用平台介绍\n===============\n\n一个全栈式 AI 开发平台,旨在帮助开发者快速构建和部署个性化的 AI 应用。\n\nJeecgBoot平台的AIGC功能模块,是一套类似`Dify`的`AIGC应用开发平台`+`知识库问"
},
{
"path": "README.en-US.md",
"chars": 21817,
"preview": "[中文](./README.md) | English\n\n\n\n"
},
{
"path": "README.md",
"chars": 19154,
"preview": "中文 | [English](./README.en-US.md)\n\nJeecgBoot AI低代码平台\n===============\n\n当前最新版本: 3.9.1(发布日期:2026-01-28) \n\n\n[ -> Tuple["
},
{
"path": "docker-compose-cloud.yml",
"chars": 3677,
"preview": "version: '2'\nservices:\n jeecg-boot-mysql:\n build:\n context: ./jeecg-boot/db\n environment:\n MYSQL_ROOT_P"
},
{
"path": "docker-compose.yml",
"chars": 1787,
"preview": "version: '2'\nservices:\n jeecg-boot-mysql:\n build:\n context: ./jeecg-boot/db\n environment:\n MYSQL_ROOT_P"
},
{
"path": "jeecg-boot/.gitignore",
"chars": 123,
"preview": "## ide\n**/.idea\n*.iml\nrebel.xml\n\n## backend\n**/target\n**/logs\n\n## front\n**/*.lock\nos_del.cmd\nos_del_doc.cmd\n.svn\nderby.l"
},
{
"path": "jeecg-boot/LICENSE",
"chars": 11819,
"preview": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/li"
},
{
"path": "jeecg-boot/README.md",
"chars": 11588,
"preview": "JeecgBoot 低代码开发平台\n===============\n\n当前最新版本: 3.9.1(发布日期: 2026-01-22) \n\n\n[ 2015-present, xuxueli.\n\nCREATE database if NOT EXISTS `xxl_job` default character set"
},
{
"path": "jeecg-boot/db/其他数据库脚本/oracle11g dmp说明.txt",
"chars": 132,
"preview": "oracle导出编码: export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK\n\n导出用户: jeecgbootos\n\n导入命令: imp scott/tiger@orcl file=jeecgboot-o"
},
{
"path": "jeecg-boot/db/版本升级说明.md",
"chars": 661,
"preview": "# 版本升级方法\n\n> JeecgBoot属于平台级产品,每次升级改动较大,目前做不到平滑升级。\n\n### 增量升级方案\n\n#### 1.代码合并\n 本地通过svn或git做好主干,在分支上做业务开发,jeecg每次版本发布,可以手工覆盖主"
},
{
"path": "jeecg-boot/docker-compose.yml",
"chars": 1962,
"preview": "version: '2'\nservices:\n jeecg-boot-mysql:\n build:\n context: ./db\n environment:\n MYSQL_ROOT_PASSWORD: ro"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/pom.xml",
"chars": 11511,
"preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txsi:schemaLoc"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/CommonAPI.java",
"chars": 3230,
"preview": "package org.jeecg.common.api;\n\nimport org.jeecg.common.api.dto.AiragFlowDTO;\nimport org.jeecg.common.system.vo.*;\n\nimpor"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/AiragFlowDTO.java",
"chars": 679,
"preview": "package org.jeecg.common.api.dto;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Builder;\nimport lombok.Data;\nimport l"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/ApprovalCommentDTO.java",
"chars": 679,
"preview": "package org.jeecg.common.api.dto;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\nimport java.util.Date;\n\n/**\n * 流程审批"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/DataLogDTO.java",
"chars": 707,
"preview": "package org.jeecg.common.api.dto;\n\nimport lombok.Data;\n\n/**\n * @Author taoYan\n * @Date 2022/7/26 14:44\n **/\n@Data\npublic"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/FileDownDTO.java",
"chars": 749,
"preview": "package org.jeecg.common.api.dto;\n\nimport lombok.Data;\n\nimport jakarta.servlet.http.HttpServletResponse;\nimport java.io."
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/FileUploadDTO.java",
"chars": 1158,
"preview": "package org.jeecg.common.api.dto;\n\nimport lombok.Data;\nimport org.springframework.web.multipart.MultipartFile;\n\nimport j"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/LogDTO.java",
"chars": 1645,
"preview": "package org.jeecg.common.api.dto;\nimport lombok.Data;\nimport org.jeecg.common.aspect.annotation.Dict;\nimport org.jeecg.c"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/OnlineAuthDTO.java",
"chars": 840,
"preview": "package org.jeecg.common.api.dto;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\nimport java.util.List;\n\n/**\n * onli"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/PushMessageDTO.java",
"chars": 848,
"preview": "package org.jeecg.common.api.dto;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Builder;\nimport lombok.Data;\nimport l"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/BusMessageDTO.java",
"chars": 917,
"preview": "package org.jeecg.common.api.dto.message;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\n\n/**\n * 带业务参数的消息\n* \n* @auth"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/BusTemplateMessageDTO.java",
"chars": 986,
"preview": "package org.jeecg.common.api.dto.message;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\nimport java.util.Map;\n\n/**\n"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/MessageDTO.java",
"chars": 2804,
"preview": "package org.jeecg.common.api.dto.message;\n\nimport lombok.Data;\nimport org.jeecg.common.constant.CommonConstant;\n\nimport "
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/TemplateDTO.java",
"chars": 690,
"preview": "package org.jeecg.common.api.dto.message;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\nimport java.util.Map;\n\n/**\n"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/TemplateMessageDTO.java",
"chars": 856,
"preview": "package org.jeecg.common.api.dto.message;\n\nimport lombok.Data;\nimport java.io.Serializable;\nimport java.util.Map;\n\n/**\n "
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/vo/Result.java",
"chars": 3527,
"preview": "package org.jeecg.common.api.vo;\n\nimport com.fasterxml.jackson.annotation.JsonIgnore;\n\nimport io.swagger.v3.oas.annotati"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/AutoLogAspect.java",
"chars": 9490,
"preview": "package org.jeecg.common.aspect;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.Propert"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/DictAspect.java",
"chars": 18539,
"preview": "package org.jeecg.common.aspect;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.a"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/PermissionDataAspect.java",
"chars": 4978,
"preview": "package org.jeecg.common.aspect;\n\nimport lombok.extern.slf4j.Slf4j;\nimport org.aspectj.lang.ProceedingJoinPoint;\nimport "
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/UrlMatchEnum.java",
"chars": 2388,
"preview": "package org.jeecg.common.aspect;\n\n/**\n * @Author scott\n * @Date 2020/1/14 13:36\n * @Description: 请求URL与菜单路由URL转换规则(方便于采用"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/annotation/AutoDict.java",
"chars": 344,
"preview": "package org.jeecg.common.aspect.annotation;\n\nimport java.lang.annotation.*;\n\n/**\n * 通过此注解声明的接口,自动实现字典翻译\n * \n * @Author s"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/annotation/AutoLog.java",
"chars": 721,
"preview": "package org.jeecg.common.aspect.annotation;\n\nimport org.jeecg.common.constant.CommonConstant;\nimport org.jeecg.common.co"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/annotation/Dict.java",
"chars": 1035,
"preview": "package org.jeecg.common.aspect.annotation;\n\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retent"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/annotation/DynamicTable.java",
"chars": 316,
"preview": "package org.jeecg.common.aspect.annotation;\n\nimport java.lang.annotation.*;\n\n/**\n * 动态table切换\n *\n * @author :zyf\n * @dat"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/annotation/OnlineAuth.java",
"chars": 335,
"preview": "package org.jeecg.common.aspect.annotation;\n\nimport java.lang.annotation.*;\n\n/**\n * online请求拦截专用注解\n * @author: jeecg-boo"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/annotation/PermissionData.java",
"chars": 566,
"preview": "package org.jeecg.common.aspect.annotation;\n\nimport java.lang.annotation.Documented;\nimport java.lang.annotation.Element"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java",
"chars": 15429,
"preview": "package org.jeecg.common.constant;\n\n/**\n * @Description: 通用常量\n * @author: jeecg-boot\n */\npublic interface CommonConstant"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonSendStatus.java",
"chars": 1184,
"preview": "package org.jeecg.common.constant;\n\n/**\n * \t系统通告 - 发布状态\n * @Author LeeShaoQing\n *\n */\npublic interface CommonSendStatus "
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/DataBaseConstant.java",
"chars": 4912,
"preview": "package org.jeecg.common.constant;\n/**\n * 数据库上下文常量\n * @author: jeecg-boot\n */\npublic interface DataBaseConstant {\n\n\t/**\n"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/DynamicTableConstant.java",
"chars": 306,
"preview": "package org.jeecg.common.constant;\n\n/**\n * 动态切换表配置常量\n *\n * @author: scott\n * @date: 2022年04月25日 22:30\n */\npublic class D"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/FillRuleConstant.java",
"chars": 405,
"preview": "package org.jeecg.common.constant;\n\n/**\n * 规则值生成 编码常量类\n * @author: taoyan\n * @date: 2020年04月02日\n */\npublic class FillRul"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/PasswordConstant.java",
"chars": 224,
"preview": "package org.jeecg.common.constant;\n\n/**\n* @Description: 密码常量类\n*\n* @author: wangshuai\n* @date: 2025/8/27 20:10\n*/\npublic "
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/ProvinceCityArea.java",
"chars": 6765,
"preview": "package org.jeecg.common.constant;\n\nimport com.alibaba.fastjson.JSONObject;\nimport org.apache.commons.lang3.StringUtils;"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/ServiceNameConstants.java",
"chars": 1331,
"preview": "/*\n *\n * * Copyright (c) 2019-2020, 冷冷 (wangiegie@gmail.com).\n * * <p>\n * * Licensed under the GNU Lesser General "
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/SymbolConstant.java",
"chars": 2083,
"preview": "package org.jeecg.common.constant;\n\n/**\n * @Description: 符号和特殊符号常用类\n * @author: wangshuai\n * @date: 2022年03月30日 17:44\n *"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/TenantConstant.java",
"chars": 1209,
"preview": "package org.jeecg.common.constant;\n\n/**\n * @Description: TenantConstant\n * @author: scott\n * @date: 2022年08月29日 15:29\n *"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/VxeSocketConst.java",
"chars": 555,
"preview": "package org.jeecg.common.constant;\n\n/**\n * VXESocket 常量\n * @author: jeecg-boot\n */\npublic class VxeSocketConst {\n\n /*"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/WebsocketConst.java",
"chars": 1161,
"preview": "package org.jeecg.common.constant;\n\n/**\n * @Description: Websocket常量类\n * @author: taoyan\n * @date: 2020年03月23日\n */\npubli"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/CgformEnum.java",
"chars": 3804,
"preview": "package org.jeecg.common.constant.enums;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\ni"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/ClientTerminalTypeEnum.java",
"chars": 397,
"preview": "package org.jeecg.common.constant.enums;\n\n/**\n * 客户终端类型\n */\npublic enum ClientTerminalTypeEnum {\n\n PC(\"pc\", \"电脑终端\"),\n"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/DateRangeEnum.java",
"chars": 344,
"preview": "package org.jeecg.common.constant.enums;\n\n/**\n * 日期预设范围枚举\n */\npublic enum DateRangeEnum {\n // 今天\n TODAY,\n // 昨天"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/DepartCategoryEnum.java",
"chars": 1950,
"preview": "package org.jeecg.common.constant.enums;\n\nimport org.jeecg.common.util.oConvertUtils;\n\n/**\n* @Description: 部门类型枚举类\n*\n* @"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/DySmsEnum.java",
"chars": 1468,
"preview": "package org.jeecg.common.constant.enums;\n\nimport org.apache.commons.lang3.StringUtils;\n\n/**\n * @Description: 短信枚举类\n * @a"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/EmailTemplateEnum.java",
"chars": 1428,
"preview": "package org.jeecg.common.constant.enums;\n\nimport org.jeecg.common.util.oConvertUtils;\n\n/**\n * 邮件html模板配置地址美剧\n *\n * @auth"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/FileTypeEnum.java",
"chars": 1772,
"preview": "package org.jeecg.common.constant.enums;\n\nimport org.jeecg.common.util.oConvertUtils;\n\n/**\n * 文件类型\n */\npublic enum FileT"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/MessageTypeEnum.java",
"chars": 1752,
"preview": "package org.jeecg.common.constant.enums;\n\nimport org.jeecg.common.system.annotation.EnumDict;\nimport org.jeecg.common.sy"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/ModuleType.java",
"chars": 193,
"preview": "package org.jeecg.common.constant.enums;\n\n/**\n * 日志按模块分类\n * @author: jeecg-boot\n */\npublic enum ModuleType {\n\n /**\n "
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/NoticeTypeEnum.java",
"chars": 1677,
"preview": "package org.jeecg.common.constant.enums;\n\n/**\n* @Description: 文件类型枚举类\n*\n* @author: wangshuai\n* @date: 2025/6/26 17:29\n*/"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/OperateTypeEnum.java",
"chars": 1618,
"preview": "package org.jeecg.common.constant.enums;\n\nimport org.jeecg.common.constant.CommonConstant;\n\n/**\n * @Description: 操作类型\n *"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/PositionLevelEnum.java",
"chars": 4500,
"preview": "package org.jeecg.common.constant.enums;\n\nimport java.util.Arrays;\nimport java.util.List;\n\n/**\n * 职级枚举类\n * \n * 注意:此枚举仅适用"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/RoleIndexConfigEnum.java",
"chars": 2298,
"preview": "package org.jeecg.common.constant.enums;\n\nimport org.jeecg.common.util.oConvertUtils;\n\nimport java.util.List;\n\n/**\n * 首页"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/SysAnnmentTypeEnum.java",
"chars": 2163,
"preview": "package org.jeecg.common.constant.enums;\n\nimport org.jeecg.common.util.oConvertUtils;\n\n/**\n * 系统公告自定义跳转方式\n * @author: je"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/UniPushTypeEnum.java",
"chars": 1541,
"preview": "package org.jeecg.common.constant.enums;\n\nimport org.jeecg.common.util.oConvertUtils;\n\n/**\n * UniPush 消息推送枚举\n * @author:"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/Vue3MessageHrefEnum.java",
"chars": 1438,
"preview": "package org.jeecg.common.constant.enums;\n\nimport org.jeecg.common.system.annotation.EnumDict;\nimport org.jeecg.common.sy"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/desensitization/SensitiveSerialize.java",
"chars": 3462,
"preview": "package org.jeecg.common.desensitization;\n\nimport com.fasterxml.jackson.core.JsonGenerator;\nimport com.fasterxml.jackson"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/desensitization/annotation/Sensitive.java",
"chars": 656,
"preview": "package org.jeecg.common.desensitization.annotation;\n\n\nimport com.fasterxml.jackson.annotation.JacksonAnnotationsInside;"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/desensitization/annotation/SensitiveDecode.java",
"chars": 373,
"preview": "package org.jeecg.common.desensitization.annotation;\n\nimport java.lang.annotation.*;\n\n/**\n * 解密注解\n *\n * 在方法上定义 将方法返回对象中的"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/desensitization/annotation/SensitiveEncode.java",
"chars": 348,
"preview": "package org.jeecg.common.desensitization.annotation;\n\nimport java.lang.annotation.*;\n\n/**\n * 加密注解\n *\n * 在方法上声明 将方法返回对象中的"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/desensitization/annotation/SensitiveField.java",
"chars": 396,
"preview": "package org.jeecg.common.desensitization.annotation;\n\n\nimport org.jeecg.common.desensitization.enums.SensitiveEnum;\n\nimp"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/desensitization/aspect/SensitiveDataAspect.java",
"chars": 2733,
"preview": "package org.jeecg.common.desensitization.aspect;\n\nimport lombok.extern.slf4j.Slf4j;\nimport org.aspectj.lang.ProceedingJo"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/desensitization/enums/SensitiveEnum.java",
"chars": 492,
"preview": "package org.jeecg.common.desensitization.enums;\n\n/**\n * 敏感字段信息类型\n */\npublic enum SensitiveEnum {\n\n\n /**\n * 加密\n "
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/desensitization/util/SensitiveInfoUtil.java",
"chars": 10808,
"preview": "package org.jeecg.common.desensitization.util;\n\nimport lombok.extern.slf4j.Slf4j;\nimport org.jeecg.common.desensitizatio"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/es/JeecgElasticsearchTemplate.java",
"chars": 17702,
"preview": "package org.jeecg.common.es;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport lomb"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/es/QueryStringBuilder.java",
"chars": 2350,
"preview": "package org.jeecg.common.es;\n\n/**\n * 用于创建 ElasticSearch 的 queryString\n *\n * @author sunjianlei\n */\npublic class QueryStr"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgBoot401Exception.java",
"chars": 451,
"preview": "package org.jeecg.common.exception;\n\n/**\n * @Description: jeecg-boot自定义401异常\n * @author: jeecg-boot\n */\npublic class Jee"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgBootAssertException.java",
"chars": 421,
"preview": "package org.jeecg.common.exception;\n\n/**\n * jeecgboot断言异常\n * for [QQYUN-10990]AIRAG\n * @author chenrui\n * @date 2025/2/1"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgBootBizTipException.java",
"chars": 784,
"preview": "package org.jeecg.common.exception;\n\nimport org.jeecg.common.constant.CommonConstant;\n\n/**\n * @Description: 业务提醒异常(用于操作业"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgBootException.java",
"chars": 736,
"preview": "package org.jeecg.common.exception;\n\nimport org.jeecg.common.constant.CommonConstant;\n\n/**\n * @Description: jeecg-boot自定"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgBootExceptionHandler.java",
"chars": 9221,
"preview": "package org.jeecg.common.exception;\n\nimport cn.hutool.core.util.ObjectUtil;\nimport jakarta.annotation.Resource;\nimport j"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgSqlInjectionException.java",
"chars": 475,
"preview": "package org.jeecg.common.exception;\n\n/**\n * @Description: jeecg-boot自定义SQL注入异常\n * @author: jeecg-boot\n */\npublic class J"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/handler/IFillRuleHandler.java",
"chars": 353,
"preview": "package org.jeecg.common.handler;\n\nimport com.alibaba.fastjson.JSONObject;\n\n/**\n * 填值规则接口\n *\n * @author Yan_东\n * 如需使用填值规"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/annotation/EnumDict.java",
"chars": 477,
"preview": "package org.jeecg.common.system.annotation;\n\nimport java.lang.annotation.*;\n\n/**\n * 将枚举类转化成字典数据\n * \n * <<使用说明>>\n * 1. 枚举"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/controller/JeecgController.java",
"chars": 10232,
"preview": "package org.jeecg.common.system.base.controller;\n\nimport com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;\nim"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/entity/JeecgEntity.java",
"chars": 1763,
"preview": "package org.jeecg.common.system.base.entity;\n\nimport java.io.Serializable;\n\nimport org.jeecgframework.poi.excel.annotati"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/service/JeecgService.java",
"chars": 275,
"preview": "package org.jeecg.common.system.base.service;\n\nimport com.baomidou.mybatisplus.extension.service.IService;\n\n/**\n * @Desc"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/service/impl/JeecgServiceImpl.java",
"chars": 583,
"preview": "package org.jeecg.common.system.base.service.impl;\n\nimport org.jeecg.common.system.base.entity.JeecgEntity;\nimport org.j"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/enhance/UserFilterEnhance.java",
"chars": 322,
"preview": "package org.jeecg.common.system.enhance;\n\nimport java.util.List;\n\n/**\n * 用户增强\n */\npublic interface UserFilterEnhance {\n "
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/MatchTypeEnum.java",
"chars": 913,
"preview": "package org.jeecg.common.system.query;\n\nimport org.jeecg.common.util.oConvertUtils;\n\n/**\n * 查询链接规则\n *\n * @Author Sunjian"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryCondition.java",
"chars": 1542,
"preview": "package org.jeecg.common.system.query;\n\nimport java.io.Serializable;\n\n/**\n * @Description: QueryCondition\n * @author: je"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryGenerator.java",
"chars": 33913,
"preview": "package org.jeecg.common.system.query;\n\nimport java.beans.PropertyDescriptor;\nimport java.io.UnsupportedEncodingExceptio"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryRuleEnum.java",
"chars": 2854,
"preview": "package org.jeecg.common.system.query;\n\nimport org.jeecg.common.util.oConvertUtils;\n\n/**\n * Query 规则 常量\n * @Author Scott"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/JeecgDataAutorUtils.java",
"chars": 2934,
"preview": "package org.jeecg.common.system.util;\n\nimport org.jeecg.common.system.vo.SysPermissionDataRuleModel;\nimport org.jeecg.co"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/JwtUtil.java",
"chars": 11612,
"preview": "package org.jeecg.common.system.util;\n\nimport com.auth0.jwt.JWT;\nimport com.auth0.jwt.JWTVerifier;\nimport com.auth0.jwt."
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/ResourceUtil.java",
"chars": 6713,
"preview": "package org.jeecg.common.system.util;\n\nimport lombok.extern.slf4j.Slf4j;\nimport org.jeecg.common.system.annotation.EnumD"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/SqlConcatUtil.java",
"chars": 10802,
"preview": "package org.jeecg.common.system.util;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nim"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/ComboModel.java",
"chars": 943,
"preview": "package org.jeecg.common.system.vo;\n\nimport com.fasterxml.jackson.annotation.JsonIgnoreProperties;\nimport lombok.Data;\ni"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/DictModel.java",
"chars": 1190,
"preview": "package org.jeecg.common.system.vo;\n\nimport java.io.Serializable;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.fa"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/DictModelMany.java",
"chars": 317,
"preview": "package org.jeecg.common.system.vo;\n\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\n\n/**\n * 查询多个字典时用到\n * @author: "
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/DictQuery.java",
"chars": 417,
"preview": "package org.jeecg.common.system.vo;\n\nimport lombok.Data;\n\n/**\n * 字典查询参数实体\n * @author: jeecg-boot\n */\n@Data\npublic class "
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/DynamicDataSourceModel.java",
"chars": 934,
"preview": "package org.jeecg.common.system.vo;\n\nimport lombok.Data;\nimport org.springframework.beans.BeanUtils;\n\n/**\n * @Descriptio"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/LoginUser.java",
"chars": 2036,
"preview": "package org.jeecg.common.system.vo;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\nimport lombok.Data;\nimport lomb"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/SelectTreeModel.java",
"chars": 483,
"preview": "package org.jeecg.common.system.vo;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\nimport java.util.List;\n\n/**\n * 下拉"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/SysCategoryModel.java",
"chars": 904,
"preview": "package org.jeecg.common.system.vo;\n\nimport org.jeecgframework.poi.excel.annotation.Excel;\n\n/**\n * @Author qinfeng\n * @D"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/SysDepartModel.java",
"chars": 2877,
"preview": "package org.jeecg.common.system.vo;\n\n/**\n * 部门机构model\n * @author: lvdandan\n */\npublic class SysDepartModel {\n /**ID*/"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/SysFilesModel.java",
"chars": 1565,
"preview": "package org.jeecg.common.system.vo;\n\n\n/**\n * @Description: 系统文件实体类\n * @author: wangshuai\n * @date: 2022年08月11日 9:48\n */\n"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/SysPermissionDataRuleModel.java",
"chars": 2589,
"preview": "package org.jeecg.common.system.vo;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.baomidou.mybatisplus."
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/SysUserCacheInfo.java",
"chars": 1793,
"preview": "package org.jeecg.common.system.vo;\n\nimport java.util.List;\n\nimport org.jeecg.common.util.DateUtils;\n\n/**\n * @Descriptio"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/UserAccountInfo.java",
"chars": 955,
"preview": "package org.jeecg.common.system.vo;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\nimport lombok.Data;\nimport lomb"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/AssertUtils.java",
"chars": 5405,
"preview": "package org.jeecg.common.util;\n\n\nimport org.jeecg.common.exception.JeecgBootAssertException;\n\n/**\n * 断言检查工具\n * for for ["
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/BrowserType.java",
"chars": 254,
"preview": "package org.jeecg.common.util;\n\n/**\n * \n * @Author 张代浩\n *\n */\npublic enum BrowserType {\n /**\n * 浏览类型 IE11,IE10,I"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/BrowserUtils.java",
"chars": 5341,
"preview": "package org.jeecg.common.util;\n\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.regex.Matcher;\nimport j"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/CommonUtils.java",
"chars": 17515,
"preview": "package org.jeecg.common.util;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.baomidou.dynamic.datasource.creator.D"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DateRangeUtils.java",
"chars": 5750,
"preview": "package org.jeecg.common.util;\n\nimport cn.hutool.core.date.DateUtil;\nimport org.jeecg.common.constant.enums.DateRangeEnu"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils.java",
"chars": 22814,
"preview": "package org.jeecg.common.util;\n\nimport org.jeecg.common.constant.SymbolConstant;\nimport org.springframework.util.StringU"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DySmsHelper.java",
"chars": 5974,
"preview": "package org.jeecg.common.util;\n\nimport cn.hutool.core.collection.CollectionUtil;\nimport com.alibaba.fastjson.JSONObject;"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DySmsLimit.java",
"chars": 3002,
"preview": "package org.jeecg.common.util;\n\nimport lombok.extern.slf4j.Slf4j;\n\nimport java.util.concurrent.ConcurrentHashMap;\n\n/**\n "
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/FileDownloadUtils.java",
"chars": 12039,
"preview": "package org.jeecg.common.util;\n\nimport cn.hutool.core.io.IoUtil;\nimport jakarta.servlet.http.HttpServletResponse;\nimport"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/FillRuleUtil.java",
"chars": 3128,
"preview": "package org.jeecg.common.util;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.bao"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/HTMLUtils.java",
"chars": 1375,
"preview": "package org.jeecg.common.util;\n\nimport org.apache.commons.lang3.StringUtils;\nimport org.commonmark.node.Node;\nimport org"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/ImportExcelUtil.java",
"chars": 4336,
"preview": "package org.jeecg.common.util;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.baomidou.mybatisplus.extension.servic"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/IpUtils.java",
"chars": 3243,
"preview": "package org.jeecg.common.util;\n\nimport jakarta.servlet.http.HttpServletRequest;\n\nimport org.apache.commons.lang3.StringU"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/Md5Util.java",
"chars": 1191,
"preview": "package org.jeecg.common.util;\n\nimport java.security.MessageDigest;\n\n/**\n * @Description: 加密工具\n * @author: jeecg-boot\n *"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/MinioUtil.java",
"chars": 7186,
"preview": "package org.jeecg.common.util;\n\nimport io.minio.*;\nimport io.minio.http.Method;\nimport lombok.extern.slf4j.Slf4j;\nimport"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/MyClassLoader.java",
"chars": 3146,
"preview": "package org.jeecg.common.util;\n\nimport org.jeecg.common.constant.SymbolConstant;\n\n/**\n * @Author 张代浩\n */\npublic class M"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/MyCommonsMultipartFile.java",
"chars": 1889,
"preview": "package org.jeecg.common.util;\n\nimport org.apache.commons.fileupload.FileItem;\nimport org.springframework.web.multipart."
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/PasswordUtil.java",
"chars": 4304,
"preview": "package org.jeecg.common.util;\n\nimport java.security.Key;\nimport java.security.SecureRandom;\nimport javax.crypto.Cipher;"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/PmsUtil.java",
"chars": 1912,
"preview": "package org.jeecg.common.util;\n\nimport lombok.extern.slf4j.Slf4j;\nimport org.springframework.beans.factory.annotation.Va"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/ReflectHelper.java",
"chars": 9624,
"preview": "package org.jeecg.common.util;\n\nimport com.baomidou.mybatisplus.annotation.TableField;\nimport lombok.extern.slf4j.Slf4j;"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/RestDesformUtil.java",
"chars": 3824,
"preview": "package org.jeecg.common.util;\n\nimport com.alibaba.fastjson.JSONObject;\nimport org.jeecg.common.api.vo.Result;\nimport or"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/RestUtil.java",
"chars": 11792,
"preview": "package org.jeecg.common.util;\n\nimport com.alibaba.fastjson.JSONObject;\nimport lombok.extern.slf4j.Slf4j;\nimport org.apa"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/ShiroThreadPoolExecutor.java",
"chars": 1150,
"preview": "package org.jeecg.common.util;\n\nimport org.apache.shiro.SecurityUtils;\nimport org.apache.shiro.mgt.SecurityManager;\nimpo"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/SpringContextUtils.java",
"chars": 3088,
"preview": "package org.jeecg.common.util;\n\nimport jakarta.servlet.http.HttpServletRequest;\nimport jakarta.servlet.http.HttpServletR"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/SqlInjectionUtil.java",
"chars": 12683,
"preview": "package org.jeecg.common.util;\n\nimport cn.hutool.core.util.ReUtil;\nimport lombok.extern.slf4j.Slf4j;\nimport org.jeecg.co"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/TencentSms.java",
"chars": 6187,
"preview": "package org.jeecg.common.util;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.tencentcloudapi.common.Credential;\nim"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/TokenUtils.java",
"chars": 6140,
"preview": "package org.jeecg.common.util;\n\nimport lombok.extern.slf4j.Slf4j;\nimport org.apache.commons.lang3.StringUtils;\nimport or"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/UUIDGenerator.java",
"chars": 1909,
"preview": "package org.jeecg.common.util;\n\n\nimport java.net.InetAddress;\n\n/**\n * \n * @Author 张代浩\n *\n */\npublic class UUIDGenerator"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/YouBianCodeUtil.java",
"chars": 3935,
"preview": "package org.jeecg.common.util;\n\nimport io.netty.util.internal.StringUtil;\n\n/**\n * 流水号生成规则(按默认规则递增,数字从1-99开始递增,数字到99,递增字母"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/DataSourceCachePool.java",
"chars": 2901,
"preview": "package org.jeecg.common.util.dynamic.db;\n\nimport com.alibaba.druid.pool.DruidDataSource;\nimport org.jeecg.common.api.Co"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/DbTypeUtils.java",
"chars": 4533,
"preview": "package org.jeecg.common.util.dynamic.db;\n\nimport com.baomidou.mybatisplus.annotation.DbType;\nimport org.jeecg.common.co"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/DynamicDBUtil.java",
"chars": 12297,
"preview": "package org.jeecg.common.util.dynamic.db;\n\nimport com.alibaba.druid.pool.DruidDataSource;\nimport lombok.extern.slf4j.Slf"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/FreemarkerParseFactory.java",
"chars": 7218,
"preview": "package org.jeecg.common.util.dynamic.db;\n\nimport freemarker.cache.StringTemplateLoader;\nimport freemarker.core.ParseExc"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/encryption/AesEncryptUtil.java",
"chars": 4194,
"preview": "package org.jeecg.common.util.encryption;\n\nimport lombok.extern.slf4j.Slf4j;\nimport org.apache.shiro.lang.codec.Base64;\n"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/encryption/EncryptedString.java",
"chars": 339,
"preview": "package org.jeecg.common.util.encryption;\n\n\nimport lombok.Data;\n\n/**\n * @Description: EncryptedString\n * @author: jeecg-"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/filter/SsrfFileTypeFilter.java",
"chars": 10974,
"preview": "package org.jeecg.common.util.filter;\n\nimport lombok.extern.slf4j.Slf4j;\nimport org.apache.commons.lang3.StringUtils;\nim"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/filter/StrAttackFilter.java",
"chars": 724,
"preview": "package org.jeecg.common.util.filter;\n\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\nimport java.util."
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/oConvertUtils.java",
"chars": 28875,
"preview": "package org.jeecg.common.util;\n\nimport com.alibaba.fastjson.JSONArray;\nimport lombok.extern.slf4j.Slf4j;\nimport org.apac"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/oss/OssBootUtil.java",
"chars": 12505,
"preview": "package org.jeecg.common.util.oss;\n\nimport com.aliyun.oss.ClientConfiguration;\nimport com.aliyun.oss.OSSClient;\nimport c"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/AbstractQueryBlackListHandler.java",
"chars": 7118,
"preview": "package org.jeecg.common.util.security;\n\nimport lombok.extern.slf4j.Slf4j;\nimport org.apache.commons.lang.StringUtils;\ni"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/JdbcSecurityUtil.java",
"chars": 1415,
"preview": "package org.jeecg.common.util.security;\n\nimport org.jeecg.common.exception.JeecgBootException;\nimport org.jeecg.common.u"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/SecurityTools.java",
"chars": 2998,
"preview": "package org.jeecg.common.util.security;\n\nimport cn.hutool.core.codec.Base64Decoder;\nimport cn.hutool.core.codec.Base64En"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/entity/MyKeyPair.java",
"chars": 214,
"preview": "package org.jeecg.common.util.security.entity;\n\nimport lombok.Data;\n\n/**\n * @Description: MyKeyPair\n * @author: jeecg-bo"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/entity/SecurityReq.java",
"chars": 272,
"preview": "package org.jeecg.common.util.security.entity;\n\nimport lombok.Data;\n\n/**\n * @Description: SecurityReq\n * @author: jeecg-"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/entity/SecurityResp.java",
"chars": 264,
"preview": "package org.jeecg.common.util.security.entity;\n\nimport com.alibaba.fastjson.JSONObject;\nimport lombok.Data;\n\n/**\n * @Des"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/entity/SecuritySignReq.java",
"chars": 224,
"preview": "package org.jeecg.common.util.security.entity;\n\nimport lombok.Data;\n\n/**\n * @Description: SecuritySignReq\n * @author: je"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/entity/SecuritySignResp.java",
"chars": 255,
"preview": "package org.jeecg.common.util.security.entity;\n\nimport lombok.Data;\n\n/**\n * @Description: SecuritySignResp\n * @author: j"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/sqlparse/JSqlParserAllTableManager.java",
"chars": 10214,
"preview": "//package org.jeecg.common.util.sqlparse;\n//\n//import lombok.extern.slf4j.Slf4j;\n//import net.sf.jsqlparser.JSQLParserEx"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/sqlparse/JSqlParserUtils.java",
"chars": 7556,
"preview": "//package org.jeecg.common.util.sqlparse;\n//\n//import lombok.extern.slf4j.Slf4j;\n//import net.sf.jsqlparser.JSQLParserEx"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/sqlparse/vo/SelectSqlInfo.java",
"chars": 2749,
"preview": "//package org.jeecg.common.util.sqlparse.vo;\n//\n//import lombok.Data;\n//import net.sf.jsqlparser.statement.select.Select"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/superSearch/ObjectParseUtil.java",
"chars": 1267,
"preview": "//package org.jeecg.common.util.superSearch;\n//\n//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;\n//"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/superSearch/QueryRuleEnum.java",
"chars": 1503,
"preview": "//package org.jeecg.common.util.superSearch;\n//\n//import org.jeecg.common.util.oConvertUtils;\n//\n///**\n// * Query 规则 常量\n"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/superSearch/QueryRuleVo.java",
"chars": 257,
"preview": "//package org.jeecg.common.util.superSearch;\n//\n//import lombok.Data;\n//\n///**\n// * @Description: QueryRuleVo\n// * @auth"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/AiRagConfigBean.java",
"chars": 536,
"preview": "package org.jeecg.config;\n\nimport lombok.Data;\nimport org.springframework.boot.context.properties.ConfigurationPropertie"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/AutoPoiConfig.java",
"chars": 734,
"preview": "package org.jeecg.config;\n\nimport org.jeecgframework.core.util.ApplicationContextUtil;\nimport org.springframework.contex"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/AutoPoiDictConfig.java",
"chars": 2217,
"preview": "package org.jeecg.config;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport jakarta.annotation.Resource;\n\nimpo"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/CorsFilterCondition.java",
"chars": 692,
"preview": "package org.jeecg.config;\n\nimport org.jeecg.common.constant.CommonConstant;\nimport org.springframework.context.annotatio"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/DruidConfig.java",
"chars": 2954,
"preview": "package org.jeecg.config;\n\nimport java.io.IOException;\n\nimport com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSou"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/DruidWallConfigRegister.java",
"chars": 1528,
"preview": "package org.jeecg.config;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.SpringAppl"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/JeecgBaseConfig.java",
"chars": 4030,
"preview": "package org.jeecg.config;\n\nimport lombok.Getter;\nimport lombok.Setter;\nimport org.jeecg.config.tencent.JeecgTencent;\nimp"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/JeecgCloudCondition.java",
"chars": 678,
"preview": "package org.jeecg.config;\n\nimport org.jeecg.common.constant.CommonConstant;\nimport org.springframework.context.annotatio"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/JeecgGaodeBaseConfig.java",
"chars": 642,
"preview": "package org.jeecg.config;\n\nimport org.jeecg.config.vo.GaoDeApi;\nimport org.springframework.boot.context.properties.Confi"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/JeecgSmsTemplateConfig.java",
"chars": 581,
"preview": "package org.jeecg.config;\n\nimport lombok.Data;\nimport org.springframework.boot.context.properties.ConfigurationPropertie"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/RestTemplateConfig.java",
"chars": 887,
"preview": "package org.jeecg.config;\n\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annota"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/StaticConfig.java",
"chars": 989,
"preview": "package org.jeecg.config;\n\nimport lombok.Data;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.spr"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger2Config.java",
"chars": 7701,
"preview": "//package org.jeecg.config;\n//\n//\n//import io.swagger.v3.oas.annotations.Operation;\n//import org.jeecg.common.constant.C"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger3Config.java",
"chars": 5997,
"preview": "package org.jeecg.config;\n\nimport io.swagger.v3.oas.annotations.Operation;\nimport io.swagger.v3.oas.models.Components;\ni"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/TaskSchedulerConfig.java",
"chars": 1017,
"preview": "package org.jeecg.config;\n\nimport lombok.extern.slf4j.Slf4j;\nimport org.springframework.boot.autoconfigure.condition.Con"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/WebMvcConfiguration.java",
"chars": 7942,
"preview": "package org.jeecg.config;\n\nimport com.fasterxml.jackson.core.JsonGenerator;\nimport com.fasterxml.jackson.databind.Deseri"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/WebSocketConfig.java",
"chars": 1196,
"preview": "package org.jeecg.config;\n\nimport org.jeecg.config.filter.WebsocketFilter;\nimport org.springframework.boot.web.servlet.F"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/filter/RequestBodyReserveFilter.java",
"chars": 1173,
"preview": "package org.jeecg.config.filter;\n\nimport org.jeecg.common.constant.CommonConstant;\nimport org.jeecg.config.sign.util.Bod"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/filter/WebsocketFilter.java",
"chars": 2085,
"preview": "package org.jeecg.config.filter;\n\nimport lombok.extern.slf4j.Slf4j;\nimport org.jeecg.common.api.CommonAPI;\nimport org.je"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/firewall/SqlInjection/IDictTableWhiteListHandler.java",
"chars": 609,
"preview": "package org.jeecg.config.firewall.SqlInjection;\n\n/**\n * 字典表查询 :: 白名单配置\n *\n * @Author taoYan\n * @Date 2022/3/17 11:21\n **"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/firewall/SqlInjection/SysDictTableWhite.java",
"chars": 2147,
"preview": "package org.jeecg.config.firewall.SqlInjection;\n\nimport lombok.extern.slf4j.Slf4j;\nimport org.jeecg.common.util.oConvert"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/firewall/interceptor/LowCodeModeConfiguration.java",
"chars": 837,
"preview": "package org.jeecg.config.firewall.interceptor;\n\nimport org.jeecg.config.firewall.interceptor.enums.LowCodeUrlsEnum;\nimpo"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/firewall/interceptor/LowCodeModeInterceptor.java",
"chars": 3920,
"preview": "package org.jeecg.config.firewall.interceptor;\n\nimport com.alibaba.fastjson.JSON;\nimport lombok.extern.slf4j.Slf4j;\nimpo"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/firewall/interceptor/enums/LowCodeUrlsEnum.java",
"chars": 3607,
"preview": "package org.jeecg.config.firewall.interceptor.enums;\n\n\nimport java.util.Arrays;\nimport java.util.List;\nimport java.util."
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/JeecgTenantParser.java",
"chars": 5491,
"preview": "//package org.jeecg.config.mybatis;\n//\n//import com.baomidou.mybatisplus.extension.plugins.tenant.TenantSqlParser;\n//imp"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/MybatisInterceptor.java",
"chars": 6107,
"preview": "package org.jeecg.config.mybatis;\n\nimport lombok.extern.slf4j.Slf4j;\nimport org.apache.ibatis.binding.MapperMethod.Param"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/MybatisPlusSaasConfig.java",
"chars": 7840,
"preview": "package org.jeecg.config.mybatis;\n\nimport cn.hutool.core.util.ObjectUtil;\nimport com.baomidou.mybatisplus.annotation.DbT"
},
{
"path": "jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/TenantContext.java",
"chars": 581,
"preview": "//package org.jeecg.config.mybatis;\n//\n//import lombok.extern.slf4j.Slf4j;\n//\n///**\n// * 多租户 tenant_id存储器\n// * @author: "
}
]
// ... and 2973 more files (download for full content)
About this extraction
This page contains the full source code of the jeecgboot/jeecg-boot GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3173 files (42.0 MB), approximately 8.1M tokens, and a symbol index with 10173 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.