Browse Source

✨ feat: 乐跑记录改为分页方式

Pchen. 9 months ago
parent
commit
3aefadea9f
2 changed files with 74 additions and 14 deletions
  1. 70 8
      apis/Lepao/GetLepaoRecords.js
  2. 4 6
      apis/Lepao/Path/GetPathList.js

+ 70 - 8
apis/Lepao/GetLepaoRecords.js

@@ -12,23 +12,42 @@ class GetLepaoRecords extends API {
     }
     }
 
 
     async onRequest(req, res) {
     async onRequest(req, res) {
-        let { uuid, session } = req.query
+        let { uuid, session, name, lepao_account, email, pagesize, current } = req.query
 
 
-        if ([uuid, session].some(value => value === '' || value === null || value === undefined))
+        if ([uuid, session, pagesize, current].some(value => value === '' || value === null || value === undefined))
             return res.json({
             return res.json({
                 ...BaseStdResponse.MISSING_PARAMETER,
                 ...BaseStdResponse.MISSING_PARAMETER,
                 endpoint: 1513126
                 endpoint: 1513126
             })
             })
 
 
+        // 校验分页参数
+        if (isNaN(pagesize) || pagesize <= 0) {
+            return res.json({
+                ...BaseStdResponse.ERR,
+                msg: '参数错误'
+            })
+        }
+
+        if (isNaN(current) || current <= 0) {
+            return res.json({
+                ...BaseStdResponse.ERR,
+                msg: '参数错误'
+            })
+        }
+
         if (!await AccessControl.checkSession(uuid, session))
         if (!await AccessControl.checkSession(uuid, session))
             return res.status(401).json({
             return res.status(401).json({
                 ...BaseStdResponse.ACCESS_DENIED
                 ...BaseStdResponse.ACCESS_DENIED
             })
             })
 
 
+        // 计算分页的 offset
+        const offset = (current - 1) * pagesize
+
         let sql = `
         let sql = `
                 SELECT 
                 SELECT 
                     r.time,
                     r.time,
                     r.result,
                     r.result,
+                    r.lepao_account,
                     a.name
                     a.name
                 FROM 
                 FROM 
                     lepao_record r
                     lepao_record r
@@ -38,19 +57,62 @@ class GetLepaoRecords extends API {
                     r.lepao_account = a.student_num
                     r.lepao_account = a.student_num
                 WHERE 
                 WHERE 
                     a.create_user = ?
                     a.create_user = ?
-                ORDER BY 
-                    r.id DESC
-                            `
-        let rows = await db.query(sql, [uuid])
+            `
+
+        let countSql = `
+            SELECT COUNT(*) AS total
+            FROM lepao_record r
+            JOIN lepao_account a ON r.lepao_account = a.student_num
+            WHERE a.create_user = ?
+        `
 
 
-        if (!rows)
+        let params = [uuid]
+        let countParams = [uuid]
+
+        if (lepao_account) {
+            sql += ` AND r.lepao_account = ?`
+            countSql += ` AND r.lepao_account = ?`
+            params.push(lepao_account)
+            countParams.push(lepao_account)
+        }
+
+        if (email) {
+            sql += ` AND a.email = ?`
+            countSql += ` AND a.email = ?`
+            params.push(email)
+            countParams.push(email)
+        }
+
+        if (name) {
+            sql += ` AND a.name = ?`
+            countSql += ` AND a.name = ?`
+            params.push(name)
+            countParams.push(name)
+        }
+
+        sql += `
+            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({
             return res.json({
                 ...BaseStdResponse.DATABASE_ERR
                 ...BaseStdResponse.DATABASE_ERR
             })
             })
 
 
+        let total = countResult[0].total
+
         res.json({
         res.json({
             ...BaseStdResponse.OK,
             ...BaseStdResponse.OK,
-            data: rows
+            data: rows,
+            pagination: {
+                current,
+                pagesize,
+                total
+            }
         })
         })
     }
     }
 }
 }

+ 4 - 6
apis/Lepao/Path/GetPathList.js

@@ -56,7 +56,7 @@ class GetPathList extends API {
             FROM
             FROM
                 path_data
                 path_data
             WHERE 
             WHERE 
-                id > 0
+                1 = 1
         `
         `
 
 
         let countSql = `
         let countSql = `
@@ -111,16 +111,14 @@ class GetPathList extends API {
             })
             })
 
 
         let total = countResult[0].total
         let total = countResult[0].total
-        const totalPages = Math.ceil(total / pagesize)
 
 
         res.json({
         res.json({
             ...BaseStdResponse.OK,
             ...BaseStdResponse.OK,
             data: rows,
             data: rows,
             pagination: {
             pagination: {
-                current: current,
-                pagesize: pagesize,
-                total: total,
-                totalPages: totalPages
+                current,
+                pagesize,
+                total
             }
             }
         })
         })
     }
     }