index.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // 云函数入口文件
  2. const cloud = require('wx-server-sdk')
  3. cloud.init()
  4. const db = cloud.database()
  5. const _ = db.command
  6. const $ = db.command.aggregate
  7. // 云函数入口函数
  8. exports.main = async (event, context) => {
  9. const {
  10. OPENID
  11. } = cloud.getWXContext()
  12. try {
  13. await db.collection('message')
  14. .doc(event.msg_id)
  15. .get()
  16. } catch (err) {
  17. return {
  18. errMsg: '信息不存在',
  19. status: 'ERR'
  20. }
  21. }
  22. const read_check = await db.collection('read')
  23. .aggregate()
  24. .match(_.expr($.and([
  25. $.eq(['$user_id', OPENID]),
  26. $.eq(['$msg_id', event.msg_id]),
  27. $.lt([$.subtract([new Date(), '$read_time']), 1000 * 60 * 30])
  28. ])))
  29. .end()
  30. if (read_check.list.length !== 0) {
  31. return {
  32. errMsg: '30分钟内只算一次阅读量',
  33. status: 'ERR'
  34. }
  35. }
  36. const read = await db.collection('read')
  37. .add({
  38. data: {
  39. user_id: OPENID,
  40. msg_id: event.msg_id || '',
  41. read_time: new Date()
  42. }
  43. })
  44. return {
  45. _id: read._id,
  46. status: 'OK'
  47. }
  48. }