From 0b54b573343d58613181eb9cecdb1a63424f8939 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Wed, 6 May 2026 17:30:03 +0800 Subject: [PATCH] =?UTF-8?q?refactor(agency):=20=E5=88=87=E5=85=AC=E5=8F=B8?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=20DB=20=E5=8D=95=E4=B8=80=E7=9C=9F=E7=9B=B8?= =?UTF-8?q?=E6=BA=90,=20nacos.agencies=20+=20merchants=20=E5=BC=83?= =?UTF-8?q?=E7=94=A8=20(PR=20#1721)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 通知 mmg + 运维: - 代码改 DB 优先 + nacos 兼容期兜底 (WechatPayConfig/ContractPlatformProperties/teamreport) - 测试服 nacos 已删 contract.platform.agencies + wechat.pay.merchants 两段(2 yml) - order-v2 重启 round-trip 全 200, 双实例稳定 - 待运维同步删正式 nacos 段(待正式服 PR 1715-1721 累积部署后) agency 模块 6 PR 闭合 (#1715/#1717/#1718/#1719/#1720/#1721). Co-Authored-By: Claude Opus 4.7 (1M context) --- ..._refactor_agency_nacos_segments_removal.md | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 changelogs/2026-05/06_refactor_agency_nacos_segments_removal.md diff --git a/changelogs/2026-05/06_refactor_agency_nacos_segments_removal.md b/changelogs/2026-05/06_refactor_agency_nacos_segments_removal.md new file mode 100644 index 0000000..e46990c --- /dev/null +++ b/changelogs/2026-05/06_refactor_agency_nacos_segments_removal.md @@ -0,0 +1,104 @@ +# refactor(agency): 切公司模块 DB 单一真相源, nacos.agencies + merchants 弃用 + +**日期**: 2026-05-06 17:30 +**通知对象**: @mmg (前端) + 运维同事 +**关联 PR**: wx/HL #1721 (已 merge dev + 测试服部署 + 业务 round-trip 通过) +**前序**: 公司模块 5 PR 累积 (#1715/#1717/#1718/#1719/#1720) + +--- + +## 一、用户原话 (2026-05-06) + +> 测试环境的 nacos 里的公司信息和支付信息都删除吧, 都改用这个公司模块, 再次检查影响范围都改为用公司模块. + +公司模块(`travel_agency` + `travel_agency_payment` 表)已经是全字段存储 + 透明加密落 DB,DB 数据完整。本 PR 切代码到 DB 单一真相源,nacos 弃用两段(测试服已删,正式服等运维)。 + +--- + +## 二、代码改动 (PR #1721) + +DB 优先 → nacos 兼容期兜底,渐进式 migration: + +| 文件 | 改动 | +|---|---| +| `WechatPayConfig` | `getConfig(mchId)` 加 DB fallback (`travelAgencyPaymentService.getByMchId` 拿 DO 构 `RSAPublicKeyConfig`,apiV3Key/mchSerialNo 透明解密); `warmUp` 改 lazy load (启动期 DB unready 强制预热会炸); `@Lazy` 注 paymentService 防 circular dep | +| `ContractPlatformProperties` | `getAgencyByMchId` DB 优先(`travelAgencyService.getByMchId` → `fromInternalDTO`); `getAgenciesByPlatform` DB 优先(`listEnabledInternal` 全量 + `supportedPlatforms` 过滤) | +| `teamreport AgencyProperties` | `@Lazy` 注 `travelAgencyService`; `getAgencyByCode/byMchId` DB 优先 → `AgencyInternalDTO` 转 teamreport 本地 `AgencyInfo` | +| `TravelAgencyService` | 新加 `listEnabledInternal()` 接口(返 `List` 含 `supportedPlatforms`) | + +## 三、影响范围核查 + +`grep contract.platform / wechat.pay.merchants` 仅 **hl-order-service-v2** 服务读取。其他服务(resource/mp/product-v2/user/gateway)全部不读这两段。改动范围限于 order-v2。 + +## 四、nacos 测试服删段(已完成) + +| 配置 | 删的段 | +|---|---| +| `hl-order-service-v2-test.yml` | `contract.platform.agencies`(3 家旅行社完整数据)+ `wechat.pay.merchants`(3 个商户加密字段) | +| `hl-resource-service-test.yml` | 同样段(冗余,resource service 不读但有) | + +保留: +- `wechat.pay.app-id`(全局共用 `wx4711a76772deff36`) +- `wechat.pay.notify-base-url`(支付回调地址) +- `contract.platform.standard / sync / travel-agency / default-platform / callback-base-url / default-agency-code`(平台级参数,跟具体公司无关) + +## 五、测试服 round-trip 验证 (2026-05-06 17:30) + +**部署 + 删段后** 业务接口 round-trip 全部 200: + +```bash +TOK=$(curl -sk -X POST "https://api.test.1814.love:9443/admin/auth/login" \ + -H "Content-Type: application/json" \ + -d '{"username":"admin","password":"Admin@123456"}' \ + | python -c "import json,sys; print(json.load(sys.stdin)['data']['token'])") + +# 1. 公司列表 — 走 DB ✅ +curl -sk "https://api.test.1814.love:9443/admin/travel-agency/page?pageNum=1&pageSize=10" \ + -H "Authorization: Bearer $TOK" +# 200 / 三家完整字段 + +# 2. 启用列表 — 走 DB ✅ +curl -sk "https://api.test.1814.love:9443/admin/travel-agency/enabled" \ + -H "Authorization: Bearer $TOK" +# 200 / 3 家 + +# 3. payment 列表(透明解密) — 走 DB ✅ +curl -sk "https://api.test.1814.love:9443/admin/travel-agency/2051922156798779394/payment" \ + -H "Authorization: Bearer $TOK" +# 200 / mchId 1106110439, appId wx4711a76772deff36, apiV3Key 透明解密返明文 +``` + +**服务状态**: hl-order-service-v2 双实例运行(primary 8094 + secondary 8194),无启动错误。 + +## 六、待办: 正式 nacos 同步删段 + +测试服已验证代码 + nacos 删段后稳定运行,**通知运维同步删正式 nacos**: + +| 配置 | 删的段 | +|---|---| +| `hl-order-service-v2-prod.yml` (prod ns) | `contract.platform.agencies` + `wechat.pay.merchants` | +| `hl-resource-service-prod.yml` (prod ns) | 同样段 | + +正式环境前置条件: +- [ ] 正式 DB `travel_agency` + `travel_agency_payment` 表已 seed 三家完整数据(团队报送 / 加密字段同 nacos) +- [ ] 部署 PR #1715/#1717/#1718/#1719/#1720/#1721 到正式服 +- [ ] 删 nacos 段后重启业务服务验证启动 + 创建订单/合同/团队上报场景 + +## 七、agency 模块完整 PR 清单 + +| PR | 内容 | +|---|---| +| #1715 | admin path 纠回 `/admin/travel-agency` | +| #1717 | 资质附件 qualificationType + 字典 (agency_qualification_type / agency_contract_platform) | +| #1718 | nacos 完整字段同步 (teamReportAppId/SignKey/supportedPlatforms + payment 加密字段) | +| #1719 | payment 加 name + appId 字段 | +| #1720 | supportedPlatforms 中文 label 翻译字段 | +| **#1721** | **代码切 DB 单一真相源, nacos.agencies + merchants 弃用(本 PR)** | + +## 八、前端无影响 + +后端只是改了实现层(读 DB 而非 nacos),所有 API 契约不变。前端代码无需任何改动。 + +--- + +cc @mmg(前端) + 运维(正式 nacos 删段)