Пример #1
0
        ///<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);
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
 ///<summary>
 ///修改:
 ///</summary>
 ///<param name="model">要修改的model</param>
 ///<returns>受影响的行数</returns>
 public Result <int> UpdateAIUserFace(EPM_AIUserFace model)
 {
     return(base.Channel.UpdateAIUserFace(model));
 }
Пример #4
0
 ///<summary>
 ///添加:
 ///</summary>
 ///<param name="model">要添加的model</param>
 ///<returns>受影响的行数</returns>
 public Result <int> AddAIUserFace(EPM_AIUserFace model)
 {
     return(base.Channel.AddAIUserFace(model));
 }