From 16b345802814d43d9b68ccf96d174214d7be0030 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Wed, 6 May 2026 16:30:50 +0800 Subject: [PATCH] =?UTF-8?q?feat(agency):=20nacos=20=E5=AE=8C=E6=95=B4?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=90=8C=E6=AD=A5=20DB=20(PR=20#1718)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 通知 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) --- .../2026-05/06_feat_agency_nacos_full_sync.md | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 changelogs/2026-05/06_feat_agency_nacos_full_sync.md diff --git a/changelogs/2026-05/06_feat_agency_nacos_full_sync.md b/changelogs/2026-05/06_feat_agency_nacos_full_sync.md new file mode 100644 index 0000000..00b875e --- /dev/null +++ b/changelogs/2026-05/06_feat_agency_nacos_full_sync.md @@ -0,0 +1,91 @@ +# 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 同步 + +`AgencyInternalDTO` 加 `teamReportAppId/teamReportSignKey` 字段, `ContractPlatformProperties.AgencyInfo.fromInternalDTO` 同步, 保证 DB 路径下游 (12301 团队报送) 拿到完整字段。 + +--- + +## 三、测试服 round-trip 验证 (2026-05-06 16:30) + +```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'])") + +# 公司列表 - 三家完整字段 +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"]` | + +```bash +# 支付配置 - 加密字段透明解密返明文 +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