Files
hzdyjs/【立即执行】出国申请附件下载修复指南.md
T
2025-10-14 16:41:19 +08:00

3.3 KiB
Raw Blame History

🚨 立即执行 - 出国申请附件下载修复指南

问题现象

点击出国申请详情中的附件下载按钮时,提示 Access Denied 错误。

快速修复步骤

1️⃣ 执行数据库SQL(⏱️ 1分钟)

# 位置:docs/设计文档/database/【立即执行】出国申请表添加OSS_ID字段.sql
# 内容:添加 stamped_file_oss_id 和 party_retention_file_oss_id 字段

执行命令:

-- 连接数据库后执行
source docs/设计文档/database/【立即执行】出国申请表添加OSS_ID字段.sql;

2️⃣ 重启后端服务(⏱️ 2分钟)

代码已自动修改完成,包括:

  • ✅ Domain实体类添加OSS ID字段
  • ✅ 上传接口改造(存储OSS ID)
  • ✅ 新增下载代理接口
  • ✅ Service层方法更新

需要操作:重启后端服务使代码生效

3️⃣ 刷新前端页面(⏱️ 10秒)

前端下载逻辑已修改为调用后端代理接口

需要操作:浏览器刷新页面(Ctrl+F5 / Cmd+Shift+R)

✅ 验证步骤

  1. 上传测试:新上传一个盖章文件,检查数据库中是否有stamped_file_oss_id
  2. 下载测试:点击下载按钮,确认可以正常下载
  3. 权限测试:未登录用户访问下载链接,应该被拦截

📊 改造文件清单

后端文件(已修改)

  • backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/RsOverseasApplication.java
  • backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/vo/RsOverseasApplicationVo.java
  • backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/controller/RsOverseasApplicationController.java
  • backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/IRsOverseasApplicationService.java
  • backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/impl/RsOverseasApplicationServiceImpl.java

前端文件(已修改)

  • web/src/views/rs/overseas/index.vue

数据库脚本(待执行)

  • docs/设计文档/database/【立即执行】出国申请表添加OSS_ID字段.sql

🎯 核心改动说明

改动前

前端 → 直接访问OSS URL → ❌ Access Denied

改动后

前端 → 后端代理接口 → 权限验证 → OSS安全下载 → ✅ 下载成功

⚠️ 重要提示

旧数据兼容性

已存在的文件没有OSS ID,有以下处理方案:

方案1(推荐):让用户重新上传

  • 优点:简单直接,数据干净
  • 缺点:需要用户操作

方案2:编写数据迁移脚本

  • 优点:自动处理
  • 缺点:需要开发额外脚本

方案3:保留兼容逻辑

  • 在下载接口中添加降级处理:如果没有OSS ID,尝试使用文件路径

📚 详细文档

完整的改造方案和技术细节请参考:

  • docs/开发文档/出国申请附件下载权限修复方案.md

🔍 故障排查

Q1: 执行SQL后仍然下载失败?

A: 检查后端服务是否重启,前端页面是否刷新

Q2: 新上传的文件也下载失败?

A: 检查sys_oss表中是否有对应记录,检查OSS配置是否正确

Q3: 提示"无权限"?

A: 检查用户是否有rs:overseas:query权限


执行时间:约3-5分钟
风险等级:🟢 低(只增加字段,不修改已有数据)
回滚方案:删除新增的两个字段即可

日期:2025-01-10