Browse Source

🐞 fix: 修复了若干bug

-修复了数据库查询返回结果格式不统一的问题
-企微未返回头像时为用户设置默认头像
Pchen. 8 months ago
parent
commit
b7548c4d27

+ 1 - 1
apis/ClockIn/AddAttendanceItems.js

@@ -89,7 +89,7 @@ class AddAttendanceItems extends API {
         ];
 
         try {
-            const [result] = await db.query(sql, values);
+            const result = await db.query(sql, values);
 
             if (result.affectedRows !== 1) {
                 res.json({

+ 3 - 3
apis/ClockIn/AddAttendanceRecord.js

@@ -38,7 +38,7 @@ class AddAttendanceRecord extends API {
 
         // 获取考勤项目
         const sqlGetProject = 'SELECT user, day_of_week, loopy, begintime, endtime FROM kq_items WHERE id = ?';
-        let [projectResult] = await db.query(sqlGetProject, [project_id]);
+        let projectResult = await db.query(sqlGetProject, [project_id]);
 
         if (!projectResult || projectResult.length === 0) {
             res.json({
@@ -71,7 +71,7 @@ class AddAttendanceRecord extends API {
 
         // 检查是否已存在考勤记录
         const sqlCheckRecord = 'SELECT id, uuid, time FROM kq_records WHERE project_id = ? AND uuid = ?';
-        let [recordsResult] = await db.query(sqlCheckRecord, [project_id, uuid]);
+        let recordsResult = await db.query(sqlCheckRecord, [project_id, uuid]);
 
         if (!recordsResult) {
             return res.json({
@@ -90,7 +90,7 @@ class AddAttendanceRecord extends API {
 
         // 插入考勤记录
         const sqlInsertRecord = 'INSERT INTO kq_records (project_id, uuid, time) VALUES (?, ?, ?)';
-        let [insertResult] = await db.query(sqlInsertRecord, [project_id, uuid, new Date().getTime()]);
+        let insertResult = await db.query(sqlInsertRecord, [project_id, uuid, new Date().getTime()]);
 
         if (insertResult.affectedRows !== 1) {
             return res.json({

+ 3 - 3
apis/ClockIn/DeleteAttendanceItem.js

@@ -39,7 +39,7 @@ class DeleteAttendanceItem extends API {
 
         // 获取考勤项目
         const sqlGetProject = 'SELECT user, createUser, begintime, loopy, day_of_week, admin FROM kq_items WHERE id = ?';
-        let [projectResult] = await db.query(sqlGetProject, [project_id]);
+        let projectResult = await db.query(sqlGetProject, [project_id]);
 
         if (!projectResult || projectResult.length === 0) {
             res.json({
@@ -64,7 +64,7 @@ class DeleteAttendanceItem extends API {
 
         // 删除考勤项目
         const sqlDeleteProject = 'DELETE FROM kq_items WHERE id = ?';
-        let [deleteResult] = await db.query(sqlDeleteProject, [project_id]);
+        let deleteResult = await db.query(sqlDeleteProject, [project_id]);
 
         if (deleteResult.affectedRows !== 1) {
             res.json({
@@ -76,7 +76,7 @@ class DeleteAttendanceItem extends API {
 
         // 删除考勤记录
         const sqlDeleteRecords = 'DELETE FROM kq_records WHERE project_id = ?';
-        let [deleteRecordsResult] = await db.query(sqlDeleteRecords, [project_id]);
+        let deleteRecordsResult = await db.query(sqlDeleteRecords, [project_id]);
 
         if (!deleteRecordsResult) {
             res.json({

+ 2 - 2
apis/ClockIn/EditAttendanceItems.js

@@ -47,7 +47,7 @@ class EditAttendanceItems extends API {
 
         // 获取考勤项目
         const sqlGetProject = 'SELECT user, createUser, begintime, loopy, day_of_week, admin FROM kq_items WHERE id = ?';
-        let [projectResult] = await db.query(sqlGetProject, [id]);
+        let projectResult = await db.query(sqlGetProject, [id]);
 
         if (!projectResult || projectResult.length === 0) {
             res.json({
@@ -100,7 +100,7 @@ class EditAttendanceItems extends API {
                 admin = ?
             WHERE id = ?
         `;
-        let [updateResult] = await db.query(sqlUpdateProject, [
+        let updateResult = await db.query(sqlUpdateProject, [
             name,
             JSON.stringify(uuids),
             day_of_week,

+ 2 - 2
apis/ClockIn/GetAttendanceItemDetail.js

@@ -34,7 +34,7 @@ class GetAttendanceItemDetail extends API {
         try {
             // 获取考勤项目详情
             const sqlGetProject = 'SELECT * FROM kq_items WHERE id = ?';
-            let [projectResult] = await db.query(sqlGetProject, [project_id]);
+            let projectResult = await db.query(sqlGetProject, [project_id]);
 
             if (!projectResult || projectResult.length === 0) {
                 return res.json({
@@ -45,7 +45,7 @@ class GetAttendanceItemDetail extends API {
 
             // 获取考勤记录
             const sqlGetRecords = 'SELECT id, uuid, time, commit FROM kq_records WHERE project_id = ?';
-            let [records] = await db.query(sqlGetRecords, [project_id]);
+            let records = await db.query(sqlGetRecords, [project_id]);
 
             // 收集需要查询的用户 UUID
             const userUuids = new Set();

+ 1 - 1
apis/ClockIn/GetAttendanceItemList.js

@@ -45,7 +45,7 @@ class GetAttendanceItemList extends API {
         try {
             // 获取考勤项目列表
             const sqlGetItems = 'SELECT * FROM kq_items ORDER BY id DESC';
-            const [items] = await db.query(sqlGetItems);
+            const items = await db.query(sqlGetItems);
 
             if (!items) {
                 return res.json({

+ 2 - 2
apis/ClockIn/GetMyAttendanceItems.js

@@ -39,7 +39,7 @@ class GetMyAttendanceItems extends API {
                 FROM kq_items
                 WHERE JSON_CONTAINS(user, JSON_QUOTE(?), '$') ORDER BY id DESC
             `;
-            const [items] = await conn.query(sqlGetItems, [uuid]);
+            const items = await conn.query(sqlGetItems, [uuid]);
 
             if (!items) {
                 return res.json({
@@ -54,7 +54,7 @@ class GetMyAttendanceItems extends API {
                 FROM kq_records
                 WHERE uuid = ?
             `;
-            const [records] = await conn.query(sqlGetRecords, [uuid]);
+            const records = await conn.query(sqlGetRecords, [uuid]);
 
             if (records === undefined) {
                 return res.json({

+ 3 - 3
apis/ClockIn/SupplementRecord.js

@@ -38,7 +38,7 @@ class SupplementRecord extends API {
                 FROM kq_items
                 WHERE id = ?
             `;
-            const [projectData] = await db.query(sqlGetProject, [project_id]);
+            const projectData = await db.query(sqlGetProject, [project_id]);
 
             if (!projectData.length) {
                 return res.json({
@@ -65,7 +65,7 @@ class SupplementRecord extends API {
                 FROM users
                 WHERE name = ?
             `;
-            const [userUUIDData] = await db.query(sqlGetUserUUID, [user]);
+            const userUUIDData = await db.query(sqlGetUserUUID, [user]);
 
             if (!userUUIDData.length) {
                 return res.json({
@@ -90,7 +90,7 @@ class SupplementRecord extends API {
                 FROM kq_records
                 WHERE project_id = ? AND uuid = ?
             `;
-            const [records] = await db.query(sqlCheckRecords, [project_id, userUUID]);
+            const records = await db.query(sqlCheckRecords, [project_id, userUUID]);
 
             if (records.some(record => this.hasRecord(item, record))) {
                 return res.json({

+ 2 - 2
apis/User/UpdateInfo.js

@@ -38,7 +38,7 @@ class UpdateInfo extends API {
             const wxid = idRes.userid;
 
             let sql = 'SELECT wxid FROM users WHERE uuid = ?';
-            let [rows] = await db.query(sql, [uuid]);
+            let { rows } = await db.query(sql, [uuid]);
 
             if (rows.length !== 1 || !rows[0].wxid || !rows[0].session) 
                 return res.json({ ...BaseStdResponse.ERR, endpoint: 7894188, msg: `更新失败!` });
@@ -53,7 +53,7 @@ class UpdateInfo extends API {
             let { name: username, avatar } = infoRes;
 
             sql = 'UPDATE users SET username = ?, avatar = ? WHERE uuid = ?';
-            result = await db.query(sql, [username, avatar, uuid]);
+            result = await db.query(sql, [username, avatar != '' ? avatar : 'https://git.vthc.cn/avatars/1', uuid]);
 
             if (result && result.affectedRows > 0) {
                 return res.json({

+ 5 - 4
apis/User/WXWorkLogin.js

@@ -35,7 +35,7 @@ class WXWorkLogin extends API {
             const session = this.createSession(wxid, Math.random().toFixed(6).slice(-6));
 
             let sql = 'SELECT uuid, username, avatar FROM users WHERE wxid = ?';
-            let [rows] = await db.query(sql, [wxid]);
+            let rows = await db.query(sql, [wxid]);
 
             let result, uuid, username, avatar;
             if (rows.length > 0) {
@@ -55,7 +55,7 @@ class WXWorkLogin extends API {
                 uuid = md5(Date.now() + wxid + code);
 
                 const insertQuery = 'INSERT INTO users (uuid, username, wxid, avatar, session) VALUES (?, ?, ?, ?, ?)';
-                result = await db.query(insertQuery, [uuid, username, wxid, avatar, session]);
+                result = await db.query(insertQuery, [uuid, username, wxid, avatar != '' ? avatar : 'https://git.vthc.cn/avatars/1', session]);
             }
 
             if (result && result.affectedRows > 0) {
@@ -70,10 +70,11 @@ class WXWorkLogin extends API {
                     }
                 });
             } else {
-                return res.json({ ...BaseStdResponse.ERR, endpoint: 7894377, msg: '登录失败!' });
+                return res.json({ ...BaseStdResponse.ERR, endpoint: 7894378, msg: '登录失败!' });
             }
         } catch (error) {
-            return res.json({ ...BaseStdResponse.ERR, endpoint: 7894377, msg: '登录失败!' });
+            this.logger.error(`企业微信登录失败!${error.stack}`)
+            return res.json({ ...BaseStdResponse.ERR, endpoint: 7894379, msg: '登录失败!' });
         }
     }
 }

+ 3 - 3
lib/AccessControl.js

@@ -3,14 +3,14 @@ const db = require('../plugin/DataBase/db');
 class AccessControl {
     async checkSession(uuid, session) {
         const sql = 'SELECT uuid, session FROM users WHERE uuid = ? AND session = ?';
-        const [rows] = await db.query(sql, [uuid, session]);
+        const rows = await db.query(sql, [uuid, session]);
         return rows.length > 0;
     }
 
     async getPermission(uuid) {
         const groups = [];
         const sql = 'SELECT admin, manage FROM users WHERE uuid = ?';
-        const [rows] = await db.query(sql, [uuid]);
+        const rows = await db.query(sql, [uuid]);
 
         if (rows.length === 0) return groups;
 
@@ -26,7 +26,7 @@ class AccessControl {
 
             let queries = maintainers.map(async (maintainer) => {
                 const sql = 'SELECT uuid FROM `users_permission` WHERE name = ?';
-                const [rows] = await db.query(sql, [maintainer]);
+                const rows = await db.query(sql, [maintainer]);
 
                 if (!rows || rows.length === 0) {
                     throw new Error(`未找到已认证用户: ${maintainer}`);

+ 2 - 2
lib/UserInfoCache.js

@@ -3,14 +3,14 @@ const db = require('../plugin/DataBase/db');
 class UserInfoCache {
     async getUserByUuid(uuid) {
         const sql = 'SELECT uuid, username, avatar FROM users WHERE uuid = ?';
-        const [rows] = await db.query(sql, [uuid]);
+        const rows = await db.query(sql, [uuid]);
 
         return rows[0] ? rows[0] : null;
     }
 
     async getUuidByName(name) {
         const sql = 'SELECT uuid, username, avatar FROM users WHERE name = ?';
-        const [rows] = await db.query(sql, [name]);
+        const rows = await db.query(sql, [name]);
 
         return rows[0] ? rows[0] : null;
     }

+ 2 - 2
plugin/DataBase/MySQL.js

@@ -29,8 +29,8 @@ class MySQL {
 
     async query(sql, params = []) {
         try {
-            const [rows, fields] = await this.connection.execute(sql, params);
-            return { rows, fields };
+            const [rows] = await this.connection.execute(sql, params);
+            return rows;
         } catch (error) {
             this.logger.error('执行SQL语句时出错:', error);
             throw error;