hl-api-changelog/changelogs/2026-04/2026-04-19_mp-feign-migrate-to-product-service-v2.md

83 行
3.9 KiB
Markdown

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

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

# mp-service Feign 切换到 hl-product-service-v2
**日期**: 2026-04-19
**PR**: [#883](https://git.1814.love:8443/wx/HL/pulls/883) + [#884](https://git.1814.love:8443/wx/HL/pulls/884) + [#872](https://git.1814.love:8443/wx/HL/pulls/872) → dev → 测试环境
**影响端**: 小程序 (hl-ui-mp)
**部署服务**: hl-product-service-v2 + hl-mp-service
## 总体变化(对前端基本透明)
旧的 hl-product-service v1 已下线,所有小程序 `/mp/product/*``/mp/custom/*` 接口的后端实现切换到 hl-product-service-v2。**接口路径、请求参数、响应字段完全保持兼容**(通过 v2 端 22 个 internal endpoint 1:1 适配实现)。
## 受影响接口22 个)
### 产品基础查询
- `GET /mp/product/list`
- `GET /mp/product/{productId}`
- `POST /mp/product/{productId}/quote`
- `GET /mp/product/lines`
- `GET /mp/product/line/{lineId}/products`
- `GET /mp/product/recommend`
- `GET /mp/product/{productId}/price-calendar`
- `GET /mp/product/earliest-booking-date`
- `GET /mp/product/{productId}/simple-quote`
- `GET /mp/product/{productId}/group-quote`
- `GET /mp/product/{productId}/batches/calendar`
- `GET /mp/product/batch/{batchId}/combos`
- `GET /mp/product/batch-brief?ids=...`
- `GET /mp/product/designer-published-ids?createBy=...`
- `GET /mp/product/designer-stats`(两个路径)
### 行程子资源
- `GET /mp/product/day-hotels?productId=...&dayNumber=...`
- `GET /mp/product/day-dining?productId=...&dayNumber=...`
### 定制产品
- `GET /mp/custom/product/{productId}`
- `GET /mp/custom/products`(按当前用户 + 手机号聚合)
- `GET /mp/custom/products/all`全部已完成定制产品分页浏览,PR #870 新增)
## 4 个**降级**接口v2 数据模型缺失,前端注意可能拿到空数据)
| 接口 | 原因 | 当前行为 | 后续 |
|---|---|---|---|
| `GET /mp/product/batch/{batchId}/combos` | v2 无 combos 概念 | 返回空列表 + 后端 log.warn | 待评估是否补 |
| `GET /mp/product/day-dining` | v2 无 product_day_dining 表 | 返回空列表 + 后端 log.warn | 后续 PR 建表+迁移 |
| `GET /mp/custom/products`(按手机号路径) | v2 ProductDO 无 contactPhone 字段 | 按手机号分支返空(按定制需求关联分支仍工作)| 后续 PR ALTER 字段 |
| `GET /mp/product/recommend` | 无推荐算法 | 按 sort_order + create_time DESC 返已上架产品 | 后续接入推荐模型 |
**前端排查建议**:上述 4 个接口出现"空数据"属于**已知降级行为**,不算 bug。优先看其他正常接口。
## 字段一致性保证
- 所有 Long ID 用 `String` 序列化(防 JS 精度丢失)— 与原 v1 行为一致
- 所有 BigDecimal 金额用 `String` 序列化DECIMAL(12,2))— 与原 v1 行为一致
- 日期格式 `yyyy-MM-dd HH:mm:ss` — 不变
- 分页结构 `{records, total, page, pageSize}` — 不变
## 不影响
- 接口路径、请求参数、响应字段结构、HTTP code、业务码完全不变
- mp 端 VO`MpProductDetailVO` / `MpCustomProductDetailVO` / `MpCustomProductListVO` 等)不变
- 已有 token / 鉴权流程不变
## 需要前端做的事
**无需任何代码改动**。如发现具体接口异常请反馈对应 productId/参数。
## 后端实现要点(供前端排障参考)
- `MpProductFeignClient.@FeignClient(name=...)`: `hl-product-service``hl-product-service-v2`
- 22 个 endpoint 路径与 v2 实现严格 1:1 对齐
- 5 个新 v2 controller`InternalMpProductController` / `InternalMpProductReportController` / `InternalMpProductDayController` / `InternalMpCustomProductController` / `InternalMpDesignerController`
- v2 端 44 单测全过
## 已知未修项
1. v2 缺 contactPhone 字段custom-by-phone 降级)
2. v2 缺 product_day_dining 表day-dining 降级)
3. v2 缺 batch_combo 表batch-combos 降级)
4. 推荐算法待接入
🤖 Generated with [Claude Code](https://claude.com/claude-code)