PostArticle.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. const API = require("../../../lib/API");
  2. const db = require("../../../plugin/DataBase/db");
  3. const AccessControl = require("../../../lib/AccessControl");
  4. const { BaseStdResponse } = require("../../../BaseStdResponse");
  5. // 发布/修改文章
  6. class PostArticle extends API {
  7. constructor() {
  8. super()
  9. this.setPath('/Admin/Article')
  10. this.setMethod('POST')
  11. }
  12. async onRequest(req, res) {
  13. let {
  14. uuid,
  15. session,
  16. id,
  17. title,
  18. cover,
  19. describe,
  20. content,
  21. type,
  22. state
  23. } = req.body
  24. if ([uuid, session, title, cover, content, type].some(value => value === '' || value === null || value === undefined))
  25. return res.json({
  26. ...BaseStdResponse.MISSING_PARAMETER
  27. })
  28. // 检查 session
  29. if (!await AccessControl.checkSession(uuid, session))
  30. return res.status(401).json({
  31. ...BaseStdResponse.ACCESS_DENIED
  32. })
  33. // 检查权限
  34. let permission = await AccessControl.getPermission(uuid)
  35. if (!permission.includes("admin") && !permission.includes("article"))
  36. return res.json({
  37. ...BaseStdResponse.PERMISSION_DENIED
  38. })
  39. const time = new Date().getTime()
  40. let sql, r
  41. if (!id) {
  42. sql = 'INSERT INTO article (title, cover, time, content, author, state, \`describe\`, type) VALUES (?, ?, ?, ?, ?, ?, ?, ?)'
  43. r = await db.query(sql, [title, cover, time, content, uuid, state, describe, type])
  44. } else {
  45. sql = 'UPDATE article SET title = ?, cover = ?, content = ?, state = ?, \`describe\` = ?, type = ? WHERE id = ?'
  46. r = await db.query(sql, [title, cover, content, state, describe, type, id])
  47. }
  48. try {
  49. if (r && r.affectedRows > 0) {
  50. res.json({
  51. ...BaseStdResponse.OK,
  52. id: r.insertId
  53. })
  54. } else {
  55. res.json({ ...BaseStdResponse.ERR, endpoint: 7894378, msg: '发表文章失败!数据库错误' })
  56. }
  57. } catch (err) {
  58. this.logger.error(`发表文章失败!${err.stack}`)
  59. res.json({
  60. ...BaseStdResponse.ERR,
  61. msg: "发表文章失败!",
  62. });
  63. }
  64. }
  65. }
  66. module.exports.PostArticle = PostArticle;