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 findPersonIdentityListByPersonIdLastList = new ArrayList<>(); public static List 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 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 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 list = findList("select * from user where person_id='"+personId+"'"); for (ModelAdapter d : list) { delete(d); } } static Map> findIdentityMapByPersonIdMap = new HashMap<>(); static long lastFindIdentityMapByPersonId = System.currentTimeMillis(); public static Map findIdentityMapByPersonId(String personId) { Map map = findIdentityMapByPersonIdMap.get(personId); if (map != null && System.currentTimeMillis() - lastFindIdentityMapByPersonId < 2000) { return map; } else { findIdentityMapByPersonIdMap.clear(); Map ruleMap = new HashMap(); List 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 findIdentityNameByPersonId(String personId) { Map checkedIdentityMapByPerson = SlPersonIdentityManager.findIdentityMapByPersonId(personId); List 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); } }