hl-api-changelog/changelogs-v2/2026-06/24_4356_退款详情orderInfo补订单字段-修改接口-管理后台.md
yaosutu 597096129b docs(refund): 退款详情 orderInfo 补订单字段(#4356 修改接口-管理后台)
GET /v3/admin/refund/application/{id} 出参 orderInfo 块原恒为 null,
本次修复接通 OrderService 后正常填充,并新增 teamNo / tierName / peopleSummary
三字段,与退款列表接口(PR #4344)保持口径一致。非破坏性变更。

Issue: wx/HL#4356
PR:    wx/HL#4359
2026-06-24 17:47:11 +08:00

9.7 KiB

退款详情 orderInfo 补订单字段(原恒为 null,本次接通并扩 3 字段)

  • 接口GET /v3/admin/refund/application/{id}
  • 变更类型:修改接口(出参 orderInfo 块由恒为 null 修复为正常填充,并新增 3 字段;非破坏性,其余字段不变)
  • 日期2026-06-24
  • 端类型:管理后台
  • Issuewx/HL#4356
  • PRwx/HL#4359
  • 负责人腰苏图yst

① 接口背景

退款申请详情接口(GET /v3/admin/refund/application/{id})的出参包含一个 orderInfo 嵌套对象,用于展示退款所属订单的概要快照(订单号、产品名、出发日期、联系人等)。

此前由于后端未正确接通 OrderService,orderInfo 字段恒为 null,导致详情页无法展示任何订单信息。本次修复接通 OrderService,orderInfo 现可正常填充;同时与退款列表接口(/application/page,PR #4344保持口径一致,补充了团号、规格档位、人员数描述三个字段。


② 变更清单

变更 类型 说明
orderInfo 由恒为 null 修复为正常填充 🔧 行为修复 后端已接通 OrderService,原有 orderInfo 字段orderNo / productName / departureDate / contactName / contactPhone现可正常返回
orderInfo.teamNo 新增 出参新增字段 订单所属团号,无团号时为 null
orderInfo.tierName 新增 出参新增字段 订单规格/套餐档位名称,无档位时为 null
orderInfo.peopleSummary 新增 出参新增字段 人员数描述,后端已拼接好中文字符串(如 2成人2儿童),全为 0 时 null

无破坏性变更:入参不变,顶层出参其余字段不变,枚举值不变,错误码不变。


③ 接口详情

说明
方法 GET
路径 /v3/admin/refund/application/{id}
功能 退款申请详情查询
认证 需要管理后台 JWTAuthorization: Bearer <token>
幂等 是(只读)
限流 无特殊限流

④ 接口入参

4.1 路径参数

参数名 类型 必填 说明
id long 退款申请 ID

无请求体,无 Query 参数变化。


⑤ 出参字段

orderInfo 对象(修复后完整字段列表)

位于 data.orderInfo,订单查不到时整个对象返回 null。

字段名 类型 可为 null 说明 本次变化
orderNo string 订单号 原有字段,修复前恒 null,现正常返回
productName string 产品名称 原有字段,修复前恒 null,现正常返回
departureDate string (yyyy-MM-dd) 出发日期 原有字段,修复前恒 null,现正常返回
contactName string 联系人姓名(管理端明文) 原有字段,修复前恒 null,现正常返回
contactPhone string 联系电话(管理端明文) 原有字段,修复前恒 null,现正常返回
teamNo string 订单所属团号;非团期订单为 null 本次新增
tierName string 规格/套餐档位名称;无档位为 null 本次新增
peopleSummary string 人员数描述,如 2成人2儿童;各人数全为 0 时为 null 本次新增

注意:详情顶层出参(data 根节点)另有一个独立的 departureDate 字段,为退款申请自身的快照值,与 data.orderInfo.departureDate(从订单实时查询)含义不同,本次未改。

顶层出参其余字段(保持不变)

字段名 类型 说明
id long 退款申请 ID
applicationNo string 退款申请单号
orderId long 关联订单 ID
status string 退款申请状态枚举
refundAmount number 退款金额(分)
reason string 退款原因
departureDate string (yyyy-MM-dd) 退款申请快照出发日期(非 orderInfo 内的字段)
createTime string (datetime) 申请创建时间
travelerList array 出行人列表
timeline array 审批时间线
... ... 其余字段均保持不变

⑥ 枚举 / 数据字典

无新增或变更枚举值。


⑦ 错误码

无新增错误码。以下为原有通用错误码:

错误码 说明 前端处理建议
200 成功
404 / 业务错误码 退款申请不存在 提示「退款申请不存在」并返回列表页

orderInfo 为 null 不触发接口报错,仅表示关联订单查不到,前端需对 orderInfo 做空判断后再读取内部字段。


⑧ 示例

8.1 典型成功orderInfo 正常填充)

请求

GET /v3/admin/refund/application/1234567890123456789
Authorization: Bearer <admin-token>

响应data 节选)

{
  "code": 200,
  "data": {
    "id": 1234567890123456789,
    "applicationNo": "RF2026062400001",
    "orderId": 9876543210987654321,
    "status": "PENDING_REVIEW",
    "refundAmount": 99800,
    "reason": "行程取消",
    "departureDate": "2026-08-10",
    "orderInfo": {
      "orderNo": "ORD20260601001",
      "productName": "呼籁·云南深度7日游",
      "departureDate": "2026-08-10",
      "contactName": "张三",
      "contactPhone": "13800138000",
      "teamNo": "GB20260801001",
      "tierName": "豪华双人间",
      "peopleSummary": "2成人2儿童"
    },
    "travelerList": [],
    "timeline": []
  }
}

8.2 边界情况非团期订单,teamNo 为 null;无档位,tierName 为 null;全为成人,peopleSummary 有值)

响应orderInfo 节选)

{
  "orderInfo": {
    "orderNo": "ORD20260602002",
    "productName": "定制私家团",
    "departureDate": "2026-09-01",
    "contactName": "李四",
    "contactPhone": "13900139000",
    "teamNo": null,
    "tierName": null,
    "peopleSummary": "3成人"
  }
}

8.3 业务失败订单已删除,orderInfo 整体为 null

此情况接口不报错,HTTP 200 正常返回,仅 orderInfo 为 null。

响应data 节选)

{
  "code": 200,
  "data": {
    "id": 1234567890000000001,
    "applicationNo": "RF2026062400002",
    "orderId": 9999999999999999999,
    "status": "PENDING_REVIEW",
    "refundAmount": 50000,
    "orderInfo": null
  }
}

⑨ 业务边界

适用

  • 退款申请 ID 有效,关联订单存在时,orderInfo 正常填充所有字段。
  • 订单为团期订单时,teamNo 填充团号;否则为 null。
  • 订单有规格档位时,tierName 填充档位名称;否则为 null。
  • peopleSummary 仅包含非零人数段(成人→儿童→幼儿→婴儿顺序),各人数全为 0 时返回 null。

不适用 / 特殊边界

  • 关联订单已删除或 orderId 为空时,orderInfo 整体返回 null,接口不报错,前端需做空判断。
  • data.departureDate(顶层)与 data.orderInfo.departureDate 含义不同:前者是退款申请创建时的快照,后者来自订单实时查询,两者可能不一致,前端不可混用。

⑩ 修改前后对比

字段级对比

字段 修改前 修改后
orderInfo 恒为 null(后端未接通 OrderService 正常对象,订单查不到时才为 null
orderInfo.orderNo 不可用(整体 null 订单号字符串
orderInfo.productName 不可用(整体 null 产品名称字符串
orderInfo.departureDate 不可用(整体 null yyyy-MM-dd 格式日期字符串
orderInfo.contactName 不可用(整体 null 联系人姓名(管理端明文)
orderInfo.contactPhone 不可用(整体 null 联系电话(管理端明文)
orderInfo.teamNo 字段不存在 新增,无团号时 null
orderInfo.tierName 字段不存在 新增,无档位时 null
orderInfo.peopleSummary 字段不存在 新增,全 0 时 null

行为级对比

维度 修改前 修改后
退款详情订单信息可用性 完全不可用(恒 null 正常可用
与退款列表口径一致性 不一致(列表有订单信息,详情没有) 一致(新增三字段与列表 PR #4344 对齐)

⑪ 影响评估 / 回滚

兼容性:非破坏性变更。orderInfo 从 null 变为有值,不影响前端已有的空判断逻辑;新增三字段前端不读即无感知。

前端同步上线:无需同步上线。但建议前端在退款详情页接入 orderInfo 内的订单信息展示(原先恒 null 导致该区块无法显示),本次修复后数据已可用。

回滚方案:若需回滚,后端回退 PR #4359 即可。orderInfo 恢复为 null,前端已有空判断逻辑不受影响。


⑫ 注意事项

  1. 双 departureDate 区分:出参顶层 data.departureDate 是退款申请快照日期;data.orderInfo.departureDate 是订单侧出发日期,二者含义不同,前端读取时注意字段路径。
  2. orderInfo 空判断:订单查不到时 orderInfo 整体为 null,前端需在读取 orderInfo 内任意字段前先做非空判断,否则会报 NPE。
  3. peopleSummary 格式:字符串由后端拼接,格式固定为中文(如 2成人1儿童),前端直接展示无需再做格式化。

⑬ 关联 / 联系人

  • Issuewx/HL#4356
  • PRwx/HL#4359
  • 退款列表同期关联 PRwx/HL#4344(退款列表新增相同三字段,口径对齐)
  • 后端负责人腰苏图yst