IndexData.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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 jw_account WHERE create_user = ?) AS accounts,
  27. (SELECT COUNT(*) FROM ic_rule) AS rules
  28. `
  29. try {
  30. let r = await db.query(sql, [uuid])
  31. if (!r)
  32. return res.json({
  33. ...BaseStdResponse.DATABASE_ERR
  34. })
  35. let { accounts, rules } = r[0]
  36. sql = `
  37. SELECT
  38. a.id,
  39. a.title,
  40. a.\`describe\`,
  41. a.views,
  42. a.type,
  43. a.time,
  44. u.username AS author
  45. FROM
  46. article a
  47. LEFT JOIN
  48. users u
  49. ON
  50. a.author = u.uuid
  51. WHERE
  52. a.state = 1
  53. AND a.type = 'news'
  54. ORDER BY
  55. a.id DESC
  56. LIMIT 9
  57. `
  58. r = await db.query(sql)
  59. if(!r)
  60. return res.json({
  61. ...BaseStdResponse.DATABASE_ERR
  62. })
  63. res.json({
  64. ...BaseStdResponse.OK,
  65. data: {
  66. accounts,
  67. rules,
  68. article: r
  69. }
  70. })
  71. } catch (err) {
  72. return res.json({
  73. ...BaseStdResponse.ERR,
  74. msg: `获取数据失败!${err.message || ''}`
  75. })
  76. }
  77. }
  78. }
  79. module.exports.IndexData = IndexData;