MarkRead.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. const API = require("../../lib/API.js")
  2. const db = require("../../plugin/DataBase/db.js")
  3. const AccessControl = require("../../lib/AccessControl.js")
  4. const { BaseStdResponse } = require("../../BaseStdResponse.js")
  5. class MarkPopupRead extends API {
  6. constructor() {
  7. super()
  8. this.setPath('/Popup/MarkRead')
  9. this.setMethod('POST')
  10. }
  11. async onRequest(req, res) {
  12. const { uuid, session, popup_id } = req.body
  13. if ([uuid, session, popup_id].some(v => v === '' || v === null || v === undefined))
  14. return res.json({ ...BaseStdResponse.MISSING_PARAMETER })
  15. if (!await AccessControl.checkSession(uuid, session))
  16. return res.status(401).json({ ...BaseStdResponse.ACCESS_DENIED })
  17. const popupRows = await db.query('SELECT id FROM site_popup WHERE id = ?', [popup_id])
  18. if (!popupRows || popupRows.length === 0) {
  19. return res.json({ ...BaseStdResponse.ERR, msg: '公告不存在' })
  20. }
  21. const sql = `
  22. INSERT INTO site_popup_read (popup_id, user_uuid, read_at)
  23. VALUES (?, ?, ?)
  24. ON DUPLICATE KEY UPDATE read_at = VALUES(read_at)
  25. `
  26. const now = Date.now()
  27. const rows = await db.query(sql, [popup_id, uuid, now])
  28. if (!rows) return res.json({ ...BaseStdResponse.DATABASE_ERR })
  29. return res.json({ ...BaseStdResponse.OK })
  30. }
  31. }
  32. module.exports.MarkPopupRead = MarkPopupRead