feat(changelog): 参数类型错误文案升级 + 富文本上传前端联动建议 (PR #1308)

这个提交包含在:
API Changelog Bot 2026-04-23 15:55:55 +08:00
父节点 11dc90c960
当前提交 6ae58d8e8e

查看文件

@ -0,0 +1,114 @@
# 参数类型错误响应文案升级 + 富文本上传前端联动建议
**日期**: 2026-04-23
**PR**: #1308 (Closes #1307, Closes #1305)
**服务**: hl-common-log全局异常处理器/ hl-user-serviceSysOssController
**类型**: fix错误文案诊断性增强 + 前端联动建议)
---
## 背景
本次批量修复源于用户反馈 2 个后台 bug
1. **Bug1**:资源服务 → 服务人员管理,点删除按钮报『参数类型错误: staffId』,但看不到实际值,无法判断是前端 undefined、NaN 还是类型不匹配。
2. **Bug2**:资源服务 → 组合配品(备品)→ 详细介绍富文本上传图片,偶发『资源不存在』和『请求超时』。
代码层排查结论:
- 后端 URL 和前端 URL 字符级一致 ✓
- StaffListVO.staffId 是 String雪花 ID 保护)✓
- toListVO 用 String.valueOf 填 VO ✓
- 前端 row.staffId 取值正确 ✓
最可能成因:
- Bug1测试服部署的前端 dist 为旧版本,取 `row.id` 而非 `row.staffId`,URL 变成 `/admin/staff/undefined`,Spring 抛 `MethodArgumentTypeMismatchException` 但响应不含实际值。
- Bug2前端 axios upload 默认 15s 超时对 10MB 富文本图片偏紧,慢网撞线 → 前端报『请求超时』或 HTTP 404 兜底『资源不存在』。
本次后端只做诊断增强,前端需要配合几处小调整。
---
## 后端行为变化(前端必读)
### 1. 全局参数类型错误响应文案升级
#### 之前PR #1308 前)
```http
DELETE /admin/staff/undefined
→ 200 {
"code": 400,
"message": "参数类型错误: staffId",
"data": null,
"success": false
}
```
#### 之后PR #1308 后)
```http
DELETE /admin/staff/undefined
→ 200 {
"code": 400,
"message": "参数类型错误: staffId='undefined'(需要 Long 类型)",
"data": null,
"success": false
}
```
**前端影响**
- 若前端某处对 message 做了**关键词匹配**(例如 `if (msg.includes("参数类型错误: staffId")) { ... }`),仍能命中(新文案仍以 `参数类型错误: staffId` 开头)。**向后兼容,无需改动**。
- 若前端直接展示 message默认情况,用户会看到更具诊断性的文案,能直接推断传给后端的非法值是什么。
### 2. 备品详细介绍上传端点保持不变
URL、请求方法、参数、响应体格式完全保持
```http
POST /admin/sys/oss/upload
Content-Type: multipart/form-data
file=<MultipartFile>
→ 200 {
"code": 200,
"data": { "url": "https://...", "fileId": "...", "fileName": "..." },
"success": true
}
```
后端仅加了 trace 日志(`[oss-upload] start/success/failed`),供运维排查。**前端无任何签名变化,无需改动业务代码**。
---
## 前端联动建议(⭐ 请前端同事落地)
### 建议 1`src/utils/request.js` 的 upload 方法 timeout 15000 → 60000
**原因**:后端富文本上传允许文件最大 10MB,经 OSS putObject + MD5 计算,在慢网环境常撞 axios 默认 15s 超时。实测 user 反馈偶发『请求超时』多是此原因。
**参考改动**
```js
// src/utils/request.js
upload(url, file, config = {}) {
const formData = new FormData()
formData.append('file', file)
return request.post(url, formData, {
timeout: 60000, // ← 从 15000 改为 60000
retry: false,
...config,
})
}
```
### 建议 2富文本上传组件 Result.code != 0 时显示后端 message
**原因**:目前前端 `src/utils/request.js:519-524` 把 HTTP 404 统一映射成『请求的资源不存在』。但后端 SysOssController 失败时抛的是 BusinessException,HTTP 依然 200,body 有 code != 0 和具体 message如 OSS SignatureError / OssInvalidAccessKey / OssNetworkError 等)。
**参考改动**:富文本编辑器的上传失败回调直接 `message.error(res.message)`,不走 404 分支的统一文案。
### 建议 3服务人员列表删除按钮取字段核对
**原因**:若前端线上 dist 取的是 `row.id` 而不是 `row.staffId`,会触发 `/admin/staff/undefined`。请核对当前 `src/views/resource/personnel/index.vue` 的删除按钮 handler + useCRUD 的 idKey 均为 `staffId`(最新代码已正确)。如仍有残留 `row.id` 引用请替换。
---
## 关联工单
- #1307 — fix: 服务人员删除报错『参数类型错误: staffId』
- #1305 — fix: 备品详细介绍富文本上传报『资源不存在』偶发『请求超时』