refactor(评价): sourceLabel 彻底字典化 (HL #2990/PR #2991)
- 删 ReviewSourceEnum.labelOf, sourceLabel 改走 DictFeignClient 查 review_source 字典 - 运维改 sys_dict_data.dict_label 接口立即反映(配套 admin 字典编辑接口清 Redis 缓存) - 接口契约不变,前端无需改动 - 范围限定 review_source(项目 review_status/review_level 等仍走 ReviewConstants 静态 Map)
这个提交包含在:
父节点
9c33bc4dc2
当前提交
b363d6d8d1
@ -0,0 +1,85 @@
|
||||
# refactor(评价): sourceLabel 彻底字典化(运维改字典 dict_label 接口立即反映)
|
||||
|
||||
> **类型**: refactor(后端纯重构,接口契约不变,前端无需改动)
|
||||
> **关联 PR/Issue**: PR #2991 (Closes #2990) — 承接 #2988 字典加数据 + #2989 enum 双写
|
||||
> **日期**: 2026-05-25
|
||||
> **影响范围**: admin / mp 所有返 `sourceLabel` 字段的评价接口
|
||||
> **接收方**: mmg(知会即可)
|
||||
> **前端**: **无需改动**
|
||||
|
||||
---
|
||||
|
||||
## 🎯 背景
|
||||
|
||||
#2988 在 sys_dict_data 加了 review_source 字典数据;#2989 后端 sourceLabel 仍由 `ReviewSourceEnum.labelOf()` 硬编码算出 — 字典数据"白加",改字典 dict_label 接口不变。
|
||||
|
||||
本次彻底字典化:删 enum 的 label 字段,sourceLabel 通过 `DictFeignClient.getDictDataByType("review_source")` 查字典动态获取。
|
||||
|
||||
---
|
||||
|
||||
## ✅ 接口契约不变
|
||||
|
||||
| 接口 | sourceLabel 取值 | 是否变化 |
|
||||
|------|------------------|---------|
|
||||
| `GET /admin/review/list` | 小程序 / 有赞 | 不变 |
|
||||
| `GET /mp/review/target` | 小程序 / 有赞 | 不变 |
|
||||
| `GET /mp/review/product/{id}` | 小程序 / 有赞 | 不变 |
|
||||
| `GET /mp/product/{id}` reviewSummary.topReview | 小程序 / 有赞 | 不变 |
|
||||
|
||||
**前端无需任何改动**。
|
||||
|
||||
---
|
||||
|
||||
## 🔧 运维能力增强(本次重构的真正价值)
|
||||
|
||||
如果想把「小程序」改成「微信小程序」,运维在 admin 字典管理改字典 dict_label 即可,**所有接口立即反映**,无需后端重启或发版。
|
||||
|
||||
操作路径:admin 后台 → 系统管理 → 字典管理 → 找到 `review_source` 类型 → 编辑 dict_value=MINIPROGRAM 的 dict_label → 保存。
|
||||
|
||||
底层机制:admin 字典编辑接口会自动清 Redis 缓存 `cache:dict:data:review_source`,下次接口请求重新加载字典,sourceLabel 立即更新。
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 范围限定(项目惯例双标)
|
||||
|
||||
本次只改 review_source。其他 label 字段(`reviewType` / `productType` 等已走字典,`statusLabel` / `levelLabel` / `targetTypeLabel` 等仍走 ReviewConstants 静态 Map 硬编码)**不动**。
|
||||
|
||||
如果要统一,需要另开工单批量改造(范围爆炸 5x + 性能/兼容性需重新评估)。
|
||||
|
||||
---
|
||||
|
||||
## ✅ 后端验证
|
||||
|
||||
### 本地(gateway 8080)
|
||||
|
||||
```
|
||||
[默认] GET /admin/review/list?source=MINIPROGRAM → sourceLabel=小程序
|
||||
[UPDATE 字典 + 清 cache:dict:data:review_source]
|
||||
[改字典后] 同接口 → sourceLabel=微信小程序 ✓
|
||||
[恢复 + 清缓存]
|
||||
[恢复后] 同接口 → sourceLabel=小程序 ✓
|
||||
```
|
||||
|
||||
### 测试服(api.test.1814.love:9443)
|
||||
|
||||
```
|
||||
[默认] GET /admin/review/list?source=MINIPROGRAM → sourceLabel=小程序
|
||||
[改字典 + 清测试服 Redis cache:dict:data:review_source]
|
||||
[改字典后] 同接口 → sourceLabel=微信小程序 ✓ 动态生效
|
||||
[恢复 + 清缓存]
|
||||
[恢复后] 同接口 → sourceLabel=小程序 ✓
|
||||
```
|
||||
|
||||
rolling-deploy hl-order-service-v2 1.5 分钟,双实例 UP。
|
||||
|
||||
---
|
||||
|
||||
## 🗃️ 文件改动
|
||||
|
||||
| 文件 | 改动 |
|
||||
|------|------|
|
||||
| `ReviewSourceEnum.java`(order-v2) | 删 label/code 字段、labelOf/fromCode 方法,enum 简化为裸值 |
|
||||
| `ReviewDetailAssembler.java`(order-v2) | assembleMpList 加 loadDictLabels("review_source"),透传到 toMpReviewVO |
|
||||
| `ReviewQueryService.java`(order-v2) | listReviews 同模式,toReviewListVO 加 sourceLabels 参数 |
|
||||
|
||||
DTO/VO/Feign 链路自动透传,product-v2 / mp-service 无改动。
|
||||
正在加载...
x
在新工单中引用
屏蔽一个用户