83 行
3.9 KiB
Markdown
83 行
3.9 KiB
Markdown
# 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)
|