feat:增加人脸参数校验

This commit is contained in:
liyi 2025-03-08 10:18:05 +08:00
parent 740f90b756
commit 5ff97e0629

View File

@ -3,7 +3,7 @@ import {cmdIds, Result, subCmdIds} from '../constant'
import {convertWeekdaysToNumber, createPackageEnd, md5Encrypt, parseTimeToList, timestampToArray} from "../format.js";
import {sm4} from "sm-crypto";
import {
checkRepeatCardName, checkRepeatFingerprintName,
checkRepeatCardName, checkRepeatFaceName, checkRepeatFingerprintName,
clearAllIcCard,
deleteIcCardRequest, getFingerprintListRequest,
getIcCardListRequest,
@ -31,7 +31,7 @@ function _checkRequiredFields(params, requiredFields) {
* 注册扩展产品(卡片指纹等)
*
* @param {Object} params - 所需参数
* @param {string} params.type - 产品类型['card','fingerprint']
* @param {string} params.type - 产品类型['card','fingerprint','face']
* @param {string} params.keyId - 钥匙 ID
* @param {string} params.uid - 用户 ID
* @param {number} params.userCountLimit - 使用次数限制整型0xFFFF 表示不限次数
@ -40,8 +40,8 @@ function _checkRequiredFields(params, requiredFields) {
* @param {number} params.isForce - 是否胁迫整型1 表示是0 表示否
* @param {number} params.isRound - 是否循环整型1 表示是0 表示否
* @param {array} params.weekDays - 循环周期数组Bit0 -- 6 置位分别代表周日 -- 周六例如循环星期一星期二星期四,对应为[124]
* @param {number} params.startDate - 生效日期时间戳
* @param {number} params.endDate - 失效日期时间戳
* @param {number} params.startDate - 生效日期时间戳永久则填0
* @param {number} params.endDate - 失效日期时间戳永久则填0
* @param {string} params.startTime - 生效时间字符串例如'00:00'
* @param {string} params.endTime - 失效时间字符串例如'00:00'
* @param {number} params.cardId - 卡片Id仅当 type 'card' 且operate=1 时需要
@ -53,13 +53,17 @@ function _checkRequiredFields(params, requiredFields) {
* @param {string} params.fingerprintNumber - 指纹序号仅当 type 'fingerprint' 时需要
* @param {number} params.fingerprintType - 指纹类型1:永久2期限3单次4:循环仅当 type 'fingerprint' 时需要
* @param {number} params.fingerprintUserNo - 指纹UserNo仅当 type 'fingerprint' 时需要 选填
* @param {number} params.faceName - 人脸名仅当 type 'face' 时需要
* @param {string} params.faceNumber - 指纹序号仅当 type 'face' 时需要
* @param {number} params.faceType - 指纹类型1:永久2期限4:循环仅当 type 'face' 时需要
* @param {number} params.faceUserNo - 指纹UserNo仅当 type 'face' 时需要 选填
* @returns {Promise<Result>} - 返回注册结果的 Promise 对象
*/
export async function registerExtendedProducts(params) {
// 确认产品类型存在
if (!params.type) {
return new Result(Result.NotMoreData, null, '注册扩展产品类型不能为空');
return new Result(Result.NotMoreData, null, '注册扩展产品类型type不能为空');
}
// 如果是卡片的话需要增加的参数
@ -106,12 +110,12 @@ export async function registerExtendedProducts(params) {
return new Result(Result.NotMoreData, null, `指纹信息不完整: ${missingField}`);
}
// 检查卡昵称是否重复
const checkRepeatCardNameResult = await checkRepeatFingerprintName({
const checkRepeatFingerprintNameResult = await checkRepeatFingerprintName({
lockId: this.lockInfo.lockId,
fingerprintName: params.fingerprintName
})
if (checkRepeatCardNameResult.code !== Result.Success.code) {
return checkRepeatCardNameResult
if (checkRepeatFingerprintNameResult.code !== Result.Success.code) {
return checkRepeatFingerprintNameResult
}
}
@ -131,6 +135,40 @@ export async function registerExtendedProducts(params) {
}
}
// 如果是人脸的话需要增加的参数
if (params.type === 'face') {
if (params.operate === 0) {
const cardRequiredFields = ['faceName', 'faceNumber', 'faceType'];
const missingField = _checkRequiredFields(params, cardRequiredFields);
if (missingField) {
return new Result(Result.NotMoreData, null, `人脸信息不完整: ${missingField}`);
}
// 检查卡昵称是否重复
const checkRepeatFaceNameResult = await checkRepeatFaceName({
lockId: this.lockInfo.lockId,
faceName: params.faceName
})
if (checkRepeatFaceNameResult.code !== Result.Success.code) {
return checkRepeatFaceNameResult
}
}
// 修改指纹时的参数校验
if (params.operate === 1 || params.operate === 2) {
let cardRequiredFields = ['faceId'];
if (params.operate === 1) {
cardRequiredFields.push('faceType')
}
if (params.operate === 2) {
cardRequiredFields.push('faceNumber')
}
const missingField = _checkRequiredFields(params, cardRequiredFields);
if (missingField) {
return new Result(Result.NotMoreData, null, `人脸信息不完整: ${missingField}`);
}
}
}
// 添加类型1蓝牙2远程3发卡器
params.addType = 1;
// 操作后不断开蓝牙