///<summary> ///修改: ///</summary> /// <param name="model">要修改的model</param> /// <returns>受影响的行数</returns> public Result <int> UpdateAIUserFace(EPM_AIUserFace model) { Result <int> result = new Result <int>(); try { model = SetCurrentUser(model); var rows = DataOperateBusiness <EPM_AIUserFace> .Get().Update(model); result.Data = rows; result.Flag = EResultFlag.Success; WriteLog(AdminModule.AIUserFace.GetText(), SystemRight.Modify.GetText(), "修改: " + model.Id); } catch (Exception ex) { result.Data = -1; result.Flag = EResultFlag.Failure; result.Exception = new ExceptionEx(ex, "UpdateAIUserFace"); } return(result); }
/// <summary> /// 人脸注册 /// </summary> /// <param name="userId"></param> /// <param name="image"></param> /// <param name="source"></param> /// <returns></returns> public Result <int> AddAIUserFaceInfo(long userId, string image, string source) { Result <int> resultObj = new Result <int>(); resultObj.Data = -1; BasicDataContext basedb = new BasicDataContext(); BusinessDataContext busdb = new BusinessDataContext(); try { var imageType = "BASE64"; var groupId = "group1"; string control = "LOW"; image = image.Substring(image.IndexOf(",") + 1); //将‘,’以前的多余字符串删除 // 如果有可选参数 var options = new Dictionary <string, object> { { "quality_control", control }, { "liveness_control", control } }; Face client = GetFacaClient(); JObject result = new JObject(); //人脸管理 EPM_AIUserFace userFaceAI = new EPM_AIUserFace(); //人脸日志表 EPM_FaceOperateLog faceLog = new EPM_FaceOperateLog(); //查询用户详情 var userResult = DataOperateBasic <Base_User> .Get(basedb).GetModel(userId); //查询该用户是否已经注册的人脸信息 userFaceAI = DataOperateBusiness <EPM_AIUserFace> .Get(busdb).GetList(t => t.UserId == userId).FirstOrDefault(); //已存在人脸更新现有数据 //是否已经存在人脸 bool isExitsUserFace = false; //是否添加人脸 bool isAddFace = false; if (userFaceAI != null && userFaceAI.IsSuccess) { faceLog.APIType = FaceOperate.Update.ToString(); isExitsUserFace = true; } else //不存在添加新数据 { isAddFace = true; faceLog.APIType = FaceOperate.Add.ToString(); if (userFaceAI == null) { userFaceAI = new EPM_AIUserFace(); isExitsUserFace = false; } else { isExitsUserFace = true; } userFaceAI.IsSuccess = true; userFaceAI.UserId = userId; userFaceAI.UserName = userResult.UserName; userFaceAI.UserPhone = userResult.Phone; userFaceAI.ImageBase64 = "data:image/jpeg;base64," + image; userFaceAI.ImageType = imageType; userFaceAI.GroupId = groupId; userFaceAI.LivenessControl = control; userFaceAI.QualityControl = control; userFaceAI.Source = source; } //日志 var requestJson = new { imageType = imageType, groupId = groupId, control = control, userId = userId, options = new { quality_control = control, liveness_control = control } }; faceLog.ModelId = userFaceAI.Id; faceLog.RequestJson = requestJson.ToString(); faceLog = SetCurrentUser(faceLog); try { if (isAddFace) { result = client.UserAdd(image, imageType, groupId, userId.ToString(), options); } else { result = client.UserUpdate(image, imageType, groupId, userId.ToString(), options); } userFaceAI.LogId = result["log_id"].ToString(); if (result["error_code"].ToString() == "0" && result["error_msg"].ToString() == "SUCCESS") { var result_list = Newtonsoft.Json.JsonConvert.DeserializeObject(result["result"].ToString()) as JObject; var result_location = Newtonsoft.Json.JsonConvert.DeserializeObject(result_list["location"].ToString()) as JObject; userFaceAI.FaceToken = result_list["face_token"].ToString(); userFaceAI.Left = Convert.ToDecimal(result_location["left"]); userFaceAI.Top = Convert.ToDecimal(result_location["top"]); userFaceAI.Width = Convert.ToDecimal(result_location["width"]); userFaceAI.Height = Convert.ToDecimal(result_location["height"]); userFaceAI.Rotation = result_location["rotation"].ToString(); userFaceAI.Location = result_list["location"].ToString(); userFaceAI.IsSuccess = true; userFaceAI = SetCurrentUser(userFaceAI); faceLog.IsSuccess = true; resultObj.Data = 1; } else { faceLog.IsSuccess = false; userFaceAI.IsSuccess = false; } } catch (Exception) { faceLog.IsSuccess = false; userFaceAI.IsSuccess = false; } faceLog.ResponseJson = result.ToString(); if (isExitsUserFace) { DataOperateBusiness <EPM_AIUserFace> .Get(busdb).Update(userFaceAI); } else { DataOperateBusiness <EPM_AIUserFace> .Get(busdb).Add(userFaceAI); } DataOperateBusiness <EPM_FaceOperateLog> .Get(busdb).Add(faceLog); resultObj.Flag = EResultFlag.Success; } catch (Exception ex) { resultObj.Data = -1; resultObj.Flag = EResultFlag.Failure; resultObj.Exception = new ExceptionEx(ex, "AddAIUserFaceInfo"); } finally { if (basedb.Database.Connection.State != ConnectionState.Closed) { basedb.Database.Connection.Close(); basedb.Database.Connection.Dispose(); } if (busdb.Database.Connection.State != ConnectionState.Closed) { busdb.Database.Connection.Close(); busdb.Database.Connection.Dispose(); } } return(resultObj); }
///<summary> ///修改: ///</summary> ///<param name="model">要修改的model</param> ///<returns>受影响的行数</returns> public Result <int> UpdateAIUserFace(EPM_AIUserFace model) { return(base.Channel.UpdateAIUserFace(model)); }
///<summary> ///添加: ///</summary> ///<param name="model">要添加的model</param> ///<returns>受影响的行数</returns> public Result <int> AddAIUserFace(EPM_AIUserFace model) { return(base.Channel.AddAIUserFace(model)); }