修复保存纪念日时授权订阅消息未上报额度的缺口

requestSubscribe() 改为委托给 utils/subscribe.js 的
requestAndReport(),用户同意授权后会把新增额度同步上报后端,
避免最主要的授权入口被漏记导致余额系统性低估、定时任务拒发。
onSubmit 里原来依赖 reject 的 try/catch 改为直接判断布尔返回值,
消除死代码分支,"拒绝不阻塞保存"的行为保持不变。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
yuming
2026-08-16 09:31:03 +08:00
parent 1142346e24
commit bc4fb7445d
+13 -17
View File
@@ -301,11 +301,13 @@ Page({
}
// 如果开启了提醒,请求订阅消息授权
// 注:requestSubscribe 委托给 utils/subscribe.js 的 requestAndReport
// 该函数只会 resolvetrue=同意/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<boolean>} 用户是否同意
*/
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()
},
/**