Browse Source

🐞 fix: 修复部分路径读取出错的问题

Pchen0 1 month ago
parent
commit
e9cf77b1a7

+ 2 - 1
apis/Lepao/Path/GetPathDetail.js

@@ -2,6 +2,7 @@ const API = require("../../../lib/API")
 const db = require("../../../plugin/DataBase/db")
 const AccessControl = require("../../../lib/AccessControl")
 const { BaseStdResponse } = require("../../../BaseStdResponse")
+const { toCoordinatePairs } = require("../../../plugin/Lepao/toCoordinatePairs")
 
 class GetPathDetail extends API {
     constructor() {
@@ -67,7 +68,7 @@ class GetPathDetail extends API {
             }) 
 
         let data = rows[0]
-        data.data = data.data.map(point => [point.o, point.a])
+        data.data = toCoordinatePairs(data.data)
 
         res.json({
             ...BaseStdResponse.OK,

+ 2 - 1
apis/Lepao/Record/Admin/GetRecordDetail.js

@@ -2,6 +2,7 @@ const API = require("../../../../lib/API")
 const db = require("../../../../plugin/DataBase/db")
 const AccessControl = require("../../../../lib/AccessControl")
 const { BaseStdResponse } = require("../../../../BaseStdResponse")
+const { toCoordinatePairs } = require("../../../../plugin/Lepao/toCoordinatePairs")
 
 class AdminGetRecordDetail extends API {
     constructor() {
@@ -87,7 +88,7 @@ class AdminGetRecordDetail extends API {
             }) 
 
         let data = rows[0]
-        data.data = data.data.map(point => [point.o, point.a])
+        data.data = toCoordinatePairs(data.data, data.point_data)
 
         res.json({
             ...BaseStdResponse.OK,

+ 2 - 1
apis/Lepao/Record/GetRecordDetail.js

@@ -2,6 +2,7 @@ const API = require("../../../lib/API")
 const db = require("../../../plugin/DataBase/db")
 const AccessControl = require("../../../lib/AccessControl")
 const { BaseStdResponse } = require("../../../BaseStdResponse")
+const { toCoordinatePairs } = require("../../../plugin/Lepao/toCoordinatePairs")
 
 class GetRecordDetail extends API {
     constructor() {
@@ -81,7 +82,7 @@ class GetRecordDetail extends API {
             }) 
 
         let data = rows[0]
-        data.data = data.data.map(point => [point.o, point.a])
+        data.data = toCoordinatePairs(data.data, data.point_data)
 
         res.json({
             ...BaseStdResponse.OK,

+ 31 - 0
plugin/Lepao/toCoordinatePairs.js

@@ -0,0 +1,31 @@
+function parseMaybeJson(value) {
+    if (value == null) return null
+    if (Array.isArray(value)) return value
+    if (typeof value === 'string') {
+        try {
+            return JSON.parse(value)
+        } catch {
+            return null
+        }
+    }
+    return null
+}
+
+/**
+ * 将 path_data.data 或 lepao_record.point_data 转为前端使用的 [经度, 纬度] 数组
+ */
+function toCoordinatePairs(pathData, pointData) {
+    const path = parseMaybeJson(pathData)
+    if (Array.isArray(path) && path.length > 0 && path[0]?.o != null) {
+        return path.map(point => [point.o, point.a])
+    }
+
+    const points = parseMaybeJson(pointData)
+    if (Array.isArray(points) && points.length > 0) {
+        return points.map(p => [p.longitude ?? p.longtitude, p.latitude])
+    }
+
+    return []
+}
+
+module.exports = { toCoordinatePairs, parseMaybeJson }