/// <summary>
 /// 操作人是否是系统人员
 /// </summary>
 /// <param name="errMsg">错误信息</param>
 /// <returns>结果</returns>
 private bool IsSysOperatorValidate(out string errMsg)
 {
     auiModel = EBS.Interface.Data.DBOper.Admin_UserInfo.Get("IsDel=0 and Status=1 and SoufunID=@SoufunID", "", new object[] { OperSoufunId }, true);
     if (auiModel == null || auiModel.ID <= 0)
     {
         errMsg = "不是系统服务人员不能做该操作!";
         return(false);
     }
     errMsg = "";
     return(true);
 }
        public async Task <ActionResult> Grab()
        {
            try
            {
                #region 参数验证
                var validateResult = ParamsValidateMethod();
                if (validateResult != null)
                {
                    return(validateResult);
                }
                string orderId        = Request["OrderId"];
                long   operSoufunId   = long.Parse(Request["OperSoufunId"]);
                long   ownerSoufunId  = long.Parse(Request["OwnerSoufunId"]);
                string operSoufunName = Request["OperSoufunName"] ?? "";
                #endregion

                #region 数据验证

                string errMsg = string.Empty;
                EBS.Interface.Model.Admin_UserInfo auiModel = null;
                if (!new ParamValidateHelper().AllParamsValidate(out errMsg, out auiModel, orderId, operSoufunId, operSoufunName, ownerSoufunId))
                {
                    throw new Exception(errMsg);
                }
                var asaModel = EBS.Interface.Data.DBOper.Admin_SubAuth.Get("IsDel=0 and CONSTCODE=@code", "CreateTime desc", new object[] { "ADD_CUSTOMER" }, false);
                if (asaModel == null || asaModel.ID <= 0)
                {
                    throw new ArgumentException(string.Format("CONSTCODE为:[{0}]的Admin_SubAuth表信息为空!", "ADD_CUSTOMER"));
                }
                if (asaModel.OrderService <= 0)
                {
                    throw new Exception("非订单特定服务,无需操作!");
                }
                if (auiModel.FunctionId <= 0)
                {
                    throw new Exception("用户未分配职能!");
                }
                var afiModel = EBS.Interface.Data.DBOper.Admin_FunctionInfo.Get("IsDel=0 and Id=@functionId", "CreateTime desc", new object[] { auiModel.FunctionId }, false);
                if (afiModel == null || afiModel.ID <= 0)
                {
                    throw new ArgumentException(string.Format("FunctionId为:[{0}]的Admin_FunctionInfo表信息为空!", auiModel.FunctionId));
                }
                var nsiModel = EBS.Interface.Data.DBOper.N_Service_Info.Get("IsDel=0 and Id=@serviceId", "CreateTime desc", new object[] { asaModel.OrderService }, false);
                if (nsiModel == null || nsiModel.ID <= 0)
                {
                    throw new ArgumentException(string.Format("ServiceId为:[{0}]的N_Service_Info表信息为空!", asaModel.OrderService));
                }

                #endregion

                var _commandService = ObjectContainer.Resolve <ICommandService>();

                var command = new GrabOrderCommand(ObjectId.GenerateNewStringId(), orderId, operSoufunId, operSoufunName, ownerSoufunId);
                var result  = await _commandService.ExecuteAsync(command, CommandReturnType.EventHandled).TimeOut(20000, "任务超时");

                if (result.Status == AsyncTaskStatus.Success)
                {
                    if (!string.IsNullOrEmpty(result.Data.ErrorMessage))
                    {
                        return(Json(result.Data.ErrorMessage, JsonRequestBehavior.AllowGet));
                    }
                    else
                    {
                        return(Json(string.Format("订单编号为:[{0}]的消息发送成功!", orderId), JsonRequestBehavior.AllowGet));
                    }
                }
                else
                {
                    if (result.Status == AsyncTaskStatus.IOException)
                    {
                        var errJsonStr = CommandExecuteHelper.CreateErrJsonStr(command);
                        await new ErrMsgDenormalizer().LoggingErrMsgToDb(errJsonStr, result.ErrorMessage, (int)result.Status);
                        return(Json("服务器异常", JsonRequestBehavior.AllowGet));
                    }
                    else
                    {
                        return(Json(string.Format("发送失败,错误原因:[{0}]", result.Data.ErrorMessage), JsonRequestBehavior.AllowGet));
                    }
                }
            }
            catch (Exception ex)
            {
                return(Json(ex.Message, JsonRequestBehavior.AllowGet));
            }
        }
        /// <summary>
        /// 抢客户是否成功添加日志
        /// </summary>
        /// <param name="orderbase"></param>
        /// <param name="qiangState">0失败,1成功</param>
        /// <param name="qiangRemark">错误信息</param>
        /// <returns></returns>
        protected static bool InsertGuanjiaUserMap(EBS.Interface.Model.N_Order_Base orderbase, EBS.Interface.Model.Admin_UserInfo aui, int qiangState, string qiangRemark)
        {
            int gumID = 0;

            EBS.Interface.Model.GuanjiaUserMap gum = new EBS.Interface.Model.GuanjiaUserMap();
            gum.OnwerSoufunId   = orderbase.SoufunId;
            gum.OnwerSoufunName = orderbase.OrderId;
            gum.OperType        = 0;//管家
            gum.OperID          = aui.SoufunId;
            gum.OperName        = string.IsNullOrEmpty(aui.TrueName) ? aui.SoufunName : aui.TrueName;
            gum.OperCity        = orderbase.CityName;
            gum.CreateTime      = DateTime.Now;
            gum.QiangState      = qiangState;
            gum.QiangRemark     = qiangRemark;
            return(EBS.Interface.Data.DBOper.GuanjiaUserMap.Add(gum, out gumID));
        }
        public bool AllParamsValidate(out string errorMessage, out EBS.Interface.Model.Admin_UserInfo adminModel, string OrderId = "", long OperSoufunId = 0, string OperSoufunName = "", long OwnerSoufunId = 0)
        {
            adminModel = null;
            #region 1.非空验证
            if (!IsNullValidate(OrderId, OperSoufunId, OwnerSoufunId, out errorMessage))
            {
                return(false);
            }
            #endregion

            //获取参数
            this.OrderId       = OrderId;
            this.OperSoufunId  = OperSoufunId;
            this.OwnerSoufunId = OwnerSoufunId;

            #region 2.是否是系统人员验证
            if (!IsSysOperatorValidate(out errorMessage))
            {
                return(false);
            }
            #endregion

            #region 3.是否已经存在服务人员验证
            if (!IsExistOperatorValidate(out errorMessage))
            {
                return(false);
            }
            #endregion

            #region 4.订单是否存在验证
            if (!IsOrderExistValidate(out errorMessage))
            {
                return(false);
            }
            #endregion

            #region 5.订单是否被抢验证
            if (!IsGrabedValidate(out errorMessage))
            {
                return(false);
            }
            #endregion

            #region 6.是否是管家黑名单验证
            if (!IsBlackListButlerValidate(out errorMessage))
            {
                return(false);
            }
            #endregion

            #region 7.城市名额配置验证
            if (!GetCityConfigValidate(out errorMessage))
            {
                return(false);
            }
            #endregion

            #region 8.是否有名额验证
            if (!HasQuotaValidate(out errorMessage))
            {
                return(false);
            }
            #endregion

            errorMessage = "";
            adminModel   = auiModel;
            return(true);
        }