hl-api-changelog/changelogs-v2/2026-06/20_4117_房务酒店详情金额字段补String序列化-修复-管理后台.md

2.0 KiB

房务酒店详情金额字段序列化修复(泄成数字 → 字符串)— 修复 — 管理后台

变更类型:🐛 Bug 修复(金额字段序列化,数字 → 字符串) 端类型:管理后台(房务管家 · 酒店详情 4Tab 日期2026-06-20 服务hl-order-service-v3 PRwx/HL#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[].protoPricepriceCalendar30d[].pricebasic.protoPrice 全部返字符串(如 "1080.00"/"280.00"),无一泄成数字。编译 BUILD SUCCESS、部署 order-v3 双实例 success。

备注

  • 经纬度 basic.longitude/latitude 是坐标,保持数字(不属金额)。
  • 网关无需改。