package com.basic.security.manager.impl.sqlite;
|
|
import android.os.SystemClock;
|
import android.text.TextUtils;
|
|
import com.couchbase.lite.Expression;
|
import com.basic.security.model.ModelAdapter;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/*人员身份表*/
|
public class SlPersonIdentityManager extends SlBaseManager {
|
|
public static long findPersonIdentityListByPersonIdLastTime = 0;
|
public static List<ModelAdapter> findPersonIdentityListByPersonIdLastList = new ArrayList<>();
|
public static List<ModelAdapter> findPersonIdentityListByPersonId(String personId) {
|
if (TextUtils.isEmpty(personId)) {
|
return new ArrayList<>();
|
}
|
long findPersonIdentityListByPersonIdCurrent = System.currentTimeMillis();
|
if (findPersonIdentityListByPersonIdCurrent - findPersonIdentityListByPersonIdLastTime > 1000) {
|
findPersonIdentityListByPersonIdLastList = findList("select * from person_identity where person_id='"+personId+"' and del_flag ='0'");
|
}
|
findPersonIdentityListByPersonIdLastTime = System.currentTimeMillis();
|
return findPersonIdentityListByPersonIdLastList;
|
}
|
|
public static void deletePersonIdentityByPersonId(String personId) {
|
deleteList(findPersonIdentityListByPersonId(personId));
|
List<ModelAdapter> list = SlBaseManager.findList("select * from user where person_id='"+personId+"'");
|
for (ModelAdapter k : list) {
|
try {
|
delete(k);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
|
public static void delete(String personId, String ruleId) {
|
try {
|
// 物理删除
|
deletePhysically(findOne("select * from person_identity where person_id='"+personId+"' and identity_id='"+ruleId+"' and del_flag ='0'"));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
public static void save(String personId, String ruleId) {
|
|
ModelAdapter person = new ModelAdapter();
|
person.setString("person_id", personId);
|
person.setString("identity_id", ruleId);
|
person.setString("del_flag", "0");
|
person.setString("table", "person_identity");
|
|
person.setString("device_id", SlDeviceManager.getDeviceId());
|
person.setString("company_id", SlDeviceManager.getCompareId());
|
save(person);
|
}
|
|
|
public static void saveAdminIdentity(String personId) {
|
List<ModelAdapter> list = findList("select * from user where person_id='"+personId+"'");
|
|
if (list.size() > 0) {
|
return;
|
}
|
|
ModelAdapter admin_user_table = new ModelAdapter()
|
.setString("table", "user")
|
.setString("name", SlPersonManager.findById("person", personId).getString("name"))
|
.setString("person_id", personId)
|
.setString("username", "admin")
|
.setString("password", "admin123")
|
.setString("device_id", SlDeviceManager.getDeviceId())
|
.setString("company_id", SlDeviceManager.getCompareId());
|
|
save(admin_user_table);
|
}
|
|
public static void delAdminIdentity(String personId) {
|
|
List<ModelAdapter> list = findList("select * from user where person_id='"+personId+"'");
|
|
for (ModelAdapter d : list) {
|
delete(d);
|
}
|
}
|
|
static Map<String, Map<String, ModelAdapter>> findIdentityMapByPersonIdMap = new HashMap<>();
|
static long lastFindIdentityMapByPersonId = System.currentTimeMillis();
|
|
public static Map<String, ModelAdapter> findIdentityMapByPersonId(String personId) {
|
Map<String, ModelAdapter> map = findIdentityMapByPersonIdMap.get(personId);
|
if (map != null && System.currentTimeMillis() - lastFindIdentityMapByPersonId < 2000) {
|
return map;
|
} else {
|
findIdentityMapByPersonIdMap.clear();
|
Map<String, ModelAdapter> ruleMap = new HashMap();
|
List<ModelAdapter> personPersonIdentity = findPersonIdentityListByPersonId(personId);
|
for (ModelAdapter personIdentity : personPersonIdentity) {
|
String ruleId = personIdentity.getString("identity_id");
|
ruleMap.put(ruleId, findById("identity", ruleId));
|
}
|
findIdentityMapByPersonIdMap.put(personId, ruleMap);
|
lastFindIdentityMapByPersonId = System.currentTimeMillis();
|
return ruleMap;
|
}
|
|
}
|
|
public static List<String> findIdentityNameByPersonId(String personId) {
|
Map<String, ModelAdapter> checkedIdentityMapByPerson = SlPersonIdentityManager.findIdentityMapByPersonId(personId);
|
List<String> ruleNameList = new ArrayList<>();
|
for (ModelAdapter identityModelAdapter : checkedIdentityMapByPerson.values()) {
|
if (identityModelAdapter != null && !TextUtils.isEmpty(identityModelAdapter.getString("name"))) {
|
ruleNameList.add(identityModelAdapter.getString("name"));
|
}
|
}
|
|
return ruleNameList;
|
}
|
|
public static void savePersonIdentity(ModelAdapter person_identity) {
|
SlBaseManager.save(person_identity);
|
}
|
|
}
|