diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/HcsSyncController.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/HcsSyncController.java index 2b099116..531d9b94 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/HcsSyncController.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/HcsSyncController.java @@ -280,6 +280,20 @@ public class HcsSyncController { } } + /** + * 合同附件下载(路径式文件名,url 以 .pdf 等后缀结尾):前端附件组件按 url 路径后缀识别可否预览, + * query 传 fdId 与 inline;行为与 /attachment/download 完全一致 + */ + @GetMapping("/attachment/download/{name}") + @ApiOperationSupport(order = 12) + @Operation(summary = "合规附件下载(路径式文件名)", description = "C103-5 代理:路径携带文件名(含后缀,前端预览识别用),fdId 必传,inline=true 时内嵌预览") + public void downloadAttachmentWithPath(@Parameter(description = "下载文件名(含后缀)", required = true) @PathVariable String name, + @Parameter(description = "合规附件ID", required = true) @RequestParam String fdId, + @Parameter(description = "内嵌预览(可选,pdf 在线查看)") @RequestParam(required = false) Boolean inline, + HttpServletResponse response) throws Exception { + this.downloadAttachment(fdId, name, inline, response); + } + /** * 合同特批结果人工确认(§6-U1 过渡方案:与合规推送等效) */ diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/PaymentApplicationServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/PaymentApplicationServiceImpl.java index 4e4b8aee..9352a005 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/PaymentApplicationServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/PaymentApplicationServiceImpl.java @@ -610,9 +610,11 @@ public class PaymentApplicationServiceImpl extends BaseServiceImpl specRow = new LinkedHashMap<>(); specRow.put("name", HcsSyncConstant.PAYMENT_SPEC_ATTACH_NAME + ".pdf"); specRow.put("attachmentType", HcsSyncConstant.PAYMENT_ATTACH_TYPE_SPEC_RESULT); - // 网关按服务名前缀路由(口径同 nacos skip-url);inline 内嵌预览 pdf,浏览器可直接查看/另存 - specRow.put("url", "/blade-transport/hcs/attachment/download?fdId=" + vo.getHcsSpecAttachFdId() - + "&inline=true&name=" + URLEncoder.encode(HcsSyncConstant.PAYMENT_SPEC_ATTACH_NAME + ".pdf", StandardCharsets.UTF_8)); + // 网关按服务名前缀路由(口径同 nacos skip-url);url 路径以 .pdf 结尾供前端预览组件识别后缀, + // inline 内嵌预览,浏览器可直接查看/另存 + specRow.put("url", "/blade-transport/hcs/attachment/download/" + + URLEncoder.encode(HcsSyncConstant.PAYMENT_SPEC_ATTACH_NAME + ".pdf", StandardCharsets.UTF_8) + + "?fdId=" + vo.getHcsSpecAttachFdId() + "&inline=true"); rows.add(specRow); vo.setAttachmentsJson(JsonUtil.toJson(rows)); } catch (Exception exception) { diff --git a/doc/nacos/blade.yaml b/doc/nacos/blade.yaml index 7f1b43ef..1917bf5f 100644 --- a/doc/nacos/blade.yaml +++ b/doc/nacos/blade.yaml @@ -247,8 +247,8 @@ blade: - /blade-transport/hcs/contractKingdee/result - /hcs/contractKingdee/result # HCS 合规附件下载(C103-5 代理):前端附件面板凭合规附件ID 查看/下载,fdId 32位随机不可枚举,免登免授权 - - /blade-transport/hcs/attachment/download - - /hcs/attachment/download + - /blade-transport/hcs/attachment/download/** + - /hcs/attachment/download/** #授权认证配置 auth: - method: ALL @@ -303,10 +303,10 @@ blade: expression: "permitAll()" # HCS 合规附件下载(C103-5 代理):前端附件面板凭合规附件ID 查看/下载,fdId 32位随机不可枚举,免登免授权 - method: GET - pattern: /blade-transport/hcs/attachment/download + pattern: /blade-transport/hcs/attachment/download/** expression: "permitAll()" - method: GET - pattern: /hcs/attachment/download + pattern: /hcs/attachment/download/** expression: "permitAll()" #基础认证配置 basic: