示例#1
0
        static void Main(string[] args)
        {
            InitializeENodeFramework();

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

            #region 测试
            string    orderId        = "ENODE_TEST_10705";
            long      operSoufunId   = 914154500060;
            string    operSoufunName = "ENode_Test_Data_Admin_60";
            long      ownerSoufunId  = 514154500705;
            int       count          = 10705;
            Stopwatch timer          = new Stopwatch();
            for (int i = 0; i < 100; i++)
            {
                timer.Restart();
                var command = new GrabOrderCommand(ObjectId.GenerateNewStringId(), orderId, operSoufunId, operSoufunName, ownerSoufunId);
                var result  = _commandService.ExecuteAsync(command, CommandReturnType.EventHandled).WaitResult <AsyncTaskResult <CommandResult> >(5000);
                //var result = commandService.SendAsync(command);
                timer.Stop();
                System.Console.WriteLine("当前Command通过ExecuteAsync方法执行成功的时间为:[{0} ms], OrderId为: [{1}]", timer.ElapsedMilliseconds, orderId);
                count++;
                orderId = "ENODE_TEST_" + count;
                ownerSoufunId++;
                System.Console.ReadKey();
            }
            #endregion

            System.Console.ReadKey();
        }
        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));
            }
        }