GetRecordDetail.js 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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 GetRecordDetail extends API {
  7. constructor() {
  8. super();
  9. this.setPath('/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. let sql = `
  33. SELECT
  34. r.public_id,
  35. r.time,
  36. r.result,
  37. r.run_mode,
  38. r.lepao_account,
  39. r.point_data,
  40. a.name,
  41. p.data
  42. FROM
  43. lepao_record r
  44. LEFT JOIN
  45. lepao_account a
  46. ON
  47. r.lepao_account = a.student_num
  48. LEFT JOIN
  49. path_data p
  50. ON
  51. r.path_id = p.id
  52. WHERE
  53. (r.uuid = ? OR (a.create_user IS NOT NULL AND a.create_user = ?))
  54. `
  55. const params = [uuid, uuid]
  56. if (public_id !== '' && public_id !== null && public_id !== undefined) {
  57. sql += ' AND r.public_id = ?'
  58. params.push(public_id)
  59. } else {
  60. sql += ' AND r.id = ?'
  61. params.push(id)
  62. }
  63. let rows = await db.query(sql, params)
  64. if (!rows)
  65. return res.json({
  66. ...BaseStdResponse.MISSING_FILE,
  67. msg: '获取记录数据失败!'
  68. })
  69. if(rows.length === 0)
  70. return res.json({
  71. ...BaseStdResponse.MISSING_FILE,
  72. msg: '记录不存在或已被删除!'
  73. })
  74. let data = rows[0]
  75. data.data = toCoordinatePairs(data.data, data.point_data)
  76. res.json({
  77. ...BaseStdResponse.OK,
  78. data
  79. })
  80. }
  81. }
  82. module.exports.GetRecordDetail = GetRecordDetail