From cd40c6f6f3a6138cb70b2e2d017cc7f34a887ef8 Mon Sep 17 00:00:00 2001
From: lgq <1015864684@qq.com>
Date: 星期五, 17 四月 2026 13:59:49 +0800
Subject: [PATCH] 1.更新vf107代码,更新自动上报通行记录接口、人员查询接口、人员添加接口

---
 vf107/src/worker/passRecordWorker.js |   78 ++++++++++++++++++++++++++++++++-------
 1 files changed, 64 insertions(+), 14 deletions(-)

diff --git a/vf107/src/worker/passRecordWorker.js b/vf107/src/worker/passRecordWorker.js
index 5c7f693..df0ecd3 100644
--- a/vf107/src/worker/passRecordWorker.js
+++ b/vf107/src/worker/passRecordWorker.js
@@ -12,7 +12,7 @@
  *
  * 鑱岃矗锛�
  * - 甯搁┗杩愯锛屽彧瑕� MQTT 杩炴帴灏辨寔缁笂鎶�
- * - 姣忔鍔犺浇鎵�鏈夋湭鍒犻櫎鐨勯�氳璁板綍锛坉1_pass_record锛�
+ * - 姣忔鍔犺浇鎵�鏈夋湭涓婃姤鐨勯�氳璁板綍锛坉1_pass_record锛�
  * - 姣忛殧 5 绉掍笂鎶ヤ竴鏉�
  * - 鍙戝畬褰撳墠鎵规鍚庯紝鑷姩閲嶆柊鍔犺浇鏈�鏂拌褰�
  */
@@ -29,10 +29,12 @@
     return mqtt_map.get("MQTT_STATUS") === "connected"
 }
 
-// 鍔犺浇鏂版壒娆★細鏌ヨ鎵�鏈夋湭鍒犻櫎鐨勮褰曪紙鎸夋椂闂村崌搴忥級
+// 鍔犺浇鏂版壒娆★細鏌ヨ鎵�鏈夋湭鍒犻櫎涓旀湭涓婃姤鐨勮褰曪紙鎸夋椂闂村崌搴忥級
 function loadNewBatch() {
     try {
-        currentBatch = sqliteService.d1_pass_record.findAllOrderByTimeStampAsc() 
+        let sql = `SELECT * FROM d1_pass_record WHERE reported = 0 OR reported IS NULL ORDER BY timeStamp ASC`
+        let result = sqliteService.select(sql)
+        currentBatch = result || []
         currentIndex = 0
     } catch (err) {
         logger.error("[passRecordWorker] Failed to load batch:", err)
@@ -59,29 +61,70 @@
         return
     }
     let extra = record.extra ? JSON.parse(record.extra) : ""
+    let extra2 = record.extra2 ? JSON.parse(record.extra2) : ""
     let accessRecord = {
-        userId: record.userId,
-        type: record.type,
-        result: record.result,
-        name: extra && extra.name ? extra.name : "",
-        timeStamp: record.timeStamp,
-        extra: {},
-        error: record.message
+        timeStamp: mqttService.timestampToDateString(record.timeStamp || 0),
+        result: record.result || 0,
+        error: record.message || "",
+        // permissionId: record.permissionId || "", // TODO
+        door: config.get("houseName") || "",
+        users: [
+            {
+                userId: record.userId || "",
+                name: extra && extra.name ? extra.name : "",
+                userType: extra && extra.type ? extra.type : 0,
+                accessType: extra && extra.accessType !== undefined ? extra.accessType : "",
+                card: extra && extra.card ? extra.card : "",
+                face: extra && extra.face ? extra.face : "",
+                finge: extra && extra.finge ? extra.finge : ""
+            }
+        ]
     }
+    
+    // 濡傛灉鏄弻浜鸿璇侊紝娣诲姞绗簩涓敤鎴蜂俊鎭�
+    if (record.userId2) {
+        let secondUser = {
+            userId: record.userId2 || "",
+            name: extra2 && extra2.name ? extra2.name : "",
+            userType: extra2 && extra2.type ? extra2.type : 0,
+            accessType: extra2 && extra2.accessType !== undefined ? extra2.accessType : "",
+            card: extra2 && extra2.card ? extra2.card : "",
+            face: extra2 && extra2.face ? extra2.face : "",
+            finge: extra2 && extra2.finge ? extra2.finge : ""
+        }
+        // 鏍规嵁璁よ瘉绫诲瀷娣诲姞鐩稿簲鐨勮璇佷俊鎭�
+        if (extra2 && extra2.accessType == 200 && extra2.card) {
+            secondUser.card = extra2.card
+        } else if (extra2 && extra2.accessType == 300) {
+            // 浜鸿劯璁よ瘉锛宖ace瀛楁鍙互鐣欑┖鎴栨坊鍔犵浉搴斾俊鎭�
+        } else if (extra2 && extra2.accessType == 500) {
+            // 鎸囩汗璁よ瘉锛宖inge瀛楁鍙互鐣欑┖鎴栨坊鍔犵浉搴斾俊鎭�
+        }
+        accessRecord.users.push(secondUser)
+    }
+    
     if (record.type == 300) {
-        if (std.exist(record.code) && config.get("access.uploadToCloud")) {
-            accessRecord.code = dxCommonUtils.fs.fileToBase64(record.code)
+        if (std.exist(record.code)) {
+            // 浜鸿劯璁よ瘉锛屽皢鍥剧墖杞崲涓篵ase64濉厖鍒癴ace瀛楁
+            accessRecord.users[0].face = dxCommonUtils.fs.fileToBase64(record.code)
             if (currentIndex > 0) {
                 currentBatch[currentIndex - 1].code = ""
             }
         } else {
-            accessRecord.code = ""
+            accessRecord.users[0].face = ""
+        }
+        
+        // 濡傛灉鏈夌浜屼釜鐢ㄦ埛鐨勪簩缁寸爜
+        if (record.code2) {
+            accessRecord.users[1] = accessRecord.users[1] || {}
+            accessRecord.users[1].code = record.code2
         }
     }
     // 鍙戦��
     try {
+        const sn = config.get("sys.sn") || "default"
         driver.mqtt.send(
-            "access_device/v2/event/access",
+            `access_device/v2/event/${sn}/access`,
             JSON.stringify(
                 mqttService.mqttReply(
                     record.id,
@@ -90,6 +133,13 @@
                 )
             )
         )
+        // 鏍囪璁板綍涓哄凡涓婃姤
+        try {
+            let updateSql = `UPDATE d1_pass_record SET reported = 1 WHERE id = '${record.id}'`
+            sqliteService.exec(updateSql)
+        } catch (updateErr) {
+            logger.error("[passRecordWorker] Failed to update reported status for record", record.id, updateErr)
+        }
     } catch (e) {
         logger.error("[passRecordWorker] Send failed for record", record.id, e)
     }

--
Gitblit v1.9.3