IndexData.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. class IndexData extends API {
  6. constructor() {
  7. super();
  8. this.setPath('/Admin/IndexData')
  9. this.setMethod('GET')
  10. }
  11. async onRequest(req, res) {
  12. let { uuid, session } = req.query
  13. if ([uuid, session].some(value => value === '' || value === null || value === undefined)) {
  14. return res.json({
  15. ...BaseStdResponse.MISSING_PARAMETER,
  16. endpoint: 1513126
  17. })
  18. }
  19. // 检查 session
  20. if (!await AccessControl.checkSession(uuid, session))
  21. return res.status(401).json({
  22. ...BaseStdResponse.ACCESS_DENIED
  23. })
  24. let sql = `
  25. SELECT
  26. (SELECT COUNT(*) FROM article) AS article_count,
  27. (SELECT COUNT(*) FROM users) AS users_count,
  28. (SELECT SUM(views) FROM article) AS article_views
  29. `
  30. try {
  31. let r = await db.query(sql)
  32. if (!r) {
  33. return res.json({
  34. ...BaseStdResponse.DATABASE_ERR
  35. })
  36. }
  37. let { article_count, users_count, article_views } = r[0]
  38. res.json({
  39. ...BaseStdResponse.OK,
  40. data: {
  41. article_count,
  42. users_count,
  43. article_views
  44. }
  45. })
  46. } catch (err) {
  47. return res.json({
  48. ...BaseStdResponse.ERR
  49. })
  50. }
  51. }
  52. }
  53. module.exports.IndexData = IndexData;