hl-api-changelog/changelogs-v2/2026-06/04_3428_退费说明保存500修复+提交弹窗字段显示优化-管理后台.md

4.8 KiB

【后端修复 + 前端优化·管理后台】退费说明保存 500 已修 + 提交确认弹窗字段显示

PR: #3429后端修复| 关联工单: #3428 服务: hl-resource-service | 更新时间: 2026-06-04

存放目录: changelogs-v2/2026-06/ 影响范围: 管理后台「编辑景区 / 活动 → 退费说明」tab;前端列表行「确认提交修改」弹窗


⚠️ 关键说明

  1. 后端 bug 已修(前端可重测):景区/活动「退费说明」保存带「生效起 / 生效止」日期的退费明细时报 500,现已修复并部署测试服。接口契约未变,前端无需改调用方式,重新走原保存流程即可。
  2. 前端待优化§2:列表「确认提交修改」弹窗里 refundNote 字段显示为英文字段名 + 值「[复杂对象]」,普通运营看不懂,建议改为中文标签「退费说明」+ 可读摘要。
  3. 测试数据已补:已给测试库 66 个景区全部补充退费说明示例数据(每个 3 条明细,含带日期明细),方便前端联调展示。

1. 后端修复说明

现象

「编辑景区 → 退费说明」填入带「生效起 / 生效止」日期的退费明细,点保存 → 500

服务器内部错误[MyBatisSystemException]: org.apache.ibatis.type.TypeException:
Could not set parameters for mapping: Para...

不填日期则保存成功。这也是此前测试库退费说明(带日期)一直存不进的原因。

根因

退费明细数组(items)以 JSON 列存库MyBatis-Plus JacksonTypeHandler,明细条目含 effectiveFrom / effectiveToLocalDate。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 [复杂对象] [复杂对象]

两个问题:

  1. 字段名是英文 refundNote —— 运营看不懂,应显示中文「退费说明」。
  2. 值显示「[复杂对象]」 —— 退费说明是结构化对象(整体介绍 + 明细数组),无法直接 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. 前端动作

  1. 重测退费说明保存:带生效起止日期的明细现可正常保存(原 500 已修)。
  2. 优化提交确认弹窗§2refundNote → 中文「退费说明」;值「[复杂对象]」→ 可读摘要。
  3. 联调可用测试库已补的 66 个景区退费说明数据。

5. 关联 / 联系人

  • 后端修复 PR#3429Closes #3428
  • 退费说明模块接口契约:见同目录退费说明相关 changelog
  • 后端负责人@wx
  • 前端对接(管理后台):待指派