diff --git a/changelogs-v2/2026-06/20_4117_房务酒店详情金额字段补String序列化-修复-管理后台.md b/changelogs-v2/2026-06/20_4117_房务酒店详情金额字段补String序列化-修复-管理后台.md new file mode 100644 index 0000000..cbd43c6 --- /dev/null +++ b/changelogs-v2/2026-06/20_4117_房务酒店详情金额字段补String序列化-修复-管理后台.md @@ -0,0 +1,34 @@ +# 房务酒店详情金额字段序列化修复(泄成数字 → 字符串)— 修复 — 管理后台 + +> 变更类型:🐛 Bug 修复(金额字段序列化,数字 → 字符串) +> 端类型:管理后台(房务管家 · 酒店详情 4Tab) +> 日期:2026-06-20 +> 服务:hl-order-service-v3 +> PR:https://git.1814.love:8443/wx/HL/pulls/4117 + +--- + +## ⚠️ 关键说明(给前端) + +`GET /v3/admin/house/hotels/{hotelId}`(房务酒店详情)的以下金额字段,此前**漏成 JSON 数字**,现统一修为**字符串**(与平台「金额=字符串」契约一致): + +| 字段 | 位置 | 修复前 | 修复后 | +|---|---|---|---| +| `roomTypes[].protoPrice` | Tab2 房型协议价 | `380.00`(数字) | `"380.00"`(字符串) | +| `priceCalendar30d[].price` | Tab3 价格日历当日价 | `380.00`(数字) | `"380.00"`(字符串) | +| `basic.protoPrice` | Tab1 协议价兜底 | `480.00`(数字) | `"480.00"`(字符串) | + +前端按字符串接收即可(同详情里其它金额、以及房务各列表/对账金额一致)。 + +## 根因 + +平台全局 Jackson 只把**超 JS 安全范围的 Long 雪花**转字符串,**不转 BigDecimal**——所以 BigDecimal 金额漏标 `@JsonSerialize(ToStringSerializer)` 就**永远**序列化为数字。这 3 个字段所在的 feign VO 直接作为房务详情响应体序列化给前端,其金额字段漏标(同 VO 的房型/酒店 ID 早已标)。之前审计因测试酒店多数无房型/价格日历,未观测到。 + +## 测试(测试服 9443 实测) + +取 3 家真实有房型 + 价格日历的酒店(房型 1-2 个、价格日历 11-30 天)实测:`roomTypes[].protoPrice`、`priceCalendar30d[].price`、`basic.protoPrice` 全部返字符串(如 `"1080.00"`/`"280.00"`),无一泄成数字。编译 BUILD SUCCESS、部署 order-v3 双实例 success。 + +## 备注 + +- 经纬度 `basic.longitude/latitude` 是坐标,保持数字(不属金额)。 +- 网关无需改。