docs(v3): 退费说明接入产品/订单快照 + /admin/refund-note 网关路由修复 (PR #3308/#3312)
这个提交包含在:
父节点
9c3defcf74
当前提交
06833500ca
@ -0,0 +1,85 @@
|
||||
# 二期 v3:退费说明接入产品详情/订单快照 + 修复 /admin/refund-note 网关路由 404
|
||||
|
||||
> **服务**: hl-resource-service / hl-product-service-v2 / hl-order-service-v3 / hl-gateway
|
||||
> **PR**: #3308(接入)+ #3312(hotfix)
|
||||
> **Issue**: #3307 / #3311
|
||||
> **日期**: 2026-06-01
|
||||
> **影响**: 🟢 新增能力 + 🔴 **修复 #3272 退费说明 admin CRUD 经网关 404 完全不可用**。前端现可正常调 `/admin/refund-note` 维护退费说明;退费说明已接入产品行程节点聚合并在下单时冻进订单快照。
|
||||
|
||||
---
|
||||
|
||||
## 一、前端必读:`/admin/refund-note` 现在可达了(之前 404)
|
||||
|
||||
#3272 交付了「资源退费说明 CRUD」(景区/活动维护退费明细),但**漏配网关路由**,导致 `/admin/refund-note` 经网关一直返:
|
||||
|
||||
```json
|
||||
{"code":404,"message":"接口不存在: /admin/refund-note"}
|
||||
```
|
||||
|
||||
本次已补网关路由。**前端原本对着 #3272 文档写的退费说明 CRUD 弹窗,现在能真正调通了**。三个接口(与 #3272 文档一致,无变化):
|
||||
|
||||
```
|
||||
GET /admin/refund-note?resourceType=SCENIC&resourceId=12345 查
|
||||
PUT /admin/refund-note upsert 整块
|
||||
DELETE /admin/refund-note?resourceType=SCENIC&resourceId=12345 软删
|
||||
```
|
||||
|
||||
测试服已实测三个方法经网关全通(200)。仅 `SCENIC` / `ACTIVITY` 两类资源支持。
|
||||
|
||||
---
|
||||
|
||||
## 二、退费说明接入产品行程节点 + 订单快照(后端能力)
|
||||
|
||||
行程节点绑定 SCENIC/ACTIVITY 资源时,产品详情聚合会回填该资源的退费说明;**下单时随产品详情整体冻进 `order_product_snapshot`**,锁定退费条款(资源后改不影响老订单)。
|
||||
|
||||
冻结结构(订单产品快照 `itinerary[].nodes[].refundNote`):
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"refundNote": {
|
||||
"intro": "苔藓为赠送项目, 不退费",
|
||||
"items": [
|
||||
{
|
||||
"title": "成人未参加",
|
||||
"amount": 44.00,
|
||||
"unitLabel": "/人",
|
||||
"settleScope": "PER_PERSON",
|
||||
"settleScopeLabel": "按人", // 字典中文,冻结即定格
|
||||
"remark": "凭票退",
|
||||
"effectiveFrom": null,
|
||||
"effectiveTo": null
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
仅 SCENIC/ACTIVITY 节点、且资源配过退费说明时才有值,其余节点 / 未配置为 `null`。
|
||||
|
||||
---
|
||||
|
||||
## 三、暂未做(前端注意)
|
||||
|
||||
**订单详情「行程安排 Tab」暂不展示退费说明**。原因:订单 `order_itinerary_node` 表当前下单时不物化(仅后台手动编辑写入),退费说明冻在 `order_product_snapshot` JSON 里。要在行程 Tab 逐节点展示,需后续补「快照→节点叠加」或「下单物化行程」,**不在本期**。本期只保证:①退费说明 admin CRUD 可用 ②退费说明已正确冻进订单快照(数据已锁定,前端展示链路待后续 PR)。
|
||||
|
||||
---
|
||||
|
||||
## 四、踩坑修复(hotfix #3312)
|
||||
|
||||
测试服建单实测发现退费说明进快照恒 null,直查资源接口暴露 **500 ClassCastException**:`JacksonTypeHandler` 反序列化 JSON 列 `List<RefundNoteItem>` 时泛型擦除,运行期元素是 `LinkedHashMap`,用 `List<RefundNoteItem>` 流式处理时 lambda 入口被插 CHECKCAST 在转换前就崩。已改 `List<?>` + `BeanUtil` 兼容(#3272 Converter 同源潜伏 bug 一并修),并补 `LinkedHashMap` 模拟单测锁回归。对前端无感,仅说明为何要 hotfix。
|
||||
|
||||
---
|
||||
|
||||
## 五、影响评估
|
||||
|
||||
- **后端**:资源(DTO+批量查+ClassCast 修)、产品(节点回填)、订单(快照 VO)、网关(路由);hl-common ResourceDetailDTO 加 refundNote 字段(非破坏)
|
||||
- **前端**:可立即接入 `/admin/refund-note` CRUD(之前 404 不可用);订单详情退费说明展示等后续 PR
|
||||
- **存量订单**:仅新建订单冻结退费说明(快照语义),老订单不回填
|
||||
|
||||
---
|
||||
|
||||
## 关联
|
||||
|
||||
- **Issue**: [#3307](https://git.1814.love:8443/wx/HL/issues/3307) / [#3311](https://git.1814.love:8443/wx/HL/issues/3311)
|
||||
- **PR**: [#3308](https://git.1814.love:8443/wx/HL/pulls/3308)(接入)/ [#3312](https://git.1814.love:8443/wx/HL/pulls/3312)(hotfix + 网关路由)
|
||||
- **前置**: [#3273](https://git.1814.love:8443/wx/HL/pulls/3273)(#3272 退费说明 CRUD 模块)
|
||||
正在加载...
x
在新工单中引用
屏蔽一个用户