- 新增 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>
This commit is contained in:
@@ -0,0 +1,157 @@
|
||||
// 云函数:同步纪念日数据到云端
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user