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<ModelAdapter> getIdentityPersonList(List<ModelAdapter> allPersonList, Map<String, ModelAdapter> checkedIdentityMap) {
|
if (Constants.useCouchbase) {
|
List<String> allPersonIDList = new ArrayList<>();
|
List<ModelAdapter> 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<ModelAdapter> 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<ModelAdapter> getCameraData() {
|
if (Constants.useCouchbase) {
|
List<ModelAdapter> cameraDataList = new ArrayList<>();
|
List<String> ipList = new ArrayList<>();// 避免设备存储的MutableDocument的id改变而有重复的ip
|
Expression expression = Expression.property("table").equalTo(Expression.string("base_setting"));
|
List<ModelAdapter> 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();
|
}
|
}
|
|
}
|