You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4.7 KiB
4.7 KiB
离场场景配置控制开门功能实现
需求描述
用户需求:"进行离场核销时, 如果pad_config中gate_enter_open_enable为true, 不进行网络核销, 直接执行开门"
实现方案
1. 配置项位置
配置项 gate_enter_open_enable
位于:
pad_config -> extension -> pad_setting -> gate_enter_open_enable
2. 配置获取方法
使用现有的 VenueSceneUtils.getGateConfig()
方法获取配置:
VenueSceneUtils.GateConfig gateConfig = VenueSceneUtils.getGateConfig(context);
boolean gateEnterOpenEnable = gateConfig != null && gateConfig.gateEnterOpenEnable;
3. 修改的文件
主要修改文件:OXFaceOnlineActivity.java
修改方法:checkResultOnline()
4. 具体实现逻辑
在离场场景下的人脸识别成功后,增加配置检查逻辑:
// 判断是进场还是离场场景
if (VenueSceneUtils.isLeaveScene(OXFaceOnlineActivity.this)) {
// 离场场景:检查gate_enter_open_enable配置
VenueSceneUtils.GateConfig gateConfig = VenueSceneUtils.getGateConfig(OXFaceOnlineActivity.this);
if (gateConfig != null && gateConfig.gateEnterOpenEnable) {
// 如果gate_enter_open_enable为true,直接开门不进行网络核销
LogManager.logInfo(TAG, "检测到离场场景,gate_enter_open_enable为true,直接开启B门");
showLoadingStatus("离场验证成功");
// 2秒后隐藏提示并开门
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
hideLoadingStatus();
// 直接开启B门
if (isUDPInitialized && udpExample != null) {
LogManager.logInfo(TAG, "gate_enter_open_enable为true,直接开启B门");
udpExample.handleFaceRecognitionSuccess(false);
}
}
}, 2000);
} else {
// gate_enter_open_enable为false或配置不存在,按正常流程进行网络校验
if (isNetworkAvailable()) {
LogManager.logInfo(TAG, "检测到离场场景,网络可用,执行离场校验");
performLeaveVerification(base64img);
} else {
// 网络不可用处理逻辑...
}
}
}
业务流程
配置为 true 时的流程
人脸识别成功 → 获取base64图像 → 检查配置 → gate_enter_open_enable=true → 直接开启B门
配置为 false 时的流程
人脸识别成功 → 获取base64图像 → 检查配置 → gate_enter_open_enable=false → 网络校验 → 校验成功 → 开启B门
用户体验优化
-
配置为true时:
- 显示 "离场验证成功" 提示
- 2秒后自动开门
- 无需等待网络请求,提升通行速度
-
配置为false时:
- 保持原有的网络校验流程
- 确保业务安全性
配置项说明
- gate_enter_open_enable: 门禁进入开启使能
- 类型: boolean
- 默认值: false
- 作用: 控制离场时是否跳过网络验证直接开门
日志输出
配置为true时的日志
检测到离场场景,gate_enter_open_enable为true,直接开启B门
gate_enter_open_enable为true,直接开启B门
配置为false时的日志
检测到离场场景,网络可用,执行离场校验
// 后续为正常的网络校验日志
安全考虑
- 配置验证:检查配置对象是否为null,避免空指针异常
- 向后兼容:如果配置不存在或为false,保持原有的网络校验流程
- 日志记录:详细记录配置状态和执行流程,便于问题排查
测试建议
测试场景1:配置为true
- 设置
gate_enter_open_enable = true
- 进入离场场景
- 进行人脸识别
- 验证:应直接开门,不进行网络请求
测试场景2:配置为false
- 设置
gate_enter_open_enable = false
- 进入离场场景
- 进行人脸识别
- 验证:应进行网络校验,校验成功后开门
测试场景3:配置缺失
- 移除或损坏配置信息
- 进入离场场景
- 进行人脸识别
- 验证:应按原有流程进行网络校验(向后兼容)
影响范围
- 仅影响离场场景:进场场景的逻辑保持不变
- 不影响网络校验成功的回调:原有的开门逻辑保持不变
- 不影响其他验证方式:验证码、扫码等方式不受影响
总结
此次修改实现了根据配置项 gate_enter_open_enable
来控制离场时是否跳过网络验证的功能:
- 配置为
true
:离场时直接开门,提升用户通行体验 - 配置为
false
或不存在:保持原有的网络校验流程,确保业务安全
修改简洁且安全,具有良好的向后兼容性。