feat(cloud): 实现微信云函数 - 订阅管理与每日运势推送
- subscribe: 用户订阅/取消订阅/查询订阅状态 - daily-push: 定时查询订阅用户、生成运势、发送订阅消息 - push-test: 推送调试云函数 - 定时触发器配置,每日 7:00/12:00/18:00 推送
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
// 云函数:updatePushTime
|
||||
// 更新用户推送时间
|
||||
const cloud = require('wx-server-sdk')
|
||||
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })
|
||||
const db = cloud.database()
|
||||
|
||||
exports.main = async (event, context) => {
|
||||
const { pushTime } = event
|
||||
const { OPENID } = cloud.getWXContext()
|
||||
|
||||
// 校验 pushTime 格式 (HH:mm)
|
||||
if (!pushTime || !/^([01]\d|2[0-3]):([03]0)$/.test(pushTime)) {
|
||||
return { success: false, error: '推送时间格式无效,需为 HH:mm 格式,分钟为 00 或 30' }
|
||||
}
|
||||
|
||||
try {
|
||||
const existing = await db.collection('subscriptions').where({
|
||||
openid: OPENID,
|
||||
}).get()
|
||||
|
||||
if (existing.data.length === 0) {
|
||||
return { success: false, error: '未找到订阅记录' }
|
||||
}
|
||||
|
||||
await db.collection('subscriptions').doc(existing.data[0]._id).update({
|
||||
data: {
|
||||
pushTime,
|
||||
updatedAt: db.serverDate(),
|
||||
},
|
||||
})
|
||||
|
||||
return { success: true }
|
||||
} catch (err) {
|
||||
console.error('[updatePushTime] Error:', err)
|
||||
return { success: false, error: err.message }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "updatePushTime",
|
||||
"version": "1.0.0",
|
||||
"description": "更新用户推送时间配置",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"wx-server-sdk": "latest"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user