feat:增加遥控相关功能
This commit is contained in:
parent
7f498b6b62
commit
9893c648aa
105
api.js
105
api.js
@ -633,4 +633,109 @@ export function getPalmVeinListRequest(data) {
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 遥控-添加(永久/限时/循环)
|
||||
*
|
||||
* @param data.lockId 锁id
|
||||
* @param data.remoteType 遥控类型
|
||||
* @param data.addType 新增类型,1蓝牙,2远程,3发卡器
|
||||
* @param data.remoteName 遥控昵称
|
||||
* @param data.remoteNumber 遥控序号
|
||||
* @param data.startDate 开始时间
|
||||
* @param data.endDate 结束时间
|
||||
* @param data.weekDay 循环周期
|
||||
* @param data.isCoerced 是否胁迫卡
|
||||
* @param data.remoteRight 是否授权管理员
|
||||
* @param data.remoteUserNo 遥控UserNo
|
||||
* @returns {Promise<unknown>}
|
||||
*/
|
||||
export function addRemoteRequest(data) {
|
||||
return request({
|
||||
url: '/v1/remote/add',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 遥控-更新
|
||||
*
|
||||
* @param data.lockId 锁id
|
||||
* @param data.remoteId 遥控id(必填)
|
||||
* @param data.remoteType 遥控类型(必填)
|
||||
* @param data.remoteName 遥控昵称
|
||||
* @param data.startDate 开始时间
|
||||
* @param data.endDate 结束时间
|
||||
* @param data.weekDay 循环周期
|
||||
* @param data.palmVeinRight 是否授权管理员
|
||||
* @param data.isCoerced 胁迫遥控,1-胁迫人脸,2-非胁迫人脸
|
||||
* @returns {Promise<unknown>}
|
||||
*/
|
||||
export function updateRemoteRequest(data) {
|
||||
return request({
|
||||
url: '/v1/remote/update',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 遥控-删除
|
||||
* @param data.lockId 锁id
|
||||
* @param data.remoteId 遥控id
|
||||
* @returns {Promise<unknown>}
|
||||
*/
|
||||
export function deleteRemoteRequest(data) {
|
||||
return request({
|
||||
url: '/v1/remote/delete',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除所有遥控
|
||||
* @param data.lockId 锁id
|
||||
* @returns {Promise<unknown>}
|
||||
*/
|
||||
export function clearAllRemote(data) {
|
||||
return request({
|
||||
url: '/v1/remote/clear',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查遥控姓名是否重复
|
||||
* @param data.lockId 锁id
|
||||
* @param data.remoteName 卡姓名
|
||||
* @returns {Promise<unknown>}
|
||||
*/
|
||||
export function checkRepeatRemoteName(data) {
|
||||
return request({
|
||||
url: '/v1/remote/checkRemoteName',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取遥控列表
|
||||
* @param data.lockId 锁id
|
||||
* @param data.pageNo 页码(选填)
|
||||
* @param data.pageSize 每页显示数(选填)
|
||||
* @returns {Promise<unknown>}
|
||||
*/
|
||||
export function getRemoteListRequest(data) {
|
||||
return request({
|
||||
url: '/v1/remote/list',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
78
common.js
78
common.js
@ -18,7 +18,7 @@ import {
|
||||
import {
|
||||
addCustomPasswordRequest, addFaceRequest,
|
||||
addFingerprintRequest,
|
||||
addIcCardRequest, addPalmVeinRequest,
|
||||
addIcCardRequest, addPalmVeinRequest, addRemoteRequest,
|
||||
changeAdminKeyboardPwdRequest, clearAllFace,
|
||||
clearAllFingerprint,
|
||||
clearAllIcCard, clearAllPalmVein,
|
||||
@ -36,13 +36,18 @@ import {
|
||||
updateFingerprintRequest,
|
||||
updateIcCardRequest,
|
||||
updateLockUserNoRequest, updatePalmVeinRequest,
|
||||
updatePasswordRequest,
|
||||
updatePasswordRequest, updateRemoteRequest,
|
||||
uploadRecordRequest
|
||||
} from './api'
|
||||
import {
|
||||
buildNumber,
|
||||
emitRegisterCardConfirmEvent, emitRegisterFaceConfirmEvent, emitRegisterFaceProcessEvent,
|
||||
emitRegisterFingerprintConfirmEvent, emitRegisterFingerprintProcessEvent, emitRegisterPalmVeinConfirmEvent,
|
||||
emitRegisterCardConfirmEvent,
|
||||
emitRegisterFaceConfirmEvent,
|
||||
emitRegisterFaceProcessEvent,
|
||||
emitRegisterFingerprintConfirmEvent,
|
||||
emitRegisterFingerprintProcessEvent,
|
||||
emitRegisterPalmVeinConfirmEvent,
|
||||
emitRegisterRemoteConfirmEvent,
|
||||
getStorage,
|
||||
setStorage,
|
||||
version
|
||||
@ -1219,6 +1224,71 @@ export async function parsingCharacteristicValue(binaryData) {
|
||||
}
|
||||
}
|
||||
break;
|
||||
case subCmdIds.registerRemote:
|
||||
if (decrypted[2] === Result.Success.code) {
|
||||
// 锁版应答成功
|
||||
switch (this.requestParams.operate) {
|
||||
case 1:
|
||||
// 修改
|
||||
const updateResult = await updateRemoteRequest({
|
||||
...this.requestParams,
|
||||
remoteId: this.requestParams.remoteId,
|
||||
remoteRight: this.requestParams.isAdmin,
|
||||
lockId: this.lockInfo.lockId,
|
||||
remoteType: this.requestParams.remoteType,
|
||||
})
|
||||
this.characteristicValueCallback(updateResult)
|
||||
await this.disconnectDevice()
|
||||
break;
|
||||
case 2:
|
||||
// 删除
|
||||
const deleteResult = await deletePalmVeinRequest({
|
||||
remoteId: this.requestParams.remoteId,
|
||||
lockId: this.lockInfo.lockId,
|
||||
})
|
||||
this.characteristicValueCallback(deleteResult)
|
||||
await this.disconnectDevice()
|
||||
break;
|
||||
case 3:
|
||||
// 删除全部
|
||||
const deleteAllResult = await clearAllPalmVein({
|
||||
lockId: this.lockInfo.lockId,
|
||||
})
|
||||
this.characteristicValueCallback(deleteAllResult)
|
||||
await this.disconnectDevice()
|
||||
break;
|
||||
default:
|
||||
this.characteristicValueCallback(new Result(decrypted[2]))
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case subCmdIds.registerRemoteConfirm:
|
||||
// 收到锁版回复判断操作类型进行对应api操作
|
||||
if (decrypted[2] === Result.Success.code) {
|
||||
switch (this.requestParams.operate) {
|
||||
case 0:
|
||||
// 注册
|
||||
const addResult = await addRemoteRequest({
|
||||
...this.requestParams,
|
||||
isCoerced: this.requestParams.isForce,
|
||||
remoteRight: this.requestParams.isAdmin,
|
||||
lockId: this.lockInfo.lockId,
|
||||
remoteNumber: this.requestParams.remoteNumber,
|
||||
remoteUserNo: this.requestParams.remoteUserNo
|
||||
})
|
||||
if (addResult.code === Result.Success.code) {
|
||||
// 增加返回一个卡序号
|
||||
addResult.data.remoteNumber = decrypted[6] * 256 + decrypted[7];
|
||||
}
|
||||
// 触发卡片确认事件
|
||||
emitRegisterRemoteConfirmEvent(addResult)
|
||||
// 断开蓝牙连接
|
||||
await this.disconnectDevice()
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break
|
||||
}
|
||||
|
||||
@ -78,6 +78,8 @@ export const eventKeys = {
|
||||
registerFaceConfirm: 'registerFaceConfirm',
|
||||
// 注册掌纹确认
|
||||
registerPalmVeinConfirm: 'registerPalmVeinConfirm',
|
||||
// 注册遥控确认
|
||||
registerRemoteConfirm: 'registerRemoteConfirm',
|
||||
}
|
||||
|
||||
|
||||
|
||||
32
export.js
32
export.js
@ -1,13 +1,23 @@
|
||||
import {
|
||||
emitRegisterCardConfirmEventUni, emitRegisterFaceConfirmEventUni, emitRegisterFaceProcessEventUni,
|
||||
emitRegisterFingerprintConfirmEventUni, emitRegisterFingerprintProcessEventUni, emitRegisterPalmVeinConfirmEventUni,
|
||||
emitRegisterCardConfirmEventUni,
|
||||
emitRegisterFaceConfirmEventUni,
|
||||
emitRegisterFaceProcessEventUni,
|
||||
emitRegisterFingerprintConfirmEventUni,
|
||||
emitRegisterFingerprintProcessEventUni,
|
||||
emitRegisterPalmVeinConfirmEventUni,
|
||||
emitRegisterRemoteConfirmEventUni,
|
||||
getStorageUni,
|
||||
removeStorageUni,
|
||||
setStorageUni
|
||||
} from './uni/storage'
|
||||
import {
|
||||
emitRegisterCardConfirmEventWeb, emitRegisterFaceConfirmEventWeb, emitRegisterFaceProcessEventWeb,
|
||||
emitRegisterFingerprintConfirmEventWeb, emitRegisterFingerprintProcessEventWeb, emitRegisterPalmVeinConfirmEventWeb,
|
||||
emitRegisterCardConfirmEventWeb,
|
||||
emitRegisterFaceConfirmEventWeb,
|
||||
emitRegisterFaceProcessEventWeb,
|
||||
emitRegisterFingerprintConfirmEventWeb,
|
||||
emitRegisterFingerprintProcessEventWeb,
|
||||
emitRegisterPalmVeinConfirmEventWeb,
|
||||
emitRegisterRemoteConfirmEventWeb,
|
||||
getStorageWeb,
|
||||
removeStorageWeb,
|
||||
setStorageWeb
|
||||
@ -154,4 +164,18 @@ export const emitRegisterPalmVeinConfirmEvent = resultData => {
|
||||
if (starCloudInstance.platform === 2) {
|
||||
return emitRegisterPalmVeinConfirmEventWeb(resultData)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 触发遥控确认事件
|
||||
* @param resultData 事件响应数据
|
||||
* @returns {*}
|
||||
*/
|
||||
export const emitRegisterRemoteConfirmEvent = resultData => {
|
||||
if (starCloudInstance.platform === 1) {
|
||||
return emitRegisterRemoteConfirmEventUni(resultData)
|
||||
}
|
||||
if (starCloudInstance.platform === 2) {
|
||||
return emitRegisterRemoteConfirmEventWeb(resultData)
|
||||
}
|
||||
}
|
||||
@ -3,9 +3,14 @@ import {cmdIds, Result, subCmdIds} from '../constant'
|
||||
import {convertWeekdaysToNumber, createPackageEnd, md5Encrypt, parseTimeToList, timestampToArray} from "../format.js";
|
||||
import {sm4} from "sm-crypto";
|
||||
import {
|
||||
checkRepeatCardName, checkRepeatFaceName, checkRepeatFingerprintName, checkRepeatPalmVeinName,
|
||||
checkRepeatCardName,
|
||||
checkRepeatFaceName,
|
||||
checkRepeatFingerprintName,
|
||||
checkRepeatPalmVeinName,
|
||||
checkRepeatRemoteName,
|
||||
clearAllIcCard,
|
||||
deleteIcCardRequest, getFingerprintListRequest,
|
||||
deleteIcCardRequest,
|
||||
getFingerprintListRequest,
|
||||
getIcCardListRequest,
|
||||
updateIcCardRequest
|
||||
} from "../api.js";
|
||||
@ -57,10 +62,14 @@ function _checkRequiredFields(params, requiredFields) {
|
||||
* @param {string} params.faceNumber - 指纹序号,仅当 type 为 'face' 时需要
|
||||
* @param {number} params.faceType - 指纹类型,1:永久,2:期限,4:循环,仅当 type 为 'face' 时需要
|
||||
* @param {number} params.faceUserNo - 指纹UserNo,仅当 type 为 'face' 时需要 (选填)
|
||||
* @param {number} params.palmVeinName - 人脸名,仅当 type 为 'palmVein' 时需要
|
||||
* @param {string} params.palmVeinNumber - 指纹序号,仅当 type 为 'palmVein' 时需要
|
||||
* @param {number} params.palmVeinType - 指纹类型,1:永久,2:期限,4:循环,仅当 type 为 'palmVein' 时需要
|
||||
* @param {number} params.palmVeinUserNo - 指纹UserNo,仅当 type 为 'palmVein' 时需要 (选填)
|
||||
* @param {number} params.palmVeinName - 掌静脉名,仅当 type 为 'palmVein' 时需要
|
||||
* @param {string} params.palmVeinNumber - 掌静脉序号,仅当 type 为 'palmVein' 时需要
|
||||
* @param {number} params.palmVeinType - 掌静脉类型,1:永久,2:期限,4:循环,仅当 type 为 'palmVein' 时需要
|
||||
* @param {number} params.palmVeinUserNo - 掌静脉UserNo,仅当 type 为 'palmVein' 时需要 (选填)
|
||||
* @param {number} params.remoteName - 遥控名,仅当 type 为 'remote' 时需要
|
||||
* @param {string} params.remoteNumber - 遥控序号,仅当 type 为 'remote' 时需要
|
||||
* @param {number} params.remoteType - 遥控类型,1:永久,2:期限,4:循环,仅当 type 为 'remote' 时需要
|
||||
* @param {number} params.remoteUserNo - 遥控UserNo,仅当 type 为 'remote' 时需要 (选填)
|
||||
* @returns {Promise<Result>} - 返回注册结果的 Promise 对象
|
||||
*/
|
||||
export async function registerExtendedProducts(params) {
|
||||
@ -207,6 +216,40 @@ export async function registerExtendedProducts(params) {
|
||||
}
|
||||
}
|
||||
|
||||
// 如果是遥控的话需要增加的参数
|
||||
if (params.type === 'remote') {
|
||||
if (params.operate === 0) {
|
||||
const cardRequiredFields = ['remoteName', 'remoteNumber', 'remoteType'];
|
||||
const missingField = _checkRequiredFields(params, cardRequiredFields);
|
||||
if (missingField) {
|
||||
return new Result(Result.NotMoreData, null, `遥控信息不完整: ${missingField}`);
|
||||
}
|
||||
// 检查卡昵称是否重复
|
||||
const checkRepeatFaceNameResult = await checkRepeatRemoteName({
|
||||
lockId: this.lockInfo.lockId,
|
||||
remoteName: params.remoteName
|
||||
})
|
||||
if (checkRepeatFaceNameResult.code !== Result.Success.code) {
|
||||
return checkRepeatFaceNameResult
|
||||
}
|
||||
}
|
||||
|
||||
// 修改指纹时的参数校验
|
||||
if (params.operate === 1 || params.operate === 2) {
|
||||
let cardRequiredFields = ['remoteId'];
|
||||
if (params.operate === 1) {
|
||||
cardRequiredFields.push('remoteType')
|
||||
}
|
||||
if (params.operate === 2) {
|
||||
cardRequiredFields.push('remoteNumber')
|
||||
}
|
||||
const missingField = _checkRequiredFields(params, cardRequiredFields);
|
||||
if (missingField) {
|
||||
return new Result(Result.NotMoreData, null, `遥控信息不完整: ${missingField}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 添加类型:1蓝牙,2远程,3发卡器
|
||||
params.addType = 1;
|
||||
// 操作后不断开蓝牙
|
||||
|
||||
@ -69,4 +69,13 @@ export function emitRegisterFaceConfirmEventUni(resultData) {
|
||||
*/
|
||||
export function emitRegisterPalmVeinConfirmEventUni(resultData) {
|
||||
uni.$emit(eventKeys.registerPalmVeinConfirm, resultData)
|
||||
}
|
||||
|
||||
/**
|
||||
* 触发遥控认事件
|
||||
* @param resultData 事件响应数据
|
||||
* @returns {*}
|
||||
*/
|
||||
export function emitRegisterRemoteConfirmEventUni(resultData) {
|
||||
uni.$emit(eventKeys.registerRemoteConfirm, resultData)
|
||||
}
|
||||
@ -70,4 +70,13 @@ export function emitRegisterFaceConfirmEventWeb(resultData) {
|
||||
*/
|
||||
export function emitRegisterPalmVeinConfirmEventWeb(resultData) {
|
||||
// TODO 待实现web端触发事件
|
||||
}
|
||||
|
||||
/**
|
||||
* 触发遥控认事件
|
||||
* @param resultData 事件响应数据
|
||||
* @returns {*}
|
||||
*/
|
||||
export function emitRegisterRemoteConfirmEventWeb(resultData) {
|
||||
// TODO 待实现web端触发事件
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user