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;
|
}
|
}
|