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

35 行
2.0 KiB
Markdown

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

# 房务酒店详情金额字段序列化修复(泄成数字 → 字符串)— 修复 — 管理后台
> 变更类型:🐛 Bug 修复(金额字段序列化,数字 → 字符串)
> 端类型:管理后台(房务管家 · 酒店详情 4Tab
> 日期2026-06-20
> 服务hl-order-service-v3
> PRhttps://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` 是坐标,保持数字(不属金额)。
- 网关无需改。