GetRecordDetail.js 3.0 KB

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