hl-api-changelog/changelogs/2026-05/06_refactor_agency_nacos_segments_removal.md
API Changelog Bot 0b54b57334 refactor(agency): 切公司模块 DB 单一真相源, nacos.agencies + merchants 弃用 (PR #1721)
通知 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) <noreply@anthropic.com>
2026-05-06 17:30:03 +08:00

4.8 KiB

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.getByMchIdfromInternalDTO); getAgenciesByPlatform DB 优先(listEnabledInternal 全量 + supportedPlatforms 过滤)
teamreport AgencyProperties @LazytravelAgencyService; getAgencyByCode/byMchId DB 优先 → AgencyInternalDTO 转 teamreport 本地 AgencyInfo
TravelAgencyService 新加 listEnabledInternal() 接口(返 List<AgencyInternalDTO>supportedPlatforms)

三、影响范围核查

grep contract.platform / wechat.pay.merchantshl-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:

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 删段)