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.AccountManager; import com.basic.security.manager.BaseSettingManager; import com.basic.security.manager.HintSignUpManager; import com.basic.security.manager.OrgManager; import com.basic.security.manager.PersonManager; 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.FaceId; import com.basic.security.utils.FrameUtil; 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; public void savePerson() { if (!ButtonClickIntervalsUtils.isCanClick()) { return; } 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.getIdentitySize(); 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.aboutDevice()); 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(); mainActivity().fragment_face_detail.updateData(selectedPerson.getId()); if (isNewPerson()) { FaceId.instance.addFeatureToDb(selectedPerson.getId(), selectedPerson.getBlob("camera_image_feature")); } } else { ToastUtil.show("获取头像失败,请稍后重试!"); } System.out.println("SavePersonHelper.execute MainActivity.showFragment fragment_su_logged_ic_compare_success " + FrameUtil.getFrames()); mainActivity().runOnUiThread(() -> { jumpToPage(); }); } } } public void setIsSignUp() { if (!AccountManager.adminLoggedIn()) { selectedPerson.setString("sign_up_status", "已注册"); } if (AccountManager.adminLoggedIn()) { String sign_up_status = selectedPerson.getString("sign_up_status"); messageComplete = mainActivity().fragment_face_detail.detailMessageIsComplete(); int identitySize = mainActivity().fragment_face_detail.getIdentitySize(); 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() { boolean isNewPerson = false; if (isNewPerson()) { mainActivity().fragment_face_detail.emptyInput(); isNewPerson = true; createNewPerson(); if (!AccountManager.adminLoggedIn()) { selectedPerson.setString("sign_up_method", "自助注册"); } else { selectedPerson.setString("sign_up_method", "人工注册"); } if (!savePhotoAndFeature()) { return false; } if (PersonManager.isDuplicate(selectedPerson)) { System.out.println("PersonManagerFragment:114,不应该有重复"); return false; } } else { if (selectedPerson == null) { return false; } } return saveFaceDetail(isNewPerson); } public void createNewPerson() { selectedPerson = new ModelAdapter(BasicIdUtil.getPersonId()); selectedPerson.setString("del_flag", "0"); selectedPerson.setString("table", "person"); selectedPerson.setString("sign_up_time", new Date().getTime() + ""); } public void jumpToPage() { isFromAdminRegister = false; if (AccountManager.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) { mainActivity().fragment_face_detail.updateDetailUI(null); mainActivity().fragment_face_detail.updateIdentityListUI(null); } else { personChanged(null, true, false); } } else { if ("未注册".equals(mainActivity().fragment_face_list.isRegister())) { mainActivity().fragment_face_list.findNextPosition(selectedPerson, false); } else { personChanged(PersonManager.findPersonById(selectedPerson.getId()), false, 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 (!AccountManager.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 (AccountManager.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 (!AccountManager.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 (AccountManager.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())) { System.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 !AccountManager.adminLoggedIn(); } } new SavePersonHelper().execute(); } public boolean needIdCardInfo() { return needVerifyIDCard; } public void deletePerson() { if (selectedPerson == null || "1".equals(selectedPerson.getString("auto_init"))) { // ToastUtil.show("系统管理员不能被删除"); return; } confirmDialog = new ConfirmDialog(mainActivity(), "确认是否删除", "确认删除", "取消"); confirmDialog.show(); confirmDialog.setClickListener(new ConfirmDialog.ClickListenerInterface() { public void doConfirm() { String personId = selectedPerson.getId(); FaceId.instance.removeFeatureFromDb(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(); } 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) { // 当人工注册身份证验证时,会把selectedPerson置为null,暂时没找到置为null的原因,为了不影响已有的逻辑 // 当为工注册身份证验证时,不把selectedPerson置为null, 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; } 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; } }