formatRecordRow.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. const Redis = require('../DataBase/Redis.js')
  2. const jkesRedisKeys = require('./redisKeys.js')
  3. async function getLepaoSchedule(recordId) {
  4. const schedule = await Redis.get(jkesRedisKeys.lepaoSchedule(recordId))
  5. return schedule ? JSON.parse(schedule) : null
  6. }
  7. /**
  8. * 将 lepao_record.result(JKES end 接口 info)解析为列表/详情用的摘要字段
  9. */
  10. async function enrichLepaoRecordRow(row) {
  11. let out = { ...row }
  12. if (row.id && row.state === 0) {
  13. const schedule = await getLepaoSchedule(row.id)
  14. out['lepao_schedule'] = schedule
  15. }
  16. let jkes = null
  17. try {
  18. const r =
  19. typeof row.result === 'object' && row.result !== null
  20. ? row.result
  21. : JSON.parse(row.result || '{}')
  22. const rawDistance = r.distance != null ? Number(r.distance) : NaN
  23. const distanceKm =
  24. Number.isFinite(rawDistance) && rawDistance > 0
  25. ? Math.round((rawDistance / 1000) * 1000) / 1000
  26. : null
  27. jkes = {
  28. distance_km: distanceKm,
  29. use_time_sec: r.useTime != null ? Number(r.useTime) : null,
  30. run_status: r.status?.value ?? r.status,
  31. campus_status: r.dataStatus?.value ?? r.dataStatus,
  32. begin_time: r.beginTime,
  33. end_time: r.endTime
  34. }
  35. } catch {
  36. jkes = null
  37. }
  38. out.jkes_record = jkes
  39. return out
  40. }
  41. module.exports = { enrichLepaoRecordRow }