diff --git a/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/config/FilterConfig.java b/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/config/FilterConfig.java index 43dd5ba..77d98ce 100644 --- a/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/config/FilterConfig.java +++ b/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/config/FilterConfig.java @@ -40,6 +40,7 @@ public class FilterConfig { } corsConfiguration.addAllowedHeader("*"); corsConfiguration.addAllowedMethod("*"); + corsConfiguration.addExposedHeader("Content-Disposition"); corsConfiguration.addExposedHeader(applicationConfig.getRefreshedTokenHeaderKey()); corsConfiguration.setAllowCredentials(true); configSource.registerCorsConfiguration("/**", corsConfiguration); diff --git a/application-tenant/tenant-admin/src/main/resources/tenant-admin-dev.yml b/application-tenant/tenant-admin/src/main/resources/tenant-admin-dev.yml index f60b9c4..48ebc60 100644 --- a/application-tenant/tenant-admin/src/main/resources/tenant-admin-dev.yml +++ b/application-tenant/tenant-admin/src/main/resources/tenant-admin-dev.yml @@ -49,13 +49,10 @@ common-openapi: # token 有效期(秒)。 tokenExpiration: 7200 common-online: - # 注意不要以反斜杠(/)结尾。 - urlPrefix: /tenantadmin/online - # 打印接口的路径,不要以反斜杠(/)结尾。 + # ===== 既有配置,保留 ===== + urlPrefix: /tenantadmin/online # 不要以 / 结尾 printUrlPath: /tenantadmin/report/reportPrint/print - # 在线表单业务数据上传资源路径 - uploadFileBaseDir: ./zz-resource/upload-files/online - # 如果为false,在线表单模块中所有Controller接口将不能使用。 + uploadFileBaseDir: ./zz-resource/upload-files/online # ★导入导出文件根目录,建议改成绝对路径 operationEnabled: true # 1: minio 2: aliyun-oss 3: qcloud-cos。 distributeStoreType: 2 @@ -74,6 +71,7 @@ common-online: - ${common-online.urlPrefix}/onlineOperation/downloadDatasource/ - ${common-online.urlPrefix}/onlineOperation/downloadOneToManyRelation/ - ${common-online.urlPrefix}/onlineOperation/print/ + - ${common-online.urlPrefix}/onlineOperation/exportExecute/ # ★F7/导入导出新增 editUrlList: - ${common-online.urlPrefix}/onlineOperation/addDatasource/ - ${common-online.urlPrefix}/onlineOperation/addOneToManyRelation/ @@ -85,12 +83,27 @@ common-online: - ${common-online.urlPrefix}/onlineOperation/deleteBatchOneToManyRelation/ - ${common-online.urlPrefix}/onlineOperation/uploadDatasource/ - ${common-online.urlPrefix}/onlineOperation/uploadOneToManyRelation/ - # 下面这些有默认值,按需覆盖 - importExportFileRetainHours: 24 - # ==== 临时联调用:调到 5 行方便走异步分支,联调完记得还原(正式值 5000 / 50000)==== - importAsyncRowThreshold: 5 - exportAsyncRowThreshold: 5 + - ${common-online.urlPrefix}/onlineOperation/importValidate/ # ★导入导出新增 + - ${common-online.urlPrefix}/onlineOperation/importExecute/ # ★导入导出新增 + - ${common-online.urlPrefix}/onlineOperation/exportExecute/ # ★导入导出新增 + # ===== 本次新增(导入导出优化)===== + # 单次导入的最大Excel行数(不含表头行),超出提示分批导入 + importMaxRowCount: 20000 + # 单次导入的文件大小上限(MB),先判大小再判行数 + importMaxFileSizeMb: 10 + # 导入写入的每批行数,批内任一组失败整批回滚 + importBatchSize: 500 + # 导入行数超过该阈值转异步任务 + importAsyncRowThreshold: 5000 + # 导出主记录数超过该阈值转异步任务 + exportAsyncRowThreshold: 50000 + # 异步任务线程池(队列满直接返回「系统繁忙」) + asyncTaskPoolSize: 2 + asyncTaskQueueCapacity: 100 + # 异步任务记录与结果文件保留天数 asyncTaskRetainDays: 7 + # 导入导出文件保留小时数(下载过的立即删,未下载的超时由定时任务删) + importExportFileRetainHours: 24 common-flow: # 请慎重修改urlPrefix的缺省配置,注意不要以反斜杠(/)结尾。如必须修改其他路径,请同步修改数据库脚本。 urlPrefix: /tenantadmin/flow diff --git a/common/common-openapi/src/main/java/apelet/common/openapi/controller/OpenApiAuthController.java b/common/common-openapi/src/main/java/apelet/common/openapi/controller/OpenApiAuthController.java index 2be2619..d85007a 100644 --- a/common/common-openapi/src/main/java/apelet/common/openapi/controller/OpenApiAuthController.java +++ b/common/common-openapi/src/main/java/apelet/common/openapi/controller/OpenApiAuthController.java @@ -1,5 +1,6 @@ package apelet.common.openapi.controller; +import apelet.common.core.annotation.NoAuthInterface; import apelet.common.core.constant.ErrorCodeEnum; import apelet.common.core.mcp.annotation.McpToolClass; import apelet.common.core.mcp.annotation.McpToolParam; @@ -38,6 +39,7 @@ public class OpenApiAuthController { */ @PostMapping("/token") @McpToolClass(name = "openapi_auth_token", description = "按应用编码+密钥+用户名换取 OpenAPI 访问 token(返回 accessToken/expiresIn)") + @NoAuthInterface public ResponseResult token(@RequestBody(required = false) @McpToolParam(fieldName = "tokenDto", type = McpToolParamType.OBJECT, description = "换 token 请求体(appCode/appSecret/username)", schemaClass = OpenApiTokenDto.class) OpenApiTokenDto tokenDto) { if (tokenDto == null) { return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); diff --git a/common/common-openapi/src/main/java/apelet/common/openapi/controller/OpenApiRouterController.java b/common/common-openapi/src/main/java/apelet/common/openapi/controller/OpenApiRouterController.java index 9555aca..2262d83 100644 --- a/common/common-openapi/src/main/java/apelet/common/openapi/controller/OpenApiRouterController.java +++ b/common/common-openapi/src/main/java/apelet/common/openapi/controller/OpenApiRouterController.java @@ -1,5 +1,6 @@ package apelet.common.openapi.controller; +import apelet.common.core.annotation.NoAuthInterface; import apelet.common.core.mcp.annotation.McpToolClass; import apelet.common.core.mcp.annotation.McpToolParam; import apelet.common.core.mcp.model.McpToolParamType; @@ -44,6 +45,7 @@ public class OpenApiRouterController { */ @PostMapping("/{pageCode}/{formCode}/{operationCode}") @McpToolClass(name = "openapi_route_execute", description = "执行 OpenAPI 开放接口配置(HTTP 由 token 鉴权;MCP 直调暂返回无权,仅占位)") + @NoAuthInterface public ResponseResult execute(@PathVariable @McpToolParam(fieldName = "pageCode", type = McpToolParamType.STRING, description = "页面编码", required = true) String pageCode, @PathVariable @McpToolParam(fieldName = "formCode", type = McpToolParamType.STRING, description = "表单编码", required = true) String formCode, @PathVariable @McpToolParam(fieldName = "operationCode", type = McpToolParamType.STRING, description = "操作编码", required = true) String operationCode,