public bool Validate(int docs_id, bool weatherPass, int op_user_id, string remarks) { BeginTransaction(); Tnet_User_Documents daDocs = new Tnet_User_Documents(); daDocs.ReferenceTransactionFrom(Transaction); if (!daDocs.SelectByPk(docs_id)) { Rollback(); Alert("认证信息未找到"); return(false); } Tnet_Identity daIdentity = new Tnet_Identity(); daIdentity.ReferenceTransactionFrom(Transaction); if (!daIdentity.SelectByPk(daDocs.Documents_Id)) { Rollback(); Alert("认证信息未找到"); return(false); } if (weatherPass && daIdentity.Status == 0) { daIdentity.Status = 1; if (!daIdentity.Update()) { Rollback(); Alert("操作失败,更新证件信息失败"); return(false); } } //else if (!weatherPass) //{ // if (!daIdentity.Delete()) // { // Rollback(); // Alert("操作失败,删除证件失败"); // return false; // } //} IUser user = GetUser(daDocs.User_Id); if (user == null) { Rollback(); Alert("用户信息未找到"); return(false); } #region parameters var alter = new Dictionary <Tnet_User_DocumentsCollection.Field, object>(); alter.Add(Tnet_User_DocumentsCollection.Field.Status, weatherPass ? ValidateStatus.审核通过 : ValidateStatus.审核未通过); alter.Add(Tnet_User_DocumentsCollection.Field.Remarks, string.Concat(op_user_id, "|", DateTime.Now.ToString(), "|", weatherPass, "|", remarks)); var where = new Dictionary <Tnet_User_DocumentsCollection.Field, object>(); where.Add(Tnet_User_DocumentsCollection.Field.Id, daDocs.Id); where.Add(Tnet_User_DocumentsCollection.Field.Status, ValidateStatus.审核中); #endregion if (!daDocs.Update(alter, where)) { Rollback(); Alert("审核失败"); return(false); } user.Auth_Status = weatherPass ? Interface.Enums.Auth_Status.已认证 : Interface.Enums.Auth_Status.认证失败; user.UserName = daIdentity.User_Name; var fac = UserModuleFactory.GetUserModuleInstance(); if (fac == null) { Rollback(); Alert("系统错误"); return(false); } var manager = fac.GetProfileManager(user); if (!manager.Update()) { Rollback(); Alert("更新用户信息失败"); return(false); } Commit(); return(true); }
public bool Authencate(string userCode, AuthIdentityInfo authinfo) { if (authinfo.Score < 60) { Alert("认证匹配度太低,认证失败"); return(false); } var fac = UserModuleFactory.GetUserModuleInstance(); if (fac == null) { Alert((ResultType)541, "系统错误"); return(false); } IUser user = fac.GetUserByCode(userCode); if (user == null) { Alert((ResultType)404, "用户账户未注册"); return(false); } if (user.Auth_Status != Interface.Enums.Auth_Status.未认证 && user.Auth_Status != Interface.Enums.Auth_Status.认证失败) { Alert((ResultType)409, user.Auth_Status.ToString() + ",请不要重复上传"); return(false); } try { IDCard idCard = new IDCard(authinfo.ID_NO); if (!idCard.IsValid) { Alert((ResultType)409, "身份证号码有误"); return(false); } } catch (Exception ex) { Alert("身份证号码验证失败,请检查您上传的身份证号码"); Log.Info("身份证号码验证失败", ex); return(false); } IUserProfileManager userMgt = fac.GetProfileManager(user); if (userMgt == null) { Alert((ResultType)541, "系统错误"); return(false); } BeginTransaction(); Tnet_User_Documents daDocs = new Tnet_User_Documents(); daDocs.ReferenceTransactionFrom(Transaction); bool isSubmit = daDocs.SelectByUid_DocType_DelFlag(user.UserId, DocsType.身份证); if (isSubmit && daDocs.Status != (int)ValidateStatus.审核未通过) { Rollback(); Alert((ResultType)409, "您的认证信息已提交,请勿重复提交"); return(false); } Tnet_Identity daIdentity = new Tnet_Identity(); daIdentity.ReferenceTransactionFrom(Transaction); bool isExist = daIdentity.SelectByIdentity_No(authinfo.ID_NO); if (isExist) { Tnet_User_DocumentsCollection daDocsColl = new Tnet_User_DocumentsCollection(); daDocsColl.ListByDocs_id(daIdentity.Id, DocsType.身份证); if (daDocsColl.Count > 0) { foreach (Tnet_User_Documents item in daDocsColl) { if (item.User_Id != user.UserId) { Rollback(); Alert("该证件已被其他账号认证!"); return(false); } } } } if (!isExist || (isExist && daIdentity.Status != 1))//证件不存在,或证件存在但未通过认证 { daIdentity.User_Name = authinfo.RealName; daIdentity.Identity_No = authinfo.ID_NO; daIdentity.Status = 0; daIdentity.Region_Id = authinfo.Region_Id; daIdentity.Front_Photo = authinfo.Front_Photo; daIdentity.Back_Photo = authinfo.Back_Photo; daIdentity.Scene_Photo = authinfo.Scene_Photo; daIdentity.Sex = GetGenderFromIdNo(authinfo.ID_NO); daIdentity.Birthday = GetBirthFromIdNO(authinfo.ID_NO); daIdentity.Address = authinfo.Address; daIdentity.Begin_Time = authinfo.Begin_Date; daIdentity.End_Time = authinfo.EndDate; daIdentity.Issuing = authinfo.Issuing; daIdentity.Nation = authinfo.Nation; if (!isExist) { if (!daIdentity.Insert()) { Rollback(); Alert((ResultType)540, "认证信息录入失败"); return(false); } } else { if (!daIdentity.Update()) { Rollback(); Alert((ResultType)541, "认证信息录入失败"); return(false); } } } daDocs.User_Id = user.UserId; daDocs.Documents_Type = (int)DocsType.身份证; daDocs.Documents_Id = daIdentity.Id; daDocs.Status = (int)ValidateStatus.审核中; if (isSubmit) { if (!daDocs.Update()) { Rollback(); Alert((ResultType)544, "认证信息录入失败"); return(false); } } else { if (!daDocs.Insert()) { Rollback(); Alert((ResultType)542, "认证信息录入失败"); return(false); } } user.Auth_Status = Interface.Enums.Auth_Status.认证中; if (!userMgt.Update()) { Rollback(); Alert("系统繁忙,请稍后重试"); return(false); } Commit(); Task.Factory.StartNew(() => { if (authinfo.Score >= 80)//活体认证得分大于等于80分,自动审核通过 { AuthenticationProvider identity = new AuthenticationProvider(); bool res = identity.Validate(daDocs.Id, true, 0, "系统自动通过"); Log.Info($"自动审核,结果:{res},错误信息:{identity.PromptInfo.CustomMessage}"); } else { Log.Info("活体认证得分低于80分,转入人工审核"); } }); return(true); }