GetRecordDetail.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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 AdminGetRecordDetail extends API {
  6. constructor() {
  7. super();
  8. this.setPath('/Admin/Lepao/GetRecordDetail')
  9. this.setMethod('GET')
  10. }
  11. async onRequest(req, res) {
  12. let {
  13. uuid,
  14. session,
  15. id,
  16. public_id
  17. } = req.query
  18. if ([uuid, session].some(value => value === '' || value === null || value === undefined))
  19. return res.json({
  20. ...BaseStdResponse.MISSING_PARAMETER
  21. })
  22. if ((id === '' || id === null || id === undefined) && (public_id === '' || public_id === null || public_id === undefined))
  23. return res.json({
  24. ...BaseStdResponse.MISSING_PARAMETER
  25. })
  26. // 检查 session
  27. if (!await AccessControl.checkSession(uuid, session))
  28. return res.status(401).json({
  29. ...BaseStdResponse.ACCESS_DENIED
  30. })
  31. // 检查权限
  32. let permission = await AccessControl.getPermission(uuid)
  33. if (!permission.includes("admin") && !permission.includes("server"))
  34. return res.json({
  35. ...BaseStdResponse.PERMISSION_DENIED
  36. })
  37. let sql = `
  38. SELECT
  39. r.public_id,
  40. r.time,
  41. r.result,
  42. r.run_mode,
  43. r.lepao_account,
  44. r.point_data,
  45. r.path_id,
  46. a.name,
  47. p.data
  48. FROM
  49. lepao_record r
  50. LEFT JOIN
  51. lepao_account a
  52. ON
  53. r.lepao_account = a.student_num
  54. LEFT JOIN
  55. path_data p
  56. ON
  57. r.path_id = p.id
  58. `
  59. const params = []
  60. if (public_id !== '' && public_id !== null && public_id !== undefined) {
  61. sql += ' WHERE r.public_id = ?'
  62. params.push(public_id)
  63. } else {
  64. sql += ' WHERE r.id = ?'
  65. params.push(id)
  66. }
  67. let rows = await db.query(sql, params)
  68. if (!rows)
  69. return res.json({
  70. ...BaseStdResponse.MISSING_FILE,
  71. msg: '获取记录数据失败!'
  72. })
  73. if(rows.length === 0)
  74. return res.json({
  75. ...BaseStdResponse.MISSING_FILE,
  76. msg: '记录不存在或已被删除!'
  77. })
  78. let data = rows[0]
  79. data.data = data.data.map(point => [point.o, point.a])
  80. res.json({
  81. ...BaseStdResponse.OK,
  82. data
  83. })
  84. }
  85. }
  86. module.exports.AdminGetRecordDetail = AdminGetRecordDetail