From 501201e81da39c34dc4be7b69096882fcf8c1457 Mon Sep 17 00:00:00 2001 From: Karlcarlo Date: Wed, 8 Jul 2026 16:32:34 +0800 Subject: [PATCH] =?UTF-8?q?refactor(share):=20=E5=A4=AA=E9=98=B3=E7=A0=81?= =?UTF-8?q?=E7=94=9F=E6=88=90=E4=BC=A0=20app=3Dpregnancy=20=E6=9B=BF?= =?UTF-8?q?=E4=BB=A3=E7=A1=AC=E7=BC=96=E7=A0=81=20path?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit box_app /api/wxacode 新增 app=identifier 模式: - 自动查 box_app 后台 App 表,scene 编码 "app=" - CRMEB web_view 容器页收到后查 /api/mp/apps 找 url - 4 个 H5 共享 box_app 一个接口,CRMEB 无需维护映射表 app_03 改动: - 硬编码 WXACODE_PATH = "pages/annex/web_view/index" 改为 APP_IDENTIFIER = "pregnancy"(box_app 后台 App.identifier 值) - 调用 /api/wxacode?app=pregnancy&width=430 - 关注点分离:app_03 不需要知道目标小程序路径 后续扩展: - atoll/voce/zeno H5 项目只需在自己代码里改 APP_IDENTIFIER 常量 - box_app 后台同步加对应 App 记录即可 --- frontend/src/app/services/api.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/frontend/src/app/services/api.ts b/frontend/src/app/services/api.ts index a1dea65..0a41afa 100644 --- a/frontend/src/app/services/api.ts +++ b/frontend/src/app/services/api.ts @@ -536,18 +536,22 @@ export async function generateShareData( // ─── WXacode(外部服务,box_app 太阳码生成)─── // -// 调用 box_app /api/wxacode,生成可被微信扫码直接进入 CRMEB 小程序的太阳码。 -// scene 留空——目标页是 CRMEB 通用 web-view 容器 pages/annex/web_view/index, -// 扫码后收件人直接进入 app_03 H5 首页(与「分享 → 扫码进首页」流程一致)。 +// 调用 box_app /api/wxacode?app=,生成可被微信扫码直接进入 +// 对应 H5 的小程序太阳码。box_app 后台 App 表保存每个 H5 的 url。 +// 太阳码 scene 编码 "app=",CRMEB 收到后查 /api/mp/apps 找 url。 +// +// 模式 1(保留,兼容旧调用):?path=...&scene=... +// 模式 2(推荐):?app=,box_app 自动查表 + 编码 scene const WXACODE_API_HOST = "https://mp.yizhezhe.com"; -const WXACODE_PATH = "pages/annex/web_view/index"; +// 当前 H5(孕育无忧)在 box_app 后台 App.identifier 值 +const APP_IDENTIFIER = "pregnancy"; /** 调用 box_app 生成小程序太阳码,返回 blob URL(用于 展示) */ export async function generateWxacode( options: { width?: number } = {} ): Promise { const params = new URLSearchParams({ - path: WXACODE_PATH, + app: APP_IDENTIFIER, width: String(options.width ?? 430), }); const res = await fetch(`${WXACODE_API_HOST}/api/wxacode?${params}`);