|
@@ -0,0 +1,124 @@
|
|
|
|
|
+const API = require("../../../lib/API")
|
|
|
|
|
+const db = require("../../../plugin/DataBase/db")
|
|
|
|
|
+const AccessControl = require("../../../lib/AccessControl")
|
|
|
|
|
+const { BaseStdResponse } = require("../../../BaseStdResponse")
|
|
|
|
|
+
|
|
|
|
|
+class GetPathList extends API {
|
|
|
|
|
+ constructor() {
|
|
|
|
|
+ super();
|
|
|
|
|
+
|
|
|
|
|
+ this.setPath('/Lepao/GetPathList')
|
|
|
|
|
+ this.setMethod('post')
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ async onRequest(req, res) {
|
|
|
|
|
+ let { uuid, session, area, max_distance, min_distance, pagesize, current } = req.body
|
|
|
|
|
+
|
|
|
|
|
+ if ([uuid, session, pagesize, current].some(value => value === '' || value === null || value === undefined))
|
|
|
|
|
+ return res.json({
|
|
|
|
|
+ ...BaseStdResponse.MISSING_PARAMETER
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ // 校验分页参数
|
|
|
|
|
+ if (isNaN(pagesize) || pagesize <= 0) {
|
|
|
|
|
+ return res.json({
|
|
|
|
|
+ ...BaseStdResponse.ERR,
|
|
|
|
|
+ msg: '参数错误'
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (isNaN(current) || current <= 0) {
|
|
|
|
|
+ return res.json({
|
|
|
|
|
+ ...BaseStdResponse.ERR,
|
|
|
|
|
+ msg: '参数错误'
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 检查 session
|
|
|
|
|
+ if (!await AccessControl.checkSession(uuid, session))
|
|
|
|
|
+ return res.status(401).json({
|
|
|
|
|
+ ...BaseStdResponse.ACCESS_DENIED
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ // 检查权限
|
|
|
|
|
+ let permission = await AccessControl.getPermission(uuid)
|
|
|
|
|
+ if (!permission.includes("admin") && !permission.includes("path"))
|
|
|
|
|
+ return res.json({
|
|
|
|
|
+ ...BaseStdResponse.PERMISSION_DENIED
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ // 计算分页的 offset
|
|
|
|
|
+ const offset = (current - 1) * pagesize
|
|
|
|
|
+
|
|
|
|
|
+ let sql = `
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ id, distance, run_zone_name, time, count, speed, state
|
|
|
|
|
+ FROM
|
|
|
|
|
+ path_data
|
|
|
|
|
+ WHERE
|
|
|
|
|
+ id > 0
|
|
|
|
|
+ `
|
|
|
|
|
+
|
|
|
|
|
+ let countSql = `
|
|
|
|
|
+ SELECT COUNT(*) AS total
|
|
|
|
|
+ FROM path_data
|
|
|
|
|
+ WHERE 1 = 1
|
|
|
|
|
+ `
|
|
|
|
|
+
|
|
|
|
|
+ let params = []
|
|
|
|
|
+ let countParams = []
|
|
|
|
|
+
|
|
|
|
|
+ if (area) {
|
|
|
|
|
+ sql += ` AND run_zone_name = ?`
|
|
|
|
|
+ countSql += ` AND run_zone_name = ?`
|
|
|
|
|
+ params.push(area)
|
|
|
|
|
+ countParams.push(area)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (min_distance) {
|
|
|
|
|
+ sql += ` AND distance >= ?`
|
|
|
|
|
+ countSql += ` AND distance >= ?`
|
|
|
|
|
+ params.push(min_distance)
|
|
|
|
|
+ countParams.push(min_distance)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (max_distance) {
|
|
|
|
|
+ sql += ` AND distance <= ?`
|
|
|
|
|
+ countSql += ` AND distance <= ?`
|
|
|
|
|
+ params.push(max_distance)
|
|
|
|
|
+ countParams.push(max_distance)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ sql += `
|
|
|
|
|
+ ORDER BY
|
|
|
|
|
+ id DESC
|
|
|
|
|
+ LIMIT ? OFFSET ?;
|
|
|
|
|
+ `
|
|
|
|
|
+ params.push(String(pagesize), String(offset))
|
|
|
|
|
+
|
|
|
|
|
+ let rows = await db.query(sql, params)
|
|
|
|
|
+ let countResult = await db.query(countSql, countParams)
|
|
|
|
|
+
|
|
|
|
|
+ if (!rows || !countResult)
|
|
|
|
|
+ return res.json({
|
|
|
|
|
+ ...BaseStdResponse.MISSING_FILE,
|
|
|
|
|
+ msg: '获取路径数据失败!'
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ let total = countResult[0].total
|
|
|
|
|
+ const totalPages = Math.ceil(total / pagesize)
|
|
|
|
|
+
|
|
|
|
|
+ res.json({
|
|
|
|
|
+ ...BaseStdResponse.OK,
|
|
|
|
|
+ data: rows,
|
|
|
|
|
+ pagination: {
|
|
|
|
|
+ current: current,
|
|
|
|
|
+ pagesize: pagesize,
|
|
|
|
|
+ total: total,
|
|
|
|
|
+ totalPages: totalPages
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+module.exports.GetPathList = GetPathList
|