hl-api-changelog/changelogs-v2/2026-06/17_选主题选产品_热门改手动标签+GROUP起价修复读班期-行为变更-管理后台.md

3.6 KiB

【行为变更·管理后台】新建订单「选主题/选产品」:热门改手动标签口径 + 小蒙马(GROUP)起价修复读班期

页面:管理后台 → 新建订单(order-v2/new) 第1步「选主题」+ 第2步「选产品」 | 服务hl-product-service-v2 | PR #3925 + #3927 | 已合并 dev-v3 + 部署测试服 + API 实测通过(2026-06-17) | 负责mmg 触发wx 在页面反馈①热门应按运营手动标签②「起价都不对」。审计定位 + 修复。

⚠️ 关键变更(3 项,前端需知)

1. 第1步「选主题」热门口径自动计算 → 手动标签

  • 变更前hot 由后端按「近90天下单量前30%」自动算。
  • 变更后hot = 该主题 tags 是否包含「热门」标签(运营在『产品线管理』手动打的 product_tag 字典标签,所见即所得)。
  • 前端:「热」角标 + 「热门主题·直接进入」入口仍只看 hot 字段;入口 = 本地 filter(hot==true),无独立接口。运营打了「热门」标签的主题才热。

2. 第1步「选主题」VO 新增返回 tags / seasons

GET /admin/product/line/order-pickerOrderPickerThemeVO 新增两字段:

字段 类型 含义
tags List<String> 主题标签(product_tag 字典:热门/新品/限定/硬核/治愈)
seasons List<String> 适用季节(spring/summer/autumn/winter)

前端如需在主题卡展示标签/季节可直接用(此前精简 VO 不返回,需前端自渲染)。

3. 小蒙马(GROUP)起价修复:第1步 fromPrice + 第2步 startPrice/tierPrices

  • BugGROUP(小蒙马)真实价在班期表 group_tour_batch.adult_price,但选主题/选产品接口此前只读价格日历 → 所有小蒙马起价恒为 null(页面显示空白/价待定)
  • 修复后GROUP 起价改读班期表未来最低成人价(CORE/CUSTOM 仍走价格日历,口径与产品编辑页 min-price 一致)。
  • 实测(测试服,部署后):
主题 类型 修复前 fromPrice 修复后 fromPrice
阿斯蒂芬撒点 GROUP null(空白) 2925.00
测试小蒙马-yst GROUP null(空白) 1635.00

第2步选产品:测试小蒙马 4 个产品 startPrice 均 = 1635.00,各档位 tierPrices 同价。

注:CORE/CUSTOM 主题若仍显示「价待定」,是该主题下产品未设未来可售价格日历(真·无价),非 bug,与本次无关。

金额字段口径(前端注意)

  • OrderPickerThemeVO.fromPriceOrderPickerProductVO.startPricetierPrices[].startPrice 均为字符串(@JsonSerialize ToString,防大数精度丢失),前端展示前 parseFloat + null 兜底。
  • ⚠️ 本次给 TierPriceInfo.startPrice 补了字符串序列化,同时影响产品详情/产品列表接口里的 tierPrices[].startPrice(由数字变字符串)。如这两个页面对该字段做了数字运算,请改 parseFloat

SKU 总数 / 产品数 口径澄清(顺带答疑)

  • 主题卡「X 个 SKU」= 档位(tier/规格)总数 = 该主题下各已上架产品的档位数之和。
  • 第2步「X 个产品可选」= 产品(版本)数
  • 二者单位不同,不矛盾。例:测试小蒙马 4 个产品(多档2+多档2+单档1+单档1)= 6 个 SKU,故主题卡显示「6 个 SKU」、第2步显示「4 个产品可选」,均正确。
  • 头部「SKU 总数」= 各主题 skuCount 之和(前端派生,无独立接口)。

不变项

  • 第2步选产品的 hot(热销)仍是计算口径(近90天下单量),本次未改;但第2步 VO 已返回 tags,前端如需也可按「热门」标签渲染。