feat:增加卡片蓝牙回调后的增删改查内容

This commit is contained in:
liyi 2025-03-07 11:13:13 +08:00
parent b5605e8025
commit de6b6e127c

123
common.js
View File

@ -16,20 +16,27 @@ import {
writeBLECharacteristicValue
} from './uni/basic'
import {
addCustomPasswordRequest,
changeAdminKeyboardPwdRequest,
addCustomPasswordRequest, addFingerprintRequest, addIcCardRequest,
changeAdminKeyboardPwdRequest, clearAllIcCard, deleteIcCardRequest,
deleteLockRequest,
deletePasswordRequest,
getLastRecordTimeRequest,
getLockNetTokenRequest,
getStarCloudToken,
getUserNoListRequest,
updateElectricQuantityRequest,
updateElectricQuantityRequest, updateIcCardRequest,
updateLockUserNoRequest,
updatePasswordRequest,
uploadRecordRequest
} from './api'
import { buildNumber, getStorage, setStorage, version } from './export'
import {
buildNumber,
emitRegisterCardConfirmEvent,
emitRegisterFingerprintConfirmEvent, emitRegisterFingerprintProcessEvent,
getStorage,
setStorage,
version
} from './export'
import log from './log'
/**
@ -679,6 +686,7 @@ export function updateLockInfo(lockInfo) {
export function listenCharacteristicValue(res) {
if (res.deviceId === this.lockInfo.deviceId) {
let binaryData = new Uint8Array(res.value)
if (
binaryData[0] === 0xef &&
binaryData[1] === 0x01 &&
@ -689,7 +697,9 @@ export function listenCharacteristicValue(res) {
if (this.length + 14 > binaryData.length) {
this.completeArray = binaryData
} else {
this.parsingCharacteristicValue(binaryData).then(() => {})
this.parsingCharacteristicValue(binaryData).then(() => {
})
console.log('listenCharacteristicValue binaryData', binaryData)
}
} else if (this.completeArray) {
const combinedArray = new Uint8Array(this.completeArray.length + binaryData.length)
@ -697,7 +707,8 @@ export function listenCharacteristicValue(res) {
combinedArray.set(binaryData, this.completeArray.length)
this.completeArray = combinedArray
if (this.length + 14 === this.completeArray.length) {
this.parsingCharacteristicValue(this.completeArray).then(() => {})
this.parsingCharacteristicValue(this.completeArray).then(() => {
})
this.completeArray = null
}
}
@ -750,7 +761,6 @@ export async function parsingCharacteristicValue(binaryData) {
}
} else {
const cebBinaryData = binaryData.slice(12, binaryData.length - 2)
const decrypted = sm4.decrypt(cebBinaryData, this.lockInfo.bluetooth.privateKey, {
mode: 'ecb',
output: 'array'
@ -923,6 +933,101 @@ export async function parsingCharacteristicValue(binaryData) {
this.characteristicValueCallback(new Result(decrypted[2]))
}
break
case subCmdIds.registerCard:
if (decrypted[2] === Result.Success.code) {
// 锁版应答成功
switch (this.requestParams.operate) {
case 1:
// 修改
const updateResult = await updateIcCardRequest({
...this.requestParams,
cardId: this.requestParams.cardId,
cardRight: this.requestParams.isAdmin,
lockId: this.lockInfo.lockId,
cardNumber: this.requestParams.cardNo,
cardType: this.requestParams.cardType,
cardUserNo: this.requestParams.cardUserNo
})
this.characteristicValueCallback(updateResult)
await this.disconnectDevice()
break;
case 2:
// 删除
const deleteResult = await deleteIcCardRequest({
cardId: this.requestParams.cardId,
lockId: this.lockInfo.lockId,
})
this.characteristicValueCallback(deleteResult)
await this.disconnectDevice()
break;
case 3:
// 删除全部
const deleteAllResult = await clearAllIcCard({
lockId: this.lockInfo.lockId,
})
this.characteristicValueCallback(deleteAllResult)
await this.disconnectDevice()
break;
default:
this.characteristicValueCallback(new Result(decrypted[2]))
break;
}
}
break;
case subCmdIds.registerCardConfirm:
// 收到锁版回复判断操作类型进行对应api操作
if (decrypted[2] === Result.Success.code) {
switch (this.requestParams.operate) {
case 0:
// 注册
const addResult = await addIcCardRequest({
...this.requestParams,
isCoerced: this.requestParams.isForce,
cardRight: this.requestParams.isAdmin,
lockId: this.lockInfo.lockId,
cardNumber: this.requestParams.cardNo,
cardUserNo: this.requestParams.cardUserNo
})
if (addResult.code === Result.Success.code) {
// 增加返回一个卡序号
addResult.data.cardNo = decrypted[6] * 256 + decrypted[7];
}
// 触发卡片确认事件
emitRegisterCardConfirmEvent(addResult)
// 断开蓝牙连接
await this.disconnectDevice()
break;
}
}
break;
case subCmdIds.registerFingerprint:
console.log('注册指纹开始回调')
// 返回锁版应答的Status状态
this.characteristicValueCallback(new Result(decrypted[2]))
break;
case subCmdIds.registerFingerprintProcess:
console.log('注册指纹过程回调', decrypted)
emitRegisterFingerprintProcessEvent(decrypted)
break;
case subCmdIds.registerFingerprintConfirm:
if (this.requestParams.operate === 0) {
const addResult = await addFingerprintRequest({
...this.requestParams,
isCoerced: this.requestParams.isForce,
fingerRight: this.requestParams.isAdmin,
lockId: this.lockInfo.lockId,
fingerprintNumber: this.requestParams.no || this.requestParams.fingerprintNumber,
fingerprintUserNo: this.requestParams.fingerprintUserNo
})
if (addResult.code === Result.Success.code) {
console.log('注册指纹确认回调')
// 触发指纹确认事件
emitRegisterFingerprintConfirmEvent(addResult)
// 断开蓝牙连接
await this.disconnectDevice()
}
}
break;
default:
break
}
@ -938,7 +1043,8 @@ export async function parsingCharacteristicValue(binaryData) {
lockId: this.lockInfo.lockId,
electricQuantity: decrypted[7],
electricQuantityStandby: decrypted[9]
}).then(() => {})
}).then(() => {
})
}
this.characteristicValueCallback(new Result(decrypted[6], {lock: this.lockInfo}))
break
@ -1040,6 +1146,7 @@ export function createPackageHeader(encryptionType, originalLength) {
return headArray
}
// 断开与设备的连接
export async function disconnectDevice() {
return await closeBLEConnection(this.lockInfo.deviceId)