提交修改
This commit is contained in:
1 parent
bc70052bf8
commit
82ecb8621d
3 files changed
+190
-25
No files matched your search
@@ -0,0 +1,86 @@
|
||||
# 物业报修附件服务OSS文件上传修复记录
|
||||
|
||||
**变更时间**: 2025-01-27 15:30:00
|
||||
**变更人员**: Cursor AI
|
||||
**变更类型**: Bug修复
|
||||
**影响模块**: 后勤管理 - 物业报修附件管理
|
||||
|
||||
## 🔍 问题描述
|
||||
|
||||
在 `HqPmRepairAttachmentServiceImpl` 类的 `uploadFile` 方法中,尝试通过 `uploadResult.getOssId()` 获取OSS文件ID时出现编译错误:
|
||||
|
||||
```
|
||||
The method getOssId() is undefined for the type UploadResult
|
||||
```
|
||||
|
||||
## 🔧 问题分析
|
||||
|
||||
1. **根本原因**: `UploadResult` 类只有 `url`、`filename`、`eTag` 三个字段,没有 `ossId` 字段
|
||||
2. **错误用法**: 直接使用 `OssFactory.instance().uploadSuffix()` 方法,该方法返回的 `UploadResult` 不包含数据库中的 `ossId`
|
||||
3. **正确方式**: 应该使用 `SysOssService.upload()` 方法,该方法会将文件信息保存到数据库并返回包含 `ossId` 的 `SysOssVo` 对象
|
||||
|
||||
## ✅ 修复方案
|
||||
|
||||
### 1. 添加依赖注入
|
||||
```java
|
||||
private final ISysOssService sysOssService;
|
||||
```
|
||||
|
||||
### 2. 修改上传逻辑
|
||||
**修改前**:
|
||||
```java
|
||||
// 上传文件到OSS
|
||||
UploadResult uploadResult = OssFactory.instance().uploadSuffix(file.getBytes(), fileExtension, contentType);
|
||||
|
||||
// 构建附件信息
|
||||
bo.setFilePath("/resource/oss/download/" + uploadResult.getOssId()); // ❌ 错误
|
||||
```
|
||||
|
||||
**修改后**:
|
||||
```java
|
||||
// 通过SysOssService上传文件,获取ossId
|
||||
var sysOssVo = sysOssService.upload(file);
|
||||
|
||||
// 构建附件信息
|
||||
bo.setFilePath("/resource/oss/download/" + sysOssVo.getOssId()); // ✅ 正确
|
||||
```
|
||||
|
||||
### 3. 修复文件删除逻辑
|
||||
同时修复了删除文件时的OSS文件删除逻辑,从文件路径中提取 `ossId` 并调用 `sysOssService.deleteWithValidByIds()` 方法。
|
||||
|
||||
## 📝 修改文件
|
||||
|
||||
- `backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/HqPmRepairAttachmentServiceImpl.java`
|
||||
|
||||
## 🔄 修改内容
|
||||
|
||||
1. **导入依赖**: 添加 `ISysOssService` 导入
|
||||
2. **依赖注入**: 添加 `sysOssService` 字段注入
|
||||
3. **上传方法**: 修改 `uploadFile` 方法使用 `sysOssService.upload()`
|
||||
4. **删除方法**: 修改 `deleteAttachment` 和 `deleteWithValidByIds` 方法中的OSS文件删除逻辑
|
||||
5. **异常处理**: 将 `IOException` 改为 `Exception` 以捕获更多异常类型
|
||||
|
||||
## ✅ 验证结果
|
||||
|
||||
- ✅ 编译通过,无语法错误
|
||||
- ✅ 使用正确的OSS服务获取 `ossId`
|
||||
- ✅ 文件删除逻辑与RuoYi框架标准保持一致
|
||||
- ✅ 异常处理更加完善
|
||||
|
||||
## 📚 相关文档
|
||||
|
||||
- [RuoYi框架OSS文件上传规范](docs/开发文档/API/API文档基础规范.md)
|
||||
- [物业报修管理API文档](docs/开发文档/API/物业报修管理API.md)
|
||||
|
||||
## 🎯 技术要点
|
||||
|
||||
1. **OSS文件管理**: 使用 `SysOssService` 而不是直接使用 `OssFactory`
|
||||
2. **数据库一致性**: 确保文件信息同时保存到OSS和数据库
|
||||
3. **文件路径格式**: 使用 `/resource/oss/download/{ossId}` 格式
|
||||
4. **异常处理**: 完善的异常捕获和日志记录
|
||||
|
||||
---
|
||||
|
||||
**变更状态**: ✅ 已完成
|
||||
**测试状态**: 🔄 待测试
|
||||
**部署状态**: 🔄 待部署
|
||||
Reference in new issue
Block a user