// 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() const _ = db.command const $ = db.command.aggregate // 云函数入口函数 exports.main = async (event, context) => { const { OPENID } = cloud.getWXContext() try { await db.collection('message') .doc(event.msg_id) .get() } catch (err) { return { errMsg: '信息不存在', status: 'ERR' } } const read_check = await db.collection('read') .aggregate() .match(_.expr($.and([ $.eq(['$user_id', OPENID]), $.eq(['$msg_id', event.msg_id]), $.lt([$.subtract([new Date(), '$read_time']), 1000 * 60 * 30]) ]))) .end() if (read_check.list.length !== 0) { return { errMsg: '30分钟内只算一次阅读量', status: 'ERR' } } const read = await db.collection('read') .add({ data: { user_id: OPENID, msg_id: event.msg_id || '', read_time: new Date() } }) return { _id: read._id, status: 'OK' } }