package com.basic.security.manager.impl.cblite; import android.text.TextUtils; import com.basic.security.manager.impl.sqlite.SlVisitorModelManager; import com.basic.security.model.ModelAdapter; import com.basic.security.utils.Constants; import com.basic.security.utils.FaceId; import com.couchbase.lite.Expression; import java.util.ArrayList; import java.util.List; import java.util.Map; public class VisitorModelManager extends BaseManager { // 查看人员数据库中是否有此人 public static ModelAdapter getTemPersonInPersonDb(ModelAdapter temPerson) { if (Constants.useCouchbase) { String compareResultStr = FaceId.instance.compareFeatureInDb(temPerson.getBlob("camera_image_feature"), 70); String personId = compareResultStr.split(",", -1)[0]; if (!TextUtils.isEmpty(personId) && findById(personId) != null) { return findById(personId); } return temPerson; } else { return SlVisitorModelManager.getTemPersonInPersonDb(temPerson); } } // 获取含有特定身份的所有人员 public static List getIdentityPersonList(List allPersonList, Map checkedIdentityMap) { if (Constants.useCouchbase) { List allPersonIDList = new ArrayList<>(); List personList = new ArrayList<>(); // 获取符合身份的所有人员信息 for (String ruleId : checkedIdentityMap.keySet()) { Expression expression = Expression.property("table").equalTo(Expression.string("person_identity")) .and(Expression.property("identity_id").equalTo(Expression.string(ruleId))); List list = findList(expression); for (ModelAdapter person : list) { allPersonIDList.add(person.getString("person_id")); } } // 获取临时库中在人员库中的人 for (ModelAdapter person : allPersonList) { String compareResultStr = FaceId.instance.compareFeatureInDb(person.getBlob("camera_image_feature"), 70); String personId = compareResultStr.split(",", -1)[0]; if (!TextUtils.isEmpty(personId) && findById(personId) != null) { if (allPersonIDList.contains(personId)) { personList.add(person); } } } return personList; } else { return SlVisitorModelManager.getIdentityPersonList(allPersonList, checkedIdentityMap); } } public static List getCameraData() { if (Constants.useCouchbase) { List cameraDataList = new ArrayList<>(); List ipList = new ArrayList<>();// 避免设备存储的MutableDocument的id改变而有重复的ip Expression expression = Expression.property("table").equalTo(Expression.string("base_setting")); List baseSettingList = findList(expression); for (ModelAdapter baseSetting : baseSettingList) { if (!TextUtils.isEmpty(DeviceManager.getDeviceId()) && !TextUtils.isEmpty(DeviceManager.getDeviceIp()) && DeviceManager.getDeviceId().equals(baseSetting.getString("device_name_ip")) && DeviceManager.getDeviceIp().equals(baseSetting.getString("server_name_ip"))) { Expression e = Expression.property("table").equalTo(Expression.string("device")) .and(Expression.property("device_id").equalTo(Expression.string(baseSetting.getString("device_id")))); if (!ipList.contains(findOne(e).getString("ip"))) { ipList.add(findOne(e).getString("ip")); cameraDataList.add(findOne(e)); } } } return cameraDataList; } else { return SlVisitorModelManager.getCameraData(); } } }