应付云仓车费:附件支持点击下载 #329

Merged
zhoushengchen merged 1 commits from feature/zhoushengchen-vehicle-fee-attachment-download into main 2026-10-13 13:58:33 +08:00
Collaborator

变更内容

  • 附件列不再只显示元数据:每个附件渲染为可点击的文件名链接(含大小)。
  • 新增下载接口 GET workspace/courier-payables/payable-cloud-warehouse-vehicle-fee/attachment?process_instance_id=&file_id=:先校验附件确实属于该审批实例(读镜像表单数据,防止任意 fileId 越权),再通过钉钉「下载审批附件」接口(POST /v1.0/workflow/processInstances/spaces/files/urls/download)换取钉盘临时地址,由本服务透传下载(带原始中文文件名)。
  • 复用登录用企业内部应用凭证(config('dingtalk')),应用 token 缓存 100 分钟;钉盘地址请求时不附加额外请求头(避免破坏 OSS 签名)。
  • 页面附件单元格渲染为下载链接列表。

修改文件

  • app/Http/Controllers/Business/Pages.php
  • modules/EcommerceFinance/Repositories/DingPayableWorkflowMirrorRepository.php
  • modules/EcommerceFinance/Services/DingTalkApprovalAttachmentDownloader.php(新增)
  • resources/views/business/pages/courier-payables/payable-cloud-warehouse-vehicle-fee.blade.php
  • routes/admin.php
  • tests/Feature/Business/DingPayableWorkflowPageTest.php

验证

  • 本地真实下载:HTTP 200、7,434,792 字节、xlsx(PK 头)、Content-Disposition 中文文件名正确。
  • 测试:6 passed / 40 assertions(含 Http::fake 的透传下载用例与越权 404 用例)。

说明

  • 生产/本地所需钉钉凭证已通过各环境 .env 配置(未进入 Git)。
## 变更内容 - 附件列不再只显示元数据:每个附件渲染为可点击的文件名链接(含大小)。 - 新增下载接口 GET workspace/courier-payables/payable-cloud-warehouse-vehicle-fee/attachment?process_instance_id=&file_id=:先校验附件确实属于该审批实例(读镜像表单数据,防止任意 fileId 越权),再通过钉钉「下载审批附件」接口(POST /v1.0/workflow/processInstances/spaces/files/urls/download)换取钉盘临时地址,由本服务透传下载(带原始中文文件名)。 - 复用登录用企业内部应用凭证(config('dingtalk')),应用 token 缓存 100 分钟;钉盘地址请求时不附加额外请求头(避免破坏 OSS 签名)。 - 页面附件单元格渲染为下载链接列表。 ## 修改文件 - app/Http/Controllers/Business/Pages.php - modules/EcommerceFinance/Repositories/DingPayableWorkflowMirrorRepository.php - modules/EcommerceFinance/Services/DingTalkApprovalAttachmentDownloader.php(新增) - resources/views/business/pages/courier-payables/payable-cloud-warehouse-vehicle-fee.blade.php - routes/admin.php - tests/Feature/Business/DingPayableWorkflowPageTest.php ## 验证 - 本地真实下载:HTTP 200、7,434,792 字节、xlsx(PK 头)、Content-Disposition 中文文件名正确。 - 测试:6 passed / 40 assertions(含 Http::fake 的透传下载用例与越权 404 用例)。 ## 说明 - 生产/本地所需钉钉凭证已通过各环境 .env 配置(未进入 Git)。
zhoushengchen added 1 commit 2026-10-13 13:58:28 +08:00
zhoushengchen merged commit 8905192b78 into main 2026-10-13 13:58:32 +08:00
zhoushengchen deleted branch feature/zhoushengchen-vehicle-fee-attachment-download 2026-10-13 13:58:34 +08:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WuYongJie/CaiWuXiTong#329
No description provided.