Files
wxserver/cloudfunctions/syncAnniversary/index.js
T
yuming 3965e542fc
部署到群晖 / deploy (push) Failing after 6m22s
接入自建后端 + Gitea CI/CD
- 新增 server/:Node + Express + SQLite + node-cron 实现登录、纪念日 CRUD 和定时订阅消息推送
- 新增 .gitea/workflows/deploy.yml:推送即触发群晖 Docker 部署,监听 15002
- utils/api.js:自动按 envVersion 切换本地/线上 BASE_URL
- app.js 与 add-anniversary.js 移除 wx.cloud 调用,改走自建后端
- cloudfunctions/ 暂保留以便回滚
- 一并提交此前未入库的首页 / 设置页 / 日历 / 万年历等改造

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-01 15:44:09 +08:00

158 lines
2.8 KiB
JavaScript

// 云函数:同步纪念日数据到云端
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})
const db = cloud.database()
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
const openid = wxContext.OPENID
const { action, data } = event
try {
switch (action) {
case 'add':
// 添加纪念日
return await addAnniversary(openid, data)
case 'update':
// 更新纪念日
return await updateAnniversary(openid, data)
case 'delete':
// 删除纪念日
return await deleteAnniversary(openid, data.id)
case 'sync':
// 批量同步
return await syncAnniversaries(openid, data)
case 'get':
// 获取用户所有纪念日
return await getAnniversaries(openid)
default:
return {
success: false,
error: '未知操作'
}
}
} catch (err) {
console.error('操作失败:', err)
return {
success: false,
error: err.message
}
}
}
/**
* 添加纪念日
*/
async function addAnniversary(openid, anniversary) {
const res = await db.collection('anniversaries').add({
data: {
...anniversary,
openid,
createTime: db.serverDate(),
updateTime: db.serverDate()
}
})
return {
success: true,
id: res._id
}
}
/**
* 更新纪念日
*/
async function updateAnniversary(openid, anniversary) {
const { id, ...updateData } = anniversary
await db.collection('anniversaries')
.where({
_id: id,
openid
})
.update({
data: {
...updateData,
updateTime: db.serverDate()
}
})
return {
success: true
}
}
/**
* 删除纪念日
*/
async function deleteAnniversary(openid, id) {
await db.collection('anniversaries')
.where({
_id: id,
openid
})
.remove()
return {
success: true
}
}
/**
* 批量同步纪念日
*/
async function syncAnniversaries(openid, anniversaries) {
// 先删除用户的所有纪念日
await db.collection('anniversaries')
.where({
openid
})
.remove()
// 批量添加
const tasks = anniversaries.map(anniversary => {
return db.collection('anniversaries').add({
data: {
...anniversary,
openid,
createTime: db.serverDate(),
updateTime: db.serverDate()
}
})
})
await Promise.all(tasks)
return {
success: true,
count: anniversaries.length
}
}
/**
* 获取用户所有纪念日
*/
async function getAnniversaries(openid) {
const res = await db.collection('anniversaries')
.where({
openid
})
.get()
return {
success: true,
data: res.data
}
}