PublicArticle.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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 PublicArticle extends API {
  7. constructor() {
  8. super();
  9. this.setPath('/Admin/Article/Public');
  10. this.setMethod('POST');
  11. }
  12. async onRequest(req, res) {
  13. let { uuid, session, id } = req.body
  14. if ([uuid, session, id].some(value => value === '' || value === null || value === undefined)) {
  15. return res.json({
  16. ...BaseStdResponse.MISSING_PARAMETER,
  17. })
  18. }
  19. // 检查 session
  20. if (!await AccessControl.checkSession(uuid, session)) {
  21. return res.status(401).json({
  22. ...BaseStdResponse.ACCESS_DENIED,
  23. });
  24. }
  25. // 检查权限
  26. let permission = await AccessControl.getPermission(uuid);
  27. if (!permission.includes("admin") && !permission.includes("article")) {
  28. return res.json({
  29. ...BaseStdResponse.PERMISSION_DENIED,
  30. })
  31. }
  32. try {
  33. // 查询当前文章的状态
  34. let [currentState] = await db.query('SELECT state FROM article WHERE id = ?', [id]);
  35. if (!currentState) {
  36. return res.json({
  37. ...BaseStdResponse.ERR,
  38. endpoint: 7894379,
  39. msg: '文章不存在!'
  40. })
  41. }
  42. // 计算新的状态
  43. let newState = currentState.state === 0 ? 1 : 0;
  44. // 更新状态
  45. let sql = 'UPDATE article SET state = ? WHERE id = ?';
  46. let result = await db.query(sql, [newState, id]);
  47. if (result && result.affectedRows > 0) {
  48. return res.json({
  49. ...BaseStdResponse.OK
  50. })
  51. } else {
  52. return res.json({
  53. ...BaseStdResponse.ERR,
  54. endpoint: 7894378,
  55. msg: '修改文章状态失败!数据库错误',
  56. });
  57. }
  58. } catch (err) {
  59. this.logger.error(`修改文章状态失败!${err.stack}`)
  60. return res.json({
  61. ...BaseStdResponse.ERR,
  62. msg: "修改文章状态失败!",
  63. });
  64. }
  65. }
  66. }
  67. module.exports.PublicArticle = PublicArticle