hl-api-changelog/changelogs/2026-05/06_feat_agency_nacos_full_sync.md
API Changelog Bot 16b3458028 feat(agency): nacos 完整字段同步 DB (PR #1718)
通知 mmg 前端:
- 三家公司 teamReportAppId/teamReportSignKey/supportedPlatforms 已填充
- payment 加密字段 apiV3Key/mchSerialNo/publicKeyId 已落 DB (透明加密+解密返明文)
- 前端刷新页面即可看到字段全部填满, 不再显示 -/[]

测试服 round-trip 通过 (2026-05-06 16:30).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 16:30:50 +08:00

3.5 KiB

feat(agency): 旅行社三家公司完整字段从 nacos 同步到 DB

日期: 2026-05-06 16:30 通知对象: @mmg (前端) 关联 PR: wx/HL #1718 (已 merge dev + 测试服部署完成 + round-trip 验证通过) 前序: PR #1717 (字典 + qualificationType 字段)


一、用户反馈解决

PR #1717 加完字典后 UI 仍显示几处 - / []:

  • 「团队报送 AppId / SignKey」: -
  • 「支持平台」: []
  • 支付配置: 未命名 mchId 1106110439 AppId: - (api_v3_key/mch_serial_no/public_key_id 全空)

根因: AgencyDataInitializer 启动同步时只覆盖部分字段, payment 子表加密字段从未写入。


二、本 PR 修复

1. 主表 travel_agency 字段全部从 nacos 同步

AgencyDataInitializer.upsertOne SYNC path 加 set 字段:

  • teamReportAppId ← nacos agencies[].team-report-app-id
  • teamReportSignKey ← nacos agencies[].team-report-sign-key
  • supportedPlatforms ← nacos agencies[].supported-platforms (List → JSON, 无配置默认 ["12301"])

2. 子表 travel_agency_payment 加密字段透明加密落 DB

initPaymentForAgency 增强:

  • 注入 WxPayProperties, 从 wechat.pay.merchants.{key}.* 拿 MerchantConfig
  • INSERT 时同步 apiV3Key / mchSerialNo / publicKeyId (透明加密 by @TableField(typeHandler=PaymentEncryptTypeHandler))
  • SYNC existing payment 时, 加密字段空就回填 (admin 没填/旧数据回补)

3. Feign DTO 同步

AgencyInternalDTOteamReportAppId/teamReportSignKey 字段, ContractPlatformProperties.AgencyInfo.fromInternalDTO 同步, 保证 DB 路径下游 (12301 团队报送) 拿到完整字段。


三、测试服 round-trip 验证 (2026-05-06 16:30)

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'])")

# 公司列表 - 三家完整字段
curl -sk "https://api.test.1814.love:9443/admin/travel-agency/page?pageNum=1&pageSize=10" \
  -H "Authorization: Bearer $TOK"
字段 hulai qianshou hulai-wenlu
teamReportAppId 2078b6f0... 412ff570... 4f03ff70...
teamReportSignKey 40ff382f... 4e843fdd... 727bb9c1...
supportedPlatforms ["12301","TENCENT_ESIGN"] ["12301"] ["12301"]
# 支付配置 - 加密字段透明解密返明文
curl -sk "https://api.test.1814.love:9443/admin/travel-agency/2051922156798779394/payment" \
  -H "Authorization: Bearer $TOK"
字段 hulai qianshou hulai-wenlu
mchId 1106110439 1246532201 1684769133
apiV3Key (RespVO 解密返明文) 2XxC4RHqyipPMwpVoAhXsvj1hvrwgbAJ
mchSerialNo 60508F7718D2A9BB21DA9E8BB6259919FEA9FB0F 7731A9D5B457BB999CA7CDB12676F1809DE2945A 6708668E3326069DA24F81DD5568593F3F3CFA99
publicKeyId PUB_KEY_ID_0111061104392026020200181614001205 PUB_KEY_ID_0112465322012026020200212016001401 PUB_KEY_ID_0116847691332026020200212017000202

四、前端无需改动

后端字段返回时已经是明文 (apiV3Key/mchSerialNo) + 完整内容, 前端无需改任何 API 调用代码,刷新页面即可看到字段全部填充


五、关联 PR + changelog

  • wx/HL PR #1717: 资质附件 qualificationType + 字典 agency_qualification_type / agency_contract_platform
  • wx/HL PR #1718: 本 PR
  • 关联 changelog: 06_feat_agency_qualification_type_and_contract_platform.md

cc @mmg