From bc4fb7445d9edc8ccffc531508759511f05e5a31 Mon Sep 17 00:00:00 2001 From: yuming Date: Sun, 16 Aug 2026 09:31:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BF=9D=E5=AD=98=E7=BA=AA?= =?UTF-8?q?=E5=BF=B5=E6=97=A5=E6=97=B6=E6=8E=88=E6=9D=83=E8=AE=A2=E9=98=85?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=9C=AA=E4=B8=8A=E6=8A=A5=E9=A2=9D=E5=BA=A6?= =?UTF-8?q?=E7=9A=84=E7=BC=BA=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit requestSubscribe() 改为委托给 utils/subscribe.js 的 requestAndReport(),用户同意授权后会把新增额度同步上报后端, 避免最主要的授权入口被漏记导致余额系统性低估、定时任务拒发。 onSubmit 里原来依赖 reject 的 try/catch 改为直接判断布尔返回值, 消除死代码分支,"拒绝不阻塞保存"的行为保持不变。 Co-Authored-By: Claude Opus 5 (1M context) --- pages/add-anniversary/add-anniversary.js | 30 ++++++++++-------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/pages/add-anniversary/add-anniversary.js b/pages/add-anniversary/add-anniversary.js index ba8ce05..4a8a01d 100644 --- a/pages/add-anniversary/add-anniversary.js +++ b/pages/add-anniversary/add-anniversary.js @@ -301,11 +301,13 @@ Page({ } // 如果开启了提醒,请求订阅消息授权 + // 注:requestSubscribe 委托给 utils/subscribe.js 的 requestAndReport, + // 该函数只会 resolve(true=同意/false=拒绝),不会 reject; + // 无论用户是否同意,都不阻塞后续保存流程 if (formData.remindEnabled) { - try { - await this.requestSubscribe() - } catch (err) { - console.log('用户拒绝订阅消息') + const accepted = await this.requestSubscribe() + if (!accepted) { + console.log('用户未同意订阅消息,本次不上报额度') } } @@ -370,21 +372,15 @@ Page({ /** * 请求订阅消息授权 + * 委托给 utils/subscribe.js 的 requestAndReport:同意后会自动把新增额度 + * 上报给后端(走同步队列,失败自动入队)。 + * 注意:本方法不能加 async,且内部不能在调用 requestAndReport 之前插入 + * 任何 await —— wx.requestSubscribeMessage 必须由用户点击手势同步触发, + * 一旦中间出现异步跳跃,手势上下文丢失会导致调用必然失败。 + * @returns {Promise} 用户是否同意 */ requestSubscribe() { - return new Promise((resolve, reject) => { - wx.requestSubscribeMessage({ - tmplIds: [subscribe.TEMPLATE_ID], - success: (res) => { - console.log('订阅消息授权结果:', res) - resolve(res) - }, - fail: (err) => { - console.error('订阅消息授权失败:', err) - reject(err) - } - }) - }) + return subscribe.requestAndReport() }, /**