package com.basic.security.fragment; import android.os.Bundle; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.basic.security.base.BaseFragment; import com.basic.security.manager.BaseSettingManager; import com.basic.security.manager.CompanyManager; import com.basic.security.manager.DeviceManager; import com.basic.security.manager.FeatureManager; import com.basic.security.manager.HintSignUpManager; import com.basic.security.manager.OrgManager; import com.basic.security.manager.PersonManager; import com.basic.security.manager.UserManager; import com.basic.security.model.Model; import com.basic.security.model.ModelAdapter; import com.basic.security.model.Org; import com.basic.security.model.Person; import com.basic.security.utils.BasicIdUtil; import com.basic.security.utils.ButtonClickIntervalsUtils; import com.basic.security.utils.CheckIdCard; import com.basic.security.utils.Constants; import com.basic.security.utils.PhoneNumberCheckUtils; import com.basic.security.utils.ResolutionAdaptation; import com.basic.security.utils.SocketUtil; import com.basic.security.utils.ToastUtil; import com.basic.security.widget.ConfirmDialog; import org.androidannotations.annotations.EFragment; import org.apache.commons.lang3.StringUtils; import java.util.Arrays; import java.util.Date; import java.util.HashMap; @EFragment public class PersonManageFragment extends BaseFragment { public ModelAdapter selectedPerson; public boolean needVerifyIDCard = false; public boolean isFromAdminRegister = false; public boolean canSavePerson = true; public ConfirmDialog confirmDialog; public String savedPersonId; public boolean messageComplete = false; boolean isNewPerson = false; public void selectedPerson(ModelAdapter selectedPerson) { String personName = null; if (selectedPerson != null) { personName = selectedPerson.getString(Person.name); selectedPerson.setString(Model.debug, Constants.TRUE); } this.selectedPerson = selectedPerson; mainActivity.fragment_face_detail.showPersonDetail(selectedPerson); } public ModelAdapter selectedPerson() { return this.selectedPerson; } public void savePerson() { if (!ButtonClickIntervalsUtils.isCanClick()) { return; } isNewPerson = false; final String[] msg = {"保存成功"}; canSavePerson = true; BaseFragment currentFragment = mainActivity().currentFragment; class SavePersonHelper { public void execute() { if (checkPersonDocument()) { if (!canSavePerson) {// 校验身份证号和手机号是否符合要求 return; } if (needSaveIdCard()) { saveIdCard(selectedPerson()); } if (TextUtils.isEmpty(selectedPerson().getString("verify_status")) || idCard != null) { setVerifyStatus(); } setIsSignUp(); if (mainActivity().fragment_face_detail.savePersonIdentity(selectedPerson().getId())) { byte[] camera_image_feature = selectedPerson().getBlob("camera_image_feature"); if (camera_image_feature != null && camera_image_feature != null) { int identitySize = mainActivity().fragment_face_detail.checkedIdentityMapByPerson.values().size(); identitySize = 1; if ("已注册".equals(selectedPerson().getString("sign_up_status")) && currentFragment == mainActivity().fragment_person_manage) { if (!messageComplete) { return; } if (identitySize == 0) { ToastUtil.show("请选择身份"); return; } ToastUtil.show(msg[0]); } selectedPerson().setString("all_device", mainActivity().fragment_face_detail.clusterDevices.isChecked() ? "1" : "0"); if (TextUtils.isEmpty(selectedPerson().getString(Person.org_id))) { ModelAdapter rootOrg = OrgManager.findRootOrg(); if (rootOrg != null) { selectedPerson().setString(Person.org_id, rootOrg.getString(Org.id)); selectedPerson().setString(Person.org_ids, rootOrg.getString(Org.ids)); } } PersonManager.savePerson(selectedPerson()); SocketUtil.rpcCallSavePerson(selectedPerson()); savedPersonId = selectedPerson().getId(); if (isNewPerson()) { selectedPerson.setString(Model.newModel, com.basic.security.utils.Constants.TRUE); selectedPerson(selectedPerson); FeatureManager.addFeature(selectedPerson().getId(), selectedPerson().getBlob("camera_image_feature")); } } else { ToastUtil.show("获取头像失败,请稍后重试!"); } mainActivity().runOnUiThread(() -> { jumpToPage(); }); } } } public void setIsSignUp() { if (!UserManager.adminLoggedIn()) { selectedPerson().setString("sign_up_status", "已注册"); } if (UserManager.adminLoggedIn()) { String sign_up_status = selectedPerson().getString("sign_up_status"); messageComplete = mainActivity().fragment_face_detail.detailMessageIsComplete(); int identitySize = mainActivity().fragment_face_detail.checkedIdentityMapByPerson.values().size(); identitySize = 1; // 不判断是否有身份信息都可以保存 if (mainActivity().currentFragment == mainActivity().fragment_su_logged_ic_compare_success || mainActivity().currentFragment == mainActivity().fragment_su_logged_ic_wait_idcard || mainActivity().currentFragment == mainActivity().fragment_su_logged_ic_wait_face || mainActivity().currentFragment == mainActivity().fragment_su_logged_nic_wait_detail || mainActivity().currentFragment == mainActivity().fragment_su_logged_nic_wait_face) { if (messageComplete) { selectedPerson().setString("sign_up_status", "已注册"); ToastUtil.show("注册成功"); } else { selectedPerson().setString("sign_up_status", "未注册"); } } else { if (!"已注册".equals(sign_up_status)) { if (messageComplete) { selectedPerson().setString("sign_up_status", "已注册"); msg[0] = HintSignUpManager.getRegisterSuccessHint(); if (identitySize > 0) { selectedPerson().setString("sign_up_status", "已注册"); msg[0] = HintSignUpManager.getRegisterSuccessHint(); } else { ToastUtil.show("请选择身份!"); selectedPerson().setString("sign_up_status", "未注册"); } } else { selectedPerson().setString("sign_up_status", "未注册"); ToastUtil.show("信息填写不完整!"); } } } } } public void setVerifyStatus() { if ("自助注册".equals(selectedPerson().getString("sign_up_method"))) { if (BaseSettingManager.isAutoSignUpIDCardMode()) { selectedPerson().setString("verify_status", "未验证身份证"); } else { selectedPerson().setString("verify_status", "不需要验证身份证"); } } else { if (BaseSettingManager.isAdminAuthSignUpModeNeedIdCard()) { selectedPerson().setString("verify_status", "未验证身份证"); } else { selectedPerson().setString("verify_status", "不需要验证身份证"); } } if (selectedPerson().getBlob("id_card_image_path") != null) { selectedPerson().setString("verify_status", "已经验证身份证"); } } public boolean checkPersonDocument() { if (isNewPerson()) { mainActivity().fragment_face_detail.showPersonDetail(null); isNewPerson = true; createNewPerson(); if (!UserManager.adminLoggedIn()) { selectedPerson().setString("sign_up_method", "自助注册"); } else { selectedPerson().setString("sign_up_method", "人工注册"); } if (!savePhotoAndFeature()) { return false; } // String duplicatedPersonId = PersonManager.isDuplicate(selectedPerson()); String duplicatedPersonId = FeatureManager.isDuplicateInAllDb(selectedPerson()); if (!TextUtils.isEmpty(duplicatedPersonId)) { if (isNewPerson) { try { FeatureManager.removeFeature(duplicatedPersonId); ModelAdapter duplicatedPerson = PersonManager.findPersonById(duplicatedPersonId); PersonManager.deletePerson(duplicatedPerson); selectedPerson().setString(Person.id, duplicatedPersonId); } catch (Exception e) { e.printStackTrace(); } } else { System1.out.println("PersonManagerFragment:114,不应该有重复 personId=" + duplicatedPersonId); return false; } } } else { if (selectedPerson() == null) { return false; } } return saveFaceDetail(isNewPerson); } public void createNewPerson() { selectedPerson = new ModelAdapter(BasicIdUtil.getPersonId(getFaceFeature())); selectedPerson.setString(Model.debug, Constants.TRUE); selectedPerson().setString(Person.device_id, DeviceManager.getDeviceId()); selectedPerson().setString(Person.company_id, CompanyManager.getCompanyId()); selectedPerson().setString("del_flag", "0"); selectedPerson().setString("table", "person"); selectedPerson().setString("sign_up_time", new Date().getTime() + ""); } public void jumpToPage() { isFromAdminRegister = false; if (UserManager.adminLoggedIn()) { if (currentFragment == mainActivity().fragment_su_logged_nic_wait_detail) { mainActivity().showFragment(mainActivity().fragment_su_logged_nic_wait_face); mainActivity().fragment_face_detail.clearInPutText(); return; } if (currentFragment == mainActivity().fragment_su_logged_ic_wait_face) { isFromAdminRegister = true; } if (currentFragment == mainActivity().fragment_su_logged_ic_compare_success) { isFromAdminRegister = true; mainActivity().showFragment(mainActivity().fragment_su_logged_ic_wait_face); mainActivity().fragment_face_detail.clearInPutText(); return; } if (currentFragment == mainActivity().fragment_su_logged_ic_wait_idcard) { isFromAdminRegister = true; if (idCard == null) { ToastUtil.show("保存成功"); mainActivity().showFragment(mainActivity().fragment_su_logged_ic_wait_face); return; } else { mainActivity().showFragment(mainActivity().fragment_su_logged_ic_compare_success); return; } } if (mainActivity().currentFragment != mainActivity().fragment_person_manage) { if (mainActivity().currentFragment != mainActivity().fragment_su_logged_nic_wait_face || mainActivity().currentFragment != mainActivity().fragment_su_logged_nic_wait_detail) { } else { personChanged(null, true, false); } } else { if ("未注册".equals(mainActivity().fragment_face_list.isRegister())) { mainActivity().fragment_face_list.findNextPosition(selectedPerson(), false); } } } else { if (currentFragment == mainActivity().fragment_su_auto_ic_compare_success || currentFragment == mainActivity().fragment_su_auto_nic_wait_detail) { ToastUtil.show("注册成功"); mainActivity().showFragment(mainActivity().fragment_home); } } idCard = null; } public boolean needSaveIdCard() { if (!UserManager.adminLoggedIn()) { if (currentFragment == mainActivity().fragment_su_auto_ic_compare_success || currentFragment == mainActivity().fragment_su_auto_ic_wait_phone || currentFragment == mainActivity().fragment_su_auto_ic_wait_idcard) { return true; } } if (UserManager.adminLoggedIn()) { if (currentFragment == mainActivity().fragment_su_logged_ic_wait_idcard || currentFragment == mainActivity().fragment_su_logged_ic_compare_success) { return true; } } return needIdCardInfo() && currentFragment == mainActivity().fragment_person_manage; } public boolean saveFaceDetail(boolean isNewPerson) { boolean success = true; boolean allowPhone = true; boolean allowIDNumber = true; if (!UserManager.adminLoggedIn()) { selectedPerson().setString("sign_up_rule", BaseSettingManager.getDefaultRegisterRule()); if ("有效时间内通行".equals(BaseSettingManager.getDefaultRegisterRule())) { if (TextUtils.isEmpty(BaseSettingManager.getDefaultRegisterTimeId())) { ToastUtil.show("请选择有效时间内通行具体时间段"); canSavePerson = false; } selectedPerson().setString("checked_time_rule_id", BaseSettingManager.getDefaultRegisterTimeId()); } if (currentFragment == mainActivity().fragment_su_auto_ic_compare_success) { String phone = mainActivity().fragment_su_auto_ic_compare_success.phone_number.getText().toString().trim(); if (!TextUtils.isEmpty(phone) && !PhoneNumberCheckUtils.isPhone(phone)) { allowPhone = false; } else { selectedPerson().setString("phone", phone); } } else if (currentFragment == mainActivity().fragment_su_auto_wait_face) { } else if (currentFragment == mainActivity().fragment_su_auto_nic_wait_detail) { SuAutoNicWaitDetailFragment fragment_su_auto_nic_wait_detail = mainActivity().fragment_su_auto_nic_wait_detail; String phone = fragment_su_auto_nic_wait_detail.phone_number.getText().toString(); String idCardNumber = fragment_su_auto_nic_wait_detail.id_card.getText().toString(); selectedPerson().setString("name", fragment_su_auto_nic_wait_detail.name.getText().toString()); if (!TextUtils.isEmpty(idCardNumber)) { CheckIdCard idCard = new CheckIdCard(idCardNumber); if (idCard.validate()) { selectedPerson().setString("id_card_number", idCardNumber); } else { allowIDNumber = false; } } else { selectedPerson().setString("id_card_number", idCardNumber); } if (!TextUtils.isEmpty(phone) && !PhoneNumberCheckUtils.isPhone(phone)) { allowPhone = false; } else { selectedPerson().setString("phone", phone); } } } if (UserManager.adminLoggedIn()) { FaceDetailFragment faceDetailFragment = mainActivity().fragment_face_detail; String phone = faceDetailFragment.getInPutPhoneNumber(); String idCardNumber = faceDetailFragment.getInPutIdCardNumber(); String studentId = faceDetailFragment.getInputStudentId(); selectedPerson().setString(Person.student_id, studentId); if (faceDetailFragment.selectedOrg != null) { selectedPerson().setString(Person.org_id, faceDetailFragment.selectedOrg.getString(Org.id)); selectedPerson().setString(Person.org_ids, faceDetailFragment.selectedOrg.getString(Org.ids)); } selectedPerson().setString("sign_up_rule", faceDetailFragment.getSignUpRule()); if ("有效时间内通行".equals(faceDetailFragment.getSignUpRule())) { if (TextUtils.isEmpty(faceDetailFragment.getCheckedTimeRuleId())) { ToastUtil.show("请选择有效时间内通行具体时间段"); canSavePerson = false; } selectedPerson().setString("checked_time_rule_id", faceDetailFragment.getCheckedTimeRuleId()); } selectedPerson().setString("name", faceDetailFragment.getInPutName()); selectedPerson().setString(Person.guest_visit_valid_time, faceDetailFragment.getGuestVisitValid()); if (!isNewPerson && StringUtils.isEmpty(selectedPerson().getString(Person.name)) && BaseSettingManager.isAutoSignUpNotIDCardModeNeedName()) { ToastUtil.show("姓名不能为空"); return false; } if (!TextUtils.isEmpty(idCardNumber)) { CheckIdCard idCard = new CheckIdCard(idCardNumber); if (idCard.validate()) { selectedPerson().setString("id_card_number", idCardNumber); } else { if (!isNewPerson) { ToastUtil.show("请输入正确的身份证号码"); return false; } allowIDNumber = false; } } else { if (!isNewPerson && BaseSettingManager.isAutoSignUpNotIDCardModeNeedIDNumber()) { ToastUtil.show("身份证号码不能为空"); return false; } selectedPerson().setString("id_card_number", idCardNumber); } if (!TextUtils.isEmpty(phone) && !PhoneNumberCheckUtils.isPhone(phone)) { allowPhone = false; if (!isNewPerson) { ToastUtil.show("请输入正确的手机号码"); return false; } } else { selectedPerson().setString("phone", phone); } if (!isNewPerson && StringUtils.isEmpty(selectedPerson().getString(Person.phone)) && BaseSettingManager.isAutoSignUpNotIDCardModeNeedPhone()) { ToastUtil.show("电话号码不能为空"); return false; } } if ("已经验证身份证".equals(selectedPerson().getString("verify_status")) || "未验证身份证".equals(selectedPerson().getString("verify_status"))) { if (!allowPhone) { ToastUtil.show("请输入正确的手机号码"); canSavePerson = false; } } else { if (allowPhone && !allowIDNumber) { ToastUtil.show("请输入正确的身份证号码"); canSavePerson = false; } else if (!allowPhone && allowIDNumber) { ToastUtil.show("请输入正确的手机号码"); canSavePerson = false; } else if (!allowPhone && !allowIDNumber) { ToastUtil.show("请输入正确的身份证号码和手机号码"); canSavePerson = false; } } if (isNewPerson) { return true; } else { return success; } } public boolean savePhotoAndFeature() { if (!saveBlob(selectedPerson(), "camera_image_feature", getFaceFeature()) || !saveBlob(selectedPerson(), "camera_image_path", getFacePositionJpgData())) { System1.out.println("没有头像图片和头像特征"); return false; } return true; } public boolean isNewPerson() { if (Arrays.asList( mainActivity().fragment_su_logged_nic_wait_face, mainActivity().fragment_su_logged_ic_wait_face).contains(currentFragment)) { return true; } return !UserManager.adminLoggedIn(); } } new SavePersonHelper().execute(); } public boolean needIdCardInfo() { return needVerifyIDCard; } public void deletePerson() { if (selectedPerson() == null || "1".equals(selectedPerson().getString("auto_init"))) { return; } confirmDialog = new ConfirmDialog(mainActivity(), "确认是否删除", "确认删除", "取消"); confirmDialog.show(); confirmDialog.setClickListener(new ConfirmDialog.ClickListenerInterface() { public void doConfirm() { String personId = selectedPerson().getId(); FeatureManager.removeFeature(selectedPerson().getId()); PersonManager.deletePerson(selectedPerson()); if (mainActivity().currentFragment == mainActivity().fragment_person_manage) { mainActivity().fragment_face_list.findNextPosition(selectedPerson(), true); } if (mainActivity().currentFragment == mainActivity().fragment_su_logged_nic_wait_detail || mainActivity().currentFragment == mainActivity().fragment_su_logged_ic_compare_success || mainActivity().currentFragment == mainActivity().fragment_su_logged_ic_wait_idcard) { if (BaseSettingManager.isAdminAuthSignUpModeNeedIdCard()) { mainActivity().showFragment(mainActivity().fragment_su_logged_ic_wait_face); } else { mainActivity().showFragment(mainActivity().fragment_su_logged_nic_wait_face); } mainActivity().fragment_person_manage.personChanged(null, false, false); } confirmDialog.dismiss(); mainActivity().fragment_person_manage.selectedPerson(null); } public void doCancel() { confirmDialog.dismiss(); } }); } public void personChanged(ModelAdapter person, boolean reloadFaceList, boolean selectPerson) { if (person == null) { if (reloadFaceList) { mainActivity().fragment_face_list.findPersonList1(); } } else { if (selectPerson) { mainActivity().fragment_face_list.findPersonList(person.getString("sign_up_status"), new HashMap<>(), person); } } selectedPerson(person); // mainActivity().fragment_face_detail.updateIdentityListUI(person); // mainActivity().fragment_face_detail.updateDetailUI(person); } public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(ResolutionAdaptation.fragment_person_manage(), container, false); } public void setNeedVerifyIDCard(boolean needIDCard) { this.needVerifyIDCard = needIDCard; } public void show() { super.show(); mainActivity().fragment_face_list.update_tv_person_number(); if (mainActivity().currentFragment == mainActivity().fragment_su_logged_ic_wait_idcard) { // mainActivity().fragment_face_detail.updateIdentityListUI(null); } if (selectedPerson() != null && isFromAdminRegister) { // mainActivity().fragment_face_detail.updateDetailUI(selectedPerson()); } } public void hide() { super.hide(); if (mainActivity().currentFragment != mainActivity().fragment_person_manage) { if (mainActivity().currentFragment == mainActivity().fragment_su_logged_ic_compare_success || mainActivity().currentFragment == mainActivity().fragment_su_logged_ic_wait_idcard || mainActivity().currentFragment == mainActivity().fragment_su_logged_ic_wait_face) { } else { // selectedPerson(null); // mainActivity.fragment_face_detail.updateDetailUI(null); // mainActivity.fragment_face_detail.updateIdentityListUI(null); } if (confirmDialog != null) { confirmDialog.dismiss(); } } } public void giveUpSave() { mainActivity().fragment_menu.person_add(); } private boolean checkIdCardAndPhone() { if (!TextUtils.isEmpty(selectedPerson().getString("id_card_number"))) { CheckIdCard checkIdCard = new CheckIdCard(selectedPerson().getString("id_card_number")); if (!checkIdCard.validate()) { ToastUtil.show("请输入正确的身份证号"); return false; } } if (!TextUtils.isEmpty(selectedPerson().getString("phone"))) { if (!PhoneNumberCheckUtils.isPhone(selectedPerson().getString("phone"))) { ToastUtil.show("请输入正确的手机号"); return false; } } return true; } }