Browse Source

🐞 fix: 解决查询日志时内存超出的问题

Pchen. 8 months ago
parent
commit
c212ab0dd6
2 changed files with 77 additions and 2 deletions
  1. 9 2
      apis/User/Admin/GetReqLog.js
  2. 68 0
      apis/User/Admin/GetReqLogDetail.js

+ 9 - 2
apis/User/Admin/GetReqLog.js

@@ -52,7 +52,14 @@ class GetReqLog extends API {
 
 
        let sql = `
        let sql = `
                 SELECT 
                 SELECT 
-                    l.*,
+                    l.id,
+                    l.create_time,
+                    l.method,
+                    l.code,
+                    l.ip,
+                    l.location,
+                    l.url,
+                    l.deviceType,
                     u.username,
                     u.username,
                     u.avatar
                     u.avatar
                 FROM 
                 FROM 
@@ -121,7 +128,7 @@ class GetReqLog extends API {
         params.push(String(pagesize), String(offset))
         params.push(String(pagesize), String(offset))
 
 
         // 临时调大缓存
         // 临时调大缓存
-        await db.query("SET SESSION sort_buffer_size = 8*1024*1024;")
+        // await db.query("SET SESSION sort_buffer_size = 8*1024*1024;")
 
 
         let rows = await db.query(sql, params)
         let rows = await db.query(sql, params)
         let countResult = await db.query(countSql, countParams)
         let countResult = await db.query(countSql, countParams)

+ 68 - 0
apis/User/Admin/GetReqLogDetail.js

@@ -0,0 +1,68 @@
+const API = require("../../../lib/API")
+const db = require("../../../plugin/DataBase/db")
+const AccessControl = require("../../../lib/AccessControl")
+const { BaseStdResponse } = require("../../../BaseStdResponse")
+
+class GetReqLogDetail extends API {
+    constructor() {
+        super();
+
+        this.setPath('/Admin/User/GetReqLogDetail')
+        this.setMethod('GET')
+    }
+
+    async onRequest(req, res) {
+        let {
+            uuid,
+            session,
+            id
+        } = req.query
+
+        if ([uuid, session, id].some(value => value === '' || value === null || value === undefined))
+            return res.json({
+                ...BaseStdResponse.MISSING_PARAMETER
+            })
+
+        // 检查 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"))
+            return res.json({
+                ...BaseStdResponse.PERMISSION_DENIED
+            })
+
+        let sql = `
+               SELECT 
+                    l.*,
+                    u.username,
+                    u.avatar
+                FROM 
+                    requestLog l
+                JOIN 
+                    users u
+                ON 
+                    l.create_user = u.uuid
+                WHERE 
+                    l.id = ?
+            `
+        let rows = await db.query(sql, [id])
+
+        if (!rows || rows.length === 0)
+            return res.json({
+                ...BaseStdResponse.MISSING_FILE,
+                msg: '获取日志数据失败!'
+            })
+
+        res.json({
+            ...BaseStdResponse.OK,
+            data: rows[0]
+        })
+    }
+}
+
+module.exports.GetReqLogDetail = GetReqLogDetail