GetRecordDetail.js 2.7 KB

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