hl-api-changelog/changelogs-v2/2026-06/08_3592_车务金额字段返回值number改String-修改接口-管理后台.md

3.4 KiB

车务金额字段返回值 number → String — 修改接口 — 管理后台

变更类型:⚠️ 破坏性变更JSON 类型 number → string 端类型:管理后台 日期2026-06-08 服务hl-fleet-service


1. 背景

车务fleet部分接口的金额字段过去序列化为 JSON 数字(如 1000.00)。平台约定金额一律以 String 下发前端Java 内部仍是 BigDecimal,避免 JS 浮点精度问题、与其它模块口径统一。

本次给车务 3 个已上线接口的金额字段补上 @JsonSerialize(ToStringSerializer),返回值由 number 改为 string(如 1000.00"1000.00")。前端读取这些字段时必须按字符串处理(如需计算先 parseFloat/Number(),展示直接用字符串)。

注:全局 Jackson 只把超出 JS 安全范围的 Long 雪花转 String,不会自动转 BigDecimal,所以金额需逐字段显式标注,此前这 3 处漏标导致泄成数字。


2. 变更清单

# 接口 字段 旧类型(JSON) 新类型(JSON) 示例
1 车型型号分页 / 详情 basePrice 起步价 number string 1000.00"1000.00"
2 车型价格日历查询 dayPrice 当日租赁价 number string 800.00"800.00"
3 司机详情·保险块 annualPremium 年保费 number string 3600.00"3600.00"
4 司机详情·保险块 perDayRate 行程日费率 number string 50.00"50.00"

仅这 4 个金额字段受影响;其它非金额数字字段(座位数 seats、排序 sortOrder、各类 count不变。


3. 受影响接口

接口 方法 路径 受影响字段
车型型号分页 GET /admin/fleet/vehicle-types/models/page basePrice
车型价格日历查询 GET /admin/fleet/vehicle-types/{vehicleModelId}/pricing-calendar dayPrice
司机详情 GET /admin/fleet/drivers/{driverId} insurance.annualPremium / insurance.perDayRate

4. 示例(车型型号分页)

请求

GET /admin/fleet/vehicle-types/models/page?pageNo=1&pageSize=5
Authorization: Bearer <token>

响应(注意 basePrice 现为带引号的字符串)

{
  "code": 200,
  "message": "成功",
  "data": {
    "records": [
      {
        "id": "2057378612593823745",
        "vehicleTypeId": "2057378611889180674",
        "modelName": "丰田普拉多",
        "seats": 7,
        "basePrice": "1000.00",
        "alias": "",
        "sortOrder": 1
      }
    ],
    "total": 1
  },
  "success": true
}

5. 前端迁移

字段 前端处理
basePrice / dayPrice / annualPremium / perDayRate 读到的是字符串 "1000.00"展示:直接用。参与计算:先 Number(x) / parseFloat(x) 再算,结果再格式化回字符串。编辑回填:表单控件按字符串赋值即可。
  • 若前端原先把这些字段当 number 直接做算术(a.basePrice + b.basePrice),现在会变成字符串拼接,必须改为先转数字
  • 提交(保存)入参不受影响——入参金额前端按原样传,后端独立计算/解析。

6. 关联

项目 信息
PR wx/HL#3592
部署 已部署测试服并实测:"basePrice":"1000.00"(网关 9443 + admin token 实测带引号)
后端负责人 wx