4.8 KiB
【后端修复 + 前端优化·管理后台】退费说明保存 500 已修 + 提交确认弹窗字段显示
PR: #3429(后端修复)| 关联工单: #3428 服务: hl-resource-service | 更新时间: 2026-06-04
存放目录:
changelogs-v2/2026-06/影响范围: 管理后台「编辑景区 / 活动 → 退费说明」tab;前端列表行「确认提交修改」弹窗
⚠️ 关键说明
- 后端 bug 已修(前端可重测):景区/活动「退费说明」保存带「生效起 / 生效止」日期的退费明细时报 500,现已修复并部署测试服。接口契约未变,前端无需改调用方式,重新走原保存流程即可。
- 前端待优化(§2):列表「确认提交修改」弹窗里
refundNote字段显示为英文字段名 + 值「[复杂对象]」,普通运营看不懂,建议改为中文标签「退费说明」+ 可读摘要。 - 测试数据已补:已给测试库 66 个景区全部补充退费说明示例数据(每个 3 条明细,含带日期明细),方便前端联调展示。
1. 后端修复说明
现象
「编辑景区 → 退费说明」填入带「生效起 / 生效止」日期的退费明细,点保存 → 500:
服务器内部错误[MyBatisSystemException]: org.apache.ibatis.type.TypeException:
Could not set parameters for mapping: Para...
不填日期则保存成功。这也是此前测试库退费说明(带日期)一直存不进的原因。
根因
退费明细数组(items)以 JSON 列存库(MyBatis-Plus JacksonTypeHandler),明细条目含 effectiveFrom / effectiveTo(LocalDate)。MP 默认的 JacksonTypeHandler ObjectMapper 未注册 JavaTimeModule,序列化 Java 8 时间类型抛异常,在写库参数阶段表现为「Could not set parameters」→ 500。
修复
hl-resource-service 给 JacksonTypeHandler 配置注册了 JavaTimeModule 的 ObjectMapper(日期以 ISO 字符串 yyyy-MM-dd 存储),纯加性修复,不改接口契约。
受影响接口(契约不变,仅恢复正常保存)
| 方法 | 路径 | 说明 |
|---|---|---|
| PUT | /admin/refund-note |
退费说明独立保存(upsert) |
| PUT | /admin/scenic/spot/{scenicId} |
景区编辑(融合 refundNote 字段) |
| PUT | /admin/activity/...(编辑) |
活动编辑(融合 refundNote 字段) |
测试服实测(已通过)
- 带生效起止日期保存 → 200,回读确认
effectiveFrom/effectiveTo正确落库、settleScopeLabel正常拼装(如「按人」) - 不带日期保存 → 200(不回归)
2. 前端待优化:「确认提交修改」弹窗字段显示
现状(截图)
列表行编辑提交时的「确认提交修改」弹窗,对 refundNote 字段显示为:
| 字段 | 原值 | 新值 |
|---|---|---|
refundNote |
[复杂对象] | [复杂对象] |
两个问题:
- 字段名是英文
refundNote—— 运营看不懂,应显示中文「退费说明」。 - 值显示「[复杂对象]」 —— 退费说明是结构化对象(整体介绍 + 明细数组),无法直接 diff,建议给个可读摘要而非「复杂对象」。
期望
| 字段 | 期望显示 |
|---|---|
| 字段名 | 「退费说明」(中文标签,建议前端维护字段 key → 中文名映射表) |
| 值 | 可读摘要,如「整体介绍 + N 条明细」,或直接提示「退费说明已修改(点开退费说明 tab 查看)」,避免「复杂对象」字样 |
说明:
refundNote是后端字段 key,后端不下发中文标签;字段名→中文、复杂对象的友好展示属前端渲染逻辑。其他类似的结构化对象字段(如未来的多媒体、行程节点等)建议一并按此约定处理。
3. 测试数据
已通过 PUT /admin/refund-note 给测试库 全部 66 个景区补充退费说明示例数据:
- 整体介绍:「退改规则如下,赠送项目不退费,具体以下方明细为准。」
- 明细 3 条:出发前 7 天以上(0/人,全额退款)/ 出发前 3-6 天(30/人,带生效起止 2026-01-01~2026-12-31)/ 出发前 48 小时内(100/人,不可退)
前端可直接在景区编辑页「退费说明」tab 看到回显数据联调。
4. 前端动作
- 重测退费说明保存:带生效起止日期的明细现可正常保存(原 500 已修)。
- 优化提交确认弹窗(§2):
refundNote→ 中文「退费说明」;值「[复杂对象]」→ 可读摘要。 - 联调可用测试库已补的 66 个景区退费说明数据。
5. 关联 / 联系人
- 后端修复 PR:#3429(Closes #3428)
- 退费说明模块接口契约:见同目录退费说明相关 changelog
- 后端负责人:@wx
- 前端对接(管理后台):待指派