public IExecuteResult ExecuteCommand(string[] args)
        {
            var executeResult = new ExecuteResult { Name = Resources.Common.CreateOPN_Name };
            IExecuteResult finalResult = executeResult;
            try
            {
                var parser = new CreateOPNFromManifestArgumentParser();
                parser.Parse(args);

                var executable = new CreateOPNFromManifestExecutable { ManifestFiles = parser.ManifestFiles, ManifestDirectory = parser.ManifestDirectory };
                finalResult = executable.Execute();
                executeResult.ResultCode = (int)ResultCodes.Success;
            }
            catch (Exception e)
            {
                var executeError = new ExecuteError { ErrorText = e.Message };
                executeResult.ErrorsStore.Add(executeError);
                executeResult.ResultCode = (int)ResultCodes.Fail;
            }
            return finalResult;
        }
Exemplo n.º 2
0
        public GuiMacroResult Execute(string asWhere, string asMacro, ExecuteResult aCallbackResult)
        {
            if (ConEmuCD == IntPtr.Zero)
                return GuiMacroResult.gmrDllNotLoaded;

            new Thread(() =>
            {
                // Don't block application termination
                Thread.CurrentThread.IsBackground = true;
                // Start GuiMacro execution
                try
                {
                    ExecuteHelper(asWhere, asMacro, aCallbackResult);
                }
                catch (GuiMacroException e)
                {
                    aCallbackResult(GuiMacroResult.gmrException, e.Message);
                }
            }).Start();

            return GuiMacroResult.gmrPending;
        }
        public IExecuteResult Execute()
        {
            var executeResult = new ExecuteResult { Name = Common.ClearManifest_Name };
            try
            {
                //detect Message analyzer path

                string analyzerPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), @"Microsoft\MessageAnalyzer\");

                //if not found throw exception
                if (!Directory.Exists(analyzerPath))
                {
                    throw new Exception(string.Format(Common.Format_MessageAnalyzerNotInstalled, analyzerPath));
                }

                IEnumerable<string> list = null;
                if (this.ManifestFiles != null && this.ManifestFiles.Count > 0)
                {
                    list = this.ManifestFiles;
                }

                if (list == null)
                {
                    if (this.ManifestDirectory != null)
                    {
                        list = Directory.EnumerateFiles(this.ManifestDirectory, "*.etwManifest.man");
                    }
                    else
                    {
                        list = new string[] { };
                    }
                }
                else
                {
                    if (this.ManifestDirectory != null)
                    {
                        list = list.Union(Directory.EnumerateFiles(this.ManifestDirectory, "*.etwManifest.man"));
                    }
                }

                foreach (var file in list)
                {
                    var fi = new FileInfo(file);
                    if (!fi.Exists)
                    {
                        throw new Exception(string.Format(Common.Format_FileNotFound, fi.FullName));
                    }

                    //find etw provider id
                    XmlNamespaceManager nsMgr = new XmlNamespaceManager(new NameTable());
                    nsMgr.AddNamespace("etw", "http://schemas.microsoft.com/win/2004/08/events");
                    XDocument document = XDocument.Load(fi.FullName);

                    //find cache entries in analyzer path
                    Guid providerID;
                    string providerName;

                    XElement providerElement = document.XPathSelectElement("/etw:instrumentationManifest/etw:instrumentation/etw:events/etw:provider", nsMgr);
                    if (providerElement != null)
                    {
                        providerName = providerElement.Attribute("name").Value;
                        providerID = Guid.Parse(providerElement.Attribute("guid").Value);
                    }
                    else
                    {
                        throw new Exception(string.Format(Common.Format_ProviderNotFound));
                    }

                    ToolkitHelper.DeleteETWProviderCache(analyzerPath, providerName);
                }
            }
            catch (Exception e)
            {
                var executeError = new ExecuteError { ErrorText = e.Message };
                executeResult.ErrorsStore.Add(executeError);
            }
            LastResult = executeResult;
            return LastResult;
        }
Exemplo n.º 4
0
        public Frame Process(GlInput input)
        {
            if (input.KeyTime(System.Windows.Input.Key.Escape) == 1)
            {
                return(null);
            }
            if (GameForm.UserWantsToClose && !GameForm.GameInBackgroundRunning)
            {
                return(null);
            }
            if (input.KeyTime(System.Windows.Input.Key.P) == 1)
            {
                PauseButtonPressed   = !PauseButtonPressed;
                _gameForm.GamePaused = PauseButtonPressed;
            }
            else
            {
                PauseButtonPressed = _gameForm.GamePaused;
            }

            _gameForm.UserWantsPauseAfterTurn |= input.KeyTime(System.Windows.Input.Key.Oem4) == 1;//кнопка открытая квадратная скобка, или русская буква х

            bool goToBeforeRoundAfterDrawing = false;

            if (!PauseButtonPressed)
            {
                //фазы лесенкой, чтобы можно было хоть по всем пройтись

                if (_processPhase == EProcessPhase.beforeRound)
                {
                    if (_game.GameFinished)
                    {
                        GoToPhase(EProcessPhase.gameFinished);
                    }
                    else
                    {
                        if (_gameMode == EGameMode.localWithHuman)
                        {
                            GoToPhase(EProcessPhase.getTurnsOfNextRound);
                        }
                        else if (_gameMode == EGameMode.localWithoutHuman || _gameMode == EGameMode.replayFile)
                        {
                            if (_allRounds.ContainsKey(_game.roundNumber))
                            {
                                _allRounds.TryGetValue(_game.roundNumber, out _currentRound);
                                GoToPhase(EProcessPhase.processRound);
                            }
                            else
                            {
                                if (_gameMode == EGameMode.replayFile)
                                {
                                    _game.GameFinished = true;
                                    GoToPhase(EProcessPhase.gameFinished);
                                }
                            }
                            //  else
                            //  {
                            //      if (_game.roundNumber > 5)
                            //      {
                            //           _gameForm.InfoAction = "Рекомендуем снизить скорость просмотра";
                            //      }
                            // }
                        }
                        //иначе остаемся крутиться в before round, пока во втором потоке не сформируется ход
                    }
                }

                if (_processPhase == EProcessPhase.getTurnsOfNextRound)
                {
                    bool humanTurnWasAdded = false;
                    while (_currentRound.turns.Count < _currentPlayerOrder.Count)
                    {
                        var player = _currentPlayerOrder[_currentRound.turns.Count];
                        if (player.controlledByHuman)
                        {
                            if (humanTurnWasAdded && FrameworkSettings.ForInnerUse.GetAllUserTurnsImmediately == false)
                            {
                                break;
                            }

                            var turn = _game.TryGetHumanTurn(player, input);
                            if (turn != null)
                            {
                                turn.input = _game.GetInputFile(player);
                                _currentRound.turns.Add(turn);
                                humanTurnWasAdded = true;
                            }
                            else
                            {
                                break;
                            }
                        }
                        else
                        {
                            ExternalProgramExecuter epe =
                                new ExternalProgramExecuter(player.programAddress, "input.txt", "output.txt", _settings[_currentGameNumber].JavaPath, _settings[_currentGameNumber].PythonPath);

                            string inputFile = _game.GetInputFile(player);
                            string output;
                            string comment; //exitCode, нигде не используется

                            GameForm.GameInBackgroundRunning = true;
                            ExecuteResult res = epe.Execute(inputFile, FrameworkSettings.ExecutionTimeLimitSeconds, out output, out comment);
                            GameForm.GameInBackgroundRunning = false;

                            var turn = _game.GetProgramTurn(player, output, res, ExternalProgramExecuter.ExecuteResultToString(res));
                            turn.input = inputFile;
                            _currentRound.turns.Add(turn);
                        }
                    }

                    if (_currentRound.turns.Count == _currentPlayerOrder.Count)
                    {
                        GoToPhase(EProcessPhase.processRound);
                    }
                }

                if (_processPhase == EProcessPhase.waitUntilAnimationFinished)
                {
                    UpdateAnimationStage();
                    if (animationFinished)
                    {
                        goToBeforeRoundAfterDrawing = true;
                    }
                }

                if (_processPhase == EProcessPhase.gameFinished)
                {
                    if (input.KeyTime(System.Windows.Input.Key.Enter) == 1)
                    {
                        bool success = TryInitNextGame();
                        if (!success)
                        {
                            return(null);
                        }
                    }
                }
            }

            Frame frame = new Frame();

            _game.DrawAll(frame, animationStage, animationFinishStage, _processPhase == EProcessPhase.getTurnsOfNextRound, input);
            if (_currentRound != null)
            {
                DrawAndProcessTimeline(frame, input);
            }

            if (goToBeforeRoundAfterDrawing)
            {
                GoToPhase(EProcessPhase.beforeRound);
            }

            _game.frameNumber++;



            return(frame);
        }
Exemplo n.º 5
0
        protected static ExecuteResult ExecuteProcess(string executionFile, string workingPath, string arguments, bool waitForExit, bool lowPriority)
        {
            SetEnvironmentVariable();
            ProcessStartInfo psi = new ProcessStartInfo
            {
                FileName = executionFile,
                Arguments = arguments,
                CreateNoWindow = true,
                UseShellExecute = false,
                RedirectStandardOutput = true,
                RedirectStandardError = true,
                StandardOutputEncoding = Encoding.ASCII,
                WorkingDirectory=workingPath
            };

            ExecuteResult er = new ExecuteResult();
            er.process = Process.Start(psi);

            if (waitForExit) backgroundProcess = er.process;

            if (lowPriority)
            {
                try
                {
                    er.process.PriorityClass = ProcessPriorityClass.Idle;
                }
                catch	// Exception may occur if process finishing or already finished
                {
                }
            }

            if (waitForExit)
            {
                ArrayList lines = new ArrayList();
                string line;

                // Read output stream
                while ((line = er.process.StandardOutput.ReadLine()) != null)
                    lines.Add(line);

                er.processOutput = String.Join("\n", (string[])lines.ToArray(typeof(string)));
                lines.Clear();

                // Read error stream
                while ((line = er.process.StandardError.ReadLine()) != null)
                    lines.Add(line);

                er.processError = String.Join("\n", (string[])lines.ToArray(typeof(string)));
                lines.Clear();

                er.process.WaitForExit();

                if (er.process.ExitCode != 0 && er.processError.Length > 0)
                    OnErrorAdded(workingPath, er.processError);

                if ((uint)er.process.ExitCode == 0xc0000142)		// STATUS_DLL_INIT_FAILED - Occurs when Windows shutdown in progress
                {
                    Application.Exit();

                    if (Thread.CurrentThread == MainForm.statusThread)
                        Thread.CurrentThread.Abort();
                }

                backgroundProcess = null;
            }
            else
            {
                er.processOutput = "";
                er.processError = "";
            }

            return er;
        }
Exemplo n.º 6
0
        /// <summary>
        ///     对module配置与参数进行基础验证,子类重写后需要显式调用并判定返回值,如返回值不为Success,则不再执行子类后续逻辑
        /// </summary>
        /// <param name="parameter">参数</param>
        public override ExecuteResult <ITaskResult[]> Execute(TaskParameter parameter)
        {
            var baseResult = base.Execute(parameter);

            if (baseResult.Status != ResultStatus.Success)
            {
                return(ExecuteResult <ITaskResult[]> .Cancel("未找到触发会员的Parent Map."));
            }

            var mapList = new List <ParentMap>();
            var userMap = Resolve <IUserMapService>().GetParentMapFromCache(ShareOrderUser.Id);
            var map     = userMap.ParentMap.DeserializeJson <List <ParentMap> >();

            if (map == null)
            {
                return(ExecuteResult <ITaskResult[]> .Cancel("未找到触发会员的Parent Map."));
            }

            IList <ITaskResult> resultList = new List <ITaskResult>();
            long lvKey     = 0; //用于判断级差
            long userIdKey = 0; //第一个营业部userID要记录
            var  iKey      = false;
            var  firLv     = false;

            foreach (var teamRangCultivateItem in Configuration.TeamRangCultivateItems)
            {
                // 将自己加上去
                var parentMap = new ParentMap
                {
                    UserId      = ShareOrderUser.Id,
                    ParentLevel = 0
                };

                map = map.AddBefore(parentMap).ToList();

                for (var i = 0; i < TeamLevel; i++)
                {
                    var level  = 0;
                    var tempLv = 0;
                    if (map.Count < i + 1)
                    {
                        break;
                    }

                    var item  = map[i];
                    var grade = Resolve <IGradeService>().GetGrade(teamRangCultivateItem.GradeId);
                    if (grade == null)
                    {
                        break;
                    }

                    var gradeList = Resolve <IAutoConfigService>().GetList <UserGradeConfig>();

                    base.GetShareUser(item.UserId, out var shareUser);
                    var shareGradeContribute = gradeList.FirstOrDefault(u => u.Id == shareUser.GradeId).Contribute;

                    //如果是营业部 则不再判断其他等级
                    if (shareGradeContribute >= 500000)
                    {
                        level = 4;
                        iKey  = true;

                        if (i == 0)
                        {
                            userIdKey = shareUser.Id;
                        }
                    }

                    if (shareGradeContribute >= 500000)
                    {
                        level = 4;
                    }

                    if (shareGradeContribute >= 100000 && shareGradeContribute < 500000)
                    {
                        level = 3;
                    }

                    if (shareGradeContribute >= 10000 && shareGradeContribute < 100000)
                    {
                        level = 2;
                    }

                    if (shareGradeContribute >= 0 && shareGradeContribute < 10000)
                    {
                        level = 1;
                    }

                    if (i == 0)
                    {
                        lvKey = level; //获得下单人等级
                    }

                    if (level < lvKey)
                    {
                        continue;
                    }

                    if (i >= 4)
                    {
                        break;
                    }

                    #region 区分判断

                    var tempContribute =
                        gradeList.FirstOrDefault(u => u.Id == teamRangCultivateItem.GradeId).Contribute;
                    if (tempContribute >= 500000)
                    {
                        tempLv = 4;
                    }

                    if (tempContribute >= 100000 && tempContribute < 500000)
                    {
                        tempLv = 3;
                    }

                    if (tempContribute >= 10000 && tempContribute < 100000)
                    {
                        tempLv = 2;
                    }

                    if (tempContribute >= 0 && tempContribute < 10000)
                    {
                        tempLv = 1;
                    }

                    #endregion 区分判断

                    if (level == tempLv)
                    {
                        if (userIdKey == shareUser.Id && i != 0)
                        {
                            continue;
                        }

                        if (level == 0)
                        {
                            continue;
                        }

                        var mapSingle = mapList.FirstOrDefault(u => u.UserId == level);
                        if (mapSingle == null)
                        {
                            var temp = new ParentMap
                            {
                                UserId      = level,
                                ParentLevel = 1 //计算该等级出现次数
                            };
                            //如果第一个加入的值为营业厅 则不判断其他
                            if (mapList.Count() == 0 && level == 4)
                            {
                                iKey = true;
                            }

                            //如果等级小于报单人 则跳过
                            if (lvKey <= level)
                            {
                                mapList.Add(temp);
                            }

                            continue;
                        }
                        else
                        {
                            var num = mapList.FirstOrDefault(u => u.UserId == level).ParentLevel;
                            mapList.Remove(mapSingle);
                            var temp = new ParentMap
                            {
                                UserId      = level,
                                ParentLevel = num + 1 //用于计算该等级出现次数
                            };
                            mapList.Add(temp);

                            mapSingle.ParentLevel = num + 1;
                        }

                        var gradeName = Resolve <IGradeService>().GetGrade(shareUser.GradeId);
                        if (mapSingle.ParentLevel == 2)
                        {
                            if (lvKey > mapSingle.UserId)
                            {
                                continue;
                            }

                            lvKey = mapSingle.UserId;

                            var intro       = $"{gradeName.Name}育成一代";
                            var shareAmount = BaseFenRunAmount * teamRangCultivateItem.FristAmount;
                            if (shareAmount > 0)
                            {
                                CreateResultList(shareAmount, ShareOrderUser, shareUser, parameter, Configuration,
                                                 resultList, intro);
                            }
                        }

                        if (mapSingle.ParentLevel == 3 && mapSingle.UserId == 4)
                        {
                            var intro       = $"{gradeName.Name}育成二代";
                            var shareAmount = BaseFenRunAmount * teamRangCultivateItem.SecondAmount;
                            if (shareAmount > 0)
                            {
                                CreateResultList(shareAmount, ShareOrderUser, shareUser, parameter, Configuration,
                                                 resultList, intro);
                            }

                            break;
                        }

                        if (mapSingle.ParentLevel >= 3)
                        {
                            break;
                        }
                    }
                }
            }

            return(ExecuteResult <ITaskResult[]> .Success(resultList.ToArray()));
        }
Exemplo n.º 7
0
        /// <summary>
        ///     Executes the specified parameter.
        /// </summary>
        /// <param name="parameter">参数</param>
        public override ExecuteResult <ITaskResult[]> Execute(TaskParameter parameter)
        {
            if (Configuration == null)
            {
                return(ExecuteResult <ITaskResult[]> .Fail("configuration is null."));
            }
            //进行参数判断
            if (parameter == null)
            {
                throw new ArgumentNullException(nameof(parameter));
            }

            //判断通用交易订单
            if (!parameter.TryGetValue("ShareOrderId", out long shareOrderId))
            {
                return(ExecuteResult <ITaskResult[]> .Fail("分润订单ShareOrderId未找到."));
            }

            var shareOrder = Ioc.Resolve <IShareOrderService>().GetSingle(r => r.Id == shareOrderId);

            if (shareOrder == null)
            {
                return(ExecuteResult <ITaskResult[]> .Fail($"分润订单为空,shareorder with id {shareOrderId} is null."));
            }

            if (shareOrder.Status != ShareOrderStatus.Pending)
            {
                return(ExecuteResult <ITaskResult[]> .Fail("分润订单状态不是代理状态,不触发分润."));
            }

            if (shareOrder.Amount <= 0)
            {
                return(ExecuteResult <ITaskResult[]> .Fail("分润订单金额小于0,shareorder with amount is less than zero"));
            }

            if (Configuration.PriceLimitType == PriceLimitType.OrderPrice)
            {
                if (shareOrder.Amount > Configuration.BaseRule.MaxAmount && Configuration.BaseRule.MaxAmount > 0)
                {
                    return(ExecuteResult <ITaskResult[]> .Fail(
                               $"分润订单金额{shareOrder.Amount} > 最大触发金额{Configuration.BaseRule.MinimumAmount}, 退出模块"));
                }

                if (shareOrder.Amount < Configuration.BaseRule.MinimumAmount && Configuration.BaseRule.MinimumAmount > 0
                    )
                {
                    return(ExecuteResult <ITaskResult[]> .Fail(
                               $"分润订单金额{shareOrder.Amount} <= 最小触发金额{Configuration.BaseRule.MinimumAmount}, 退出模块"));
                }
            }

            ShareOrder = shareOrder;

            //判断交易用户
            var user = Ioc.Resolve <IUserService>().GetSingle(shareOrder.UserId);

            if (user == null)
            {
                return(ExecuteResult <ITaskResult[]> .Fail(
                           $"shareorder with id {shareOrderId} ,shareorder user is null."));
            }

            ShareOrderUser = user;
            //检查分润用户
            var gradeResult = CheckOrderUserTypeAndGrade();

            if (gradeResult.Status != ResultStatus.Success)
            {
                return(gradeResult);
            }

            //检查分润比例
            var distriRatio = Configuration.DistriRatio.Split(',');

            if (distriRatio == null || distriRatio.Length == 0)
            {
                return(ExecuteResult <ITaskResult[]> .Cancel("模块需要设置分润比例但未设置."));
            }

            Ratios = distriRatio.ToList();
            return(ExecuteResult <ITaskResult[]> .Success());
        }
Exemplo n.º 8
0
 public async Task <IExecuteResult> SearchAsync(PagingInput <NpsServerSearchInput> input)
 {
     return(ExecuteResult.Ok(await _npsServerService.SearchAsync(input)));
 }
Exemplo n.º 9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="request"></param>
        /// <param name="okMessage"></param>
        /// <returns></returns>
        private ExecuteResult <CardInfoResponse> GetInfo(GetCardInfoRequest request, string okMessage)
        {
            if (request == null || request.AuthUser == null)
            {
                return(new ExecuteResult <CardInfoResponse>(null)
                {
                    StatusCode = StatusCode.ClientError, Message = "参数错误"
                });
            }

            var entities = _cardRepository.GetListForUserId(request.AuthUser.Id, CardType.YintaiMemberCard, DataStatus.Normal).ToList();

            if (entities.Count == 0)
            {
                return(new ExecuteResult <CardInfoResponse>(null)
                {
                    StatusCode = StatusCode.ClientError, Message = "你还没有绑定会员卡,请您先绑定"
                });
            }

            if (entities.Count > 1)
            {
                return(new ExecuteResult <CardInfoResponse>(null)
                {
                    StatusCode = StatusCode.InternalServerError, Message = "服务器开小差了,请您等等再试"
                });
            }

            var entity = entities[0];

            var pointResult = _groupCardService.GetPoint(new GroupCardPointRequest
            {
                CardNo = entity.CardNo
            });

            var cardProfile = JsonExtension.FromJson_ <CardProfile>(entity.CardProfile);

            if (pointResult.Success)
            {
                var response = new CardInfoResponse
                {
                    Point    = pointResult.Point,
                    CardLvl  = cardProfile.Lvl,
                    CardNo   = entity.CardNo,
                    CardType = cardProfile.Type,
                    User_Id  = entity.User_Id,
                    LastDate = DateTime.Now,
                    Id       = entity.Id
                };

                var result = new ExecuteResult <CardInfoResponse>(response);

                if (!String.IsNullOrEmpty(okMessage))
                {
                    result.Message = okMessage;
                }

                return(result);
            }

            return(new ExecuteResult <CardInfoResponse>(null)
            {
                StatusCode = StatusCode.InternalServerError, Message = String.Concat("查询积分失败,", pointResult.Desc)
            });
        }
Exemplo n.º 10
0
        public IHttpActionResult InsertBookWithModel(BookModel Model)
        {
            ExecuteResult Result = _BookService.InsertBookWithModel(Model);

            return(Json(Result));
        }
Exemplo n.º 11
0
        public IHttpActionResult UpdateBook(BookModel Model)
        {
            ExecuteResult Result = _BookService.UpdateBook(Model);

            return(Json(Result));
        }
    override public ExecuteResult Execute(HandlerStartInfo startInfo)
    {
        ExecuteResult result = null;

        if (startInfo.Parameters != null)
        {
            parameters = HandlerUtils.Deserialize <CommandHandlerParameters>(startInfo.Parameters);
        }

        try
        {
            OnLogMessage("Execute", $"Running Handler As User [{System.Security.Principal.WindowsIdentity.GetCurrent().Name}]");

            Validate();

            // Replace Any "Special" Handler Variables In Arguments or ReplaceWith elements
            variables            = HandlerUtils.GatherVariables(this, startInfo);
            parameters.Arguments = HandlerUtils.ReplaceHandlerVariables(parameters.Arguments, variables);
            if (parameters.Expressions != null)
            {
                foreach (RegexArguments expression in parameters.Expressions)
                {
                    expression.ReplaceWith = HandlerUtils.ReplaceHandlerVariables(expression.ReplaceWith, variables);
                }
            }

            String args = RegexArguments.Parse(parameters.Arguments, parameters.Expressions);

            bool isDryRun = startInfo.IsDryRun && !(config.SupportsDryRun);
            if (startInfo.IsDryRun && config.SupportsDryRun)
            {
                OnLogMessage("Execute", "DryRun Flag is set, but plan config indicates the command supports DryRun.  Command will execute.");
            }

            if (String.IsNullOrEmpty(config.RunOn))
            {
                SecurityContext runAs = startInfo.RunAs;
                if (runAs != null && runAs.HasCrypto)
                {
                    runAs = startInfo.RunAs.GetCryptoValues(startInfo.RunAs.Crypto, false);
                }
                result = LocalProcess.RunCommand(config.Command, args, config.WorkingDirectory, config.TimeoutMills, config.TimeoutStatus, SynapseLogger, null, isDryRun, config.ReturnStdout, runAs?.Domain, runAs?.UserName, runAs?.Password);
            }
            else
            {
                result = WMIUtil.RunCommand(config.Command, args, config.RunOn, config.WorkingDirectory, config.TimeoutMills, config.TimeoutStatus, config.KillRemoteProcessOnTimeout, SynapseLogger, config.RunOn, isDryRun, config.ReturnStdout);
            }

            if (result.Status == StatusType.None)
            {
                result.Status = HandlerUtils.GetStatusType(result.ExitCode, config.ValidExitCodes);
            }
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
            Console.WriteLine(e.StackTrace);
            throw e;
        }

        OnLogMessage(config.RunOn, "Command finished with exit code = " + result.ExitCode + ".  Returning status [" + result.Status + "].");

        return(result);
    }
Exemplo n.º 13
0
        public IHttpActionResult InsertBook(string BookName, string BookDesc, int BookQty)
        {
            ExecuteResult Result = _BookService.InsertBook(BookName, BookDesc, BookQty);

            return(Json(Result));
        }
        /// <summary>
        ///     开始执行分润
        ///     对module配置与参数进行基础验证,子类重写后需要显式调用并判定返回值,如返回值不为Success,则不再执行子类后续逻辑
        /// </summary>
        /// <param name="parameter">参数</param>
        /// <returns>ExecuteResult&lt;ITaskResult[]&gt;.</returns>
        public override ExecuteResult <ITaskResult[]> Execute(TaskParameter parameter)
        {
            var baseResult = base.Execute(parameter);

            if (baseResult.Status != ResultStatus.Success)
            {
                return(baseResult);
            }

            IList <ITaskResult> resultList = new List <ITaskResult>();

            // 开始计算直推奖
            //当前下单用户
            var user = Resolve <IUserService>().GetSingle(ShareOrder.UserId);

            base.GetShareUser(user.ParentId, out var shareUser); //从基类获取分润用户
            if (shareUser == null)
            {
                return(ExecuteResult <ITaskResult[]> .Cancel("推荐用户不存在"));
            }

            var ratio       = Convert.ToDecimal(Ratios[0]);
            var shareAmount = BaseFenRunAmount * ratio;                                                     //分润金额

            CreateResultList(shareAmount, ShareOrderUser, shareUser, parameter, Configuration, resultList); //构建分润参数

            // 开始计算管理分红
            var userMap = Resolve <IUserMapService>().GetParentMapFromCache(shareUser.Id);
            var map     = userMap.ParentMap.DeserializeJson <List <ParentMap> >();

            if (map == null)
            {
                return(ExecuteResult <ITaskResult[]> .Cancel("未找到触发会员的Parent Map."));
            }

            for (var i = 0; i < map.Count; i++)
            {
                // 如果大于团队层数
                if (i + 1 > Configuration.TeamLevel)
                {
                    break;
                }

                var item = map[i];
                GetShareUser(item.UserId, out shareUser); //从基类获取分润用户
                if (shareUser == null)
                {
                    continue;
                }
                // 每上一级50%
                var itemRatio = Math.Pow(Convert.ToDouble(Configuration.ManagerRatio), Convert.ToDouble(i + 1))
                                .ToDecimal() * ratio;
                if (itemRatio <= 0)
                {
                    continue;
                }

                shareAmount = BaseFenRunAmount * itemRatio;                                                     //分润金额

                CreateResultList(shareAmount, ShareOrderUser, shareUser, parameter, Configuration, resultList); //构建分润参数
            }

            return(ExecuteResult <ITaskResult[]> .Success(resultList.ToArray()));
        }
Exemplo n.º 15
0
        public Turn GetProgramTurn(Player player, string output, ExecuteResult executionResult, string executionResultRussianComment)
        {
            var turn = new Turn
            {
                shortStatus     = executionResultRussianComment,
                output          = output,
                colorOnTimeLine = player.team == 0 ? Color.DarkRed : Color.DarkGreen, //Color.FromArgb(148,36,26) : Color.FromArgb(85,110,84),//
                nameOnTimeLine  = roundNumber.ToString()
            };                                                                        //todo now in interface just edit turn, no return

            turn.manAims = new List <SerializableVector2d>();                         //todo заплатка
            for (int i = 0; i < 1; i++)
            {
                turn.manAims.Add(new SerializableVector2d(player.manList[i].position));
            }


            if (executionResult == ExecuteResult.Ok)
            {
                var reader = new StringReader(output);



                var playerAims = new List <Vector2d>();
                try
                {
                    for (int i = 0; i < 1; i++)
                    {
                        var s = reader.ReadLine().Split(' ');
                        playerAims.Add(new Vector2d(double.Parse(s[0].Replace(",", ".")), double.Parse(s[1].Replace(",", "."))));
                        CheckDoubleWithException(playerAims.Last().X);
                        CheckDoubleWithException(playerAims.Last().Y);
                    }

                    turn.manAims = playerAims.Select(x => new SerializableVector2d(x)).ToList();
                }
                catch
                {
                    turn.fontOnTimeLine = EFont.timelineError;
                    turn.shortStatus    = "Неправильный формат вывода";
                    return(turn);
                }

                try
                {
                    var nextString = reader.ReadLine();
                    if (nextString.StartsWith("memory "))
                    {
                        player.memoryFromPreviousTurn = nextString.Substring(7);
                        turn.shortStatus += ". Использовано запоминание";
                    }
                    else
                    {
                        player.memoryFromPreviousTurn = null;
                    }


                    return(turn);
                }
                catch
                {
                    return(turn);
                }
            }
            else
            {
                turn.fontOnTimeLine = EFont.timelineError;
            }
            return(turn);
        }
Exemplo n.º 16
0
        private async Task CommandExecutedAsync(Optional <CommandInfo> command, ICommandContext context, IResult result)
        {
            // Null is success, because some modules returns null after success and library always returns ExecuteResult.
            if (result == null)
            {
                result = ExecuteResult.FromSuccess();
            }

            if (!result.IsSuccess && result.Error != null)
            {
                string reply = "";

                string moreInfo = "";
                if (command.IsSpecified)
                {
                    moreInfo = $"\n*Pro vice informací zadej `{Configuration["Prefix"]}help {command.Value.Aliases.First().Split(' ', 2)[0]}`*";
                }

                switch (result.Error.Value)
                {
                case CommandError.Unsuccessful when result is CommandRedirectResult crr && !string.IsNullOrEmpty(crr.NewCommand):
                    await CommandService.ExecuteAsync(context, crr.NewCommand, Provider);

                    break;

                case CommandError.UnmetPrecondition:
                case CommandError.Unsuccessful:
                    reply = result.ErrorReason;
                    break;

                case CommandError.ObjectNotFound when result is ParseResult parseResult && typeof(IUser).IsAssignableFrom(parseResult.ErrorParameter.Type):
                    ParameterInfo param = ((ParseResult)result).ErrorParameter;
                    var           pos   = param.Command.Parameters.ToList().IndexOf(param);

                    reply = $"Nemohl jsem najít uživatele zadaného v {pos + 1}. argumentu.\n> {command.Value.GetCommandFormat(Configuration["Prefix"], param)}{moreInfo}";
                    break;

                case CommandError.ParseFailed:
                    param = ((ParseResult)result).ErrorParameter;
                    pos   = param.Command.Parameters.ToList().IndexOf(param);

                    var typeName = param.Type.Name;

                    if (typeName == "Int32")
                    {
                        typeName = "číslo";
                    }
                    if (typeName == "String")
                    {
                        typeName = "řetězec";
                    }

                    reply = $"V {pos + 1}. argumentu má být **{typeName}**\n> {command.Value.GetCommandFormat(Configuration["Prefix"], param)}{moreInfo}";
                    break;

                case CommandError.BadArgCount:
                    var firstLine = Configuration.GetSection("BadArgumentFirstLine").AsEnumerable().Where(o => o.Value != null).ToArray();

                    reply = $"{firstLine[ThreadSafeRandom.Next(firstLine.Length)].Value}\n> {command.Value.GetCommandFormat(Configuration["Prefix"])}{moreInfo}";
                    break;

                case CommandError.Exception:
                    await context.Message.AddReactionAsync(new Emoji("❌"));

                    break;
                }

                // Reply to command message without mentioning any user
                if (!string.IsNullOrEmpty(reply))
                {
                    await context.Message.ReplyAsync(reply, allowedMentions : new AllowedMentions {
                        MentionRepliedUser = false
                    });
                }
            }
        }
Exemplo n.º 17
0
    protected void Submit_Button_Click(object sender, EventArgs e)
    {
        string resultMessage = null;
        string serviceCaseNo = null;

        try
        {
            #region validation

            if (String.IsNullOrEmpty(this.CustomerName))
            {
                throw new ArgumentNullException("請填寫姓名");
            }

            if (String.IsNullOrEmpty(this.CustomerPhone))
            {
                throw new ArgumentNullException("請填寫連絡電話");
            }
            else if (this.CustomerPhone.StartsWith("09") && this.CustomerPhone.Length != 10)
            {
                throw new ArgumentException("電話號碼格式錯誤");
            }

            if (!this.HasCheckedIsFubonCustomer)
            {
                throw new ArgumentNullException("請選擇是否為XX保戶");
            }

            if (this.IsFubonCustomer)
            {
                if (String.IsNullOrEmpty(this.CustomerId))
                {
                    throw new ArgumentNullException("XX保戶請填寫身分證字號");
                }
                else if (!this.CheckId(this.CustomerId))
                {
                    throw new ArgumentException("身分證字號格式錯誤");
                }
            }

            if (String.IsNullOrEmpty(this.ServiceType))
            {
                throw new ArgumentNullException("請選擇服務類型");
            }

            if (String.IsNullOrEmpty(this.ContactDate))
            {
                throw new ArgumentNullException("請選擇方便聯絡時段");
            }
            else
            {
                string[] contactDateArray = this.ContactDate.Split(' ');
                DateTime tempDateTime;

                if (contactDateArray.Length != 2)
                {
                    throw new ArgumentNullException("方便聯絡時段格式錯誤");
                }

                if (!DateTime.TryParse(contactDateArray[0], out tempDateTime))
                {
                    throw new ArgumentNullException("方便聯絡時段日期格式錯誤");
                }
            }

            if (!this.IsAgreement)
            {
                throw new ArgumentNullException("請勾選個人資料保護法告知說明事項");
            }

            #endregion

            #region call api insert data

            string resultCode = null;

            ExecuteResult executeResult = null;

            this.O2OServiceInstance.AddO2oPoolForRecall(
                this.ServiceChennal, this.ServiceType, this.CustomerId, this.CustomerName, this.CustomerPhone, this.IsAgreement ? "Y" : String.Empty, DateTime.Parse(this.ContactDate.Split(' ')[0]).Date, this.ContactDate.Split(' ')[1],
                ref resultCode, ref resultMessage, ref serviceCaseNo);

            if (resultCode != "1")
            {
                if (serviceCaseNo == "")
                {
                    serviceCaseNo = "19900101";
                }

                executeResult = ProcErrSendMail(resultMessage, serviceCaseNo);

                if (executeResult.Code != "00")
                {
                    throw new Exception(executeResult.Message);
                }

                throw new Exception(resultMessage);
            }

            #endregion

            #region send SMS

            if (this.CustomerPhone.StartsWith("09") && this.CustomerPhone.Length == 10)
            {
                string contentTemplate = this.GetSmsContentTemplate();

                if (String.IsNullOrEmpty(contentTemplate))
                {
                    throw new ArgumentNullException("取得簡訊樣板發生錯誤");
                }

                string msgContent = contentTemplate
                                    .Replace("[@來電者姓名]", this.CustomerName)
                                    .Replace("[@聯絡時間]", this.ConnectionTime_DropDownList.SelectedItem.Text);

                executeResult = this.NotificationServiceInstance.SendSMS(new SmsData
                {
                    PhoneNumber = this.CustomerPhone,
                    MsgContent  = msgContent,
                    Timeout     = "24",
                    ExtraInfo   = new ExtraInfo
                    {
                        SysCode      = "O2O-4",
                        SysDesc      = "預約諮詢",
                        CaseNo       = serviceCaseNo,
                        CustomerId   = this.CustomerId,
                        CustomerName = this.CustomerName
                    }
                });

                if (executeResult.Code != "00")
                {
                    throw new Exception(executeResult.Message);
                }
            }

            #endregion

            this.Result_Label.ForeColor = System.Drawing.Color.Green;
            this.Result_Label.Text      = "預約完成,我們將盡速與您聯絡,謝謝。";
            this.Submit_Button.Enabled  = false;
        }
        catch (Exception)
        {
            //會產生驗證欄位也寄信
            //ProcErrSendMail(resultMessage, serviceCaseNo,"Exception");
            this.Result_Label.ForeColor = System.Drawing.Color.Red;
            this.Result_Label.Text      = "預約失敗,建議您來電客服中心0809000550,謝謝。";
        }
    }
Exemplo n.º 18
0
        /// <summary>
        ///     更新一个AdGroup
        /// </summary>
        /// <param name="userId">用户编号</param>
        /// <param name="accountId">账户编号</param>
        /// <param name="adGroup">需要更新的AdGroup</param>
        /// <param name="user">UC用户信息</param>
        /// <returns>返回执行后的结果</returns>
        /// <exception cref="ArgumentNullException">参数不能为空</exception>
        public IExecuteResult Update(uint userId, ulong accountId, AdGroup adGroup, UCUser user)
        {
            if (adGroup == null)
            {
                throw new ArgumentNullException("adGroup");
            }
            try
            {
                //获取参数的值
                object[] parameterValues = new object[] { adGroup.CampaignId, accountId, adGroup.AdGroupId, userId };
                //验证CampaignId、AccountId、AdGroup从属关系
                DataTable dt = _slaveDB.SpExecuteTable(SpName.SpIsNotExistByAccountIdAndCampaignIdAndAdGroupId,
                                                       ParametersObject.IsNotExistByAccountIdAndCampaignIdAndAdGroupId,
                                                       new object[] { accountId, adGroup.CampaignId, adGroup.AdGroupId, userId });
                if (dt.Rows.Count == 0)
                {
                    return(ExecuteResult.Fail(SystemErrors.NotFound, SpName.SpIsNotExistByAccountIdAndCampaignIdAndAdGroupId + ":Executed count = 0"));
                }
                //check publish id.
                if (!string.IsNullOrEmpty(adGroup.PublishId))
                {
                    string[] subIds = adGroup.PublishId.Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
                    foreach (string subId in subIds)
                    {
                        dt = _slaveDB.SpExecuteTable(SpName.SpGetAppByPublishId, ParametersObject.GetAppByPublishId, new object[] { subId });
                        if (dt.Rows.Count == 0)
                        {
                            return(ExecuteResult.Fail(SystemErrors.NotFound, string.Format("#There isn't any records indicated that this publish id: {0} is valid.", subId)));
                        }
                    }
                }
                dt = _slaveDB.SpExecuteTable(SpName.SpGetAdGroupByAdGroupId, ParametersObject.CheckAndGetAdGroup, parameterValues);
                if (dt.Rows.Count == 0)
                {
                    return(ExecuteResult.Fail(SystemErrors.NotFound, SpName.SpGetAdGroupByAdGroupId + ":Executed count = 0"));
                }
                //check account type.
                DataTable accountTypeDt = _slaveDB.SpExecuteTable(SpName.SpGetAccountTypeFromAccountDetail, ParametersObject.GetAccountTypeFromAccountDetail, new object[] { accountId });
                if (accountTypeDt.Rows.Count == 0)
                {
                    return(ExecuteResult.Fail(SystemErrors.NotFound, "#There isn't any accout accords current condition: AccountId: " + accountId));
                }
                AccountTypes accountTypes = (AccountTypes)byte.Parse(accountTypeDt.Rows[0]["AccountTypeID"].ToString());

                #region Different Login Platform Logical.

                UASToken token;
                if (!UASToken.TryParse(user.Token, out token))
                {
                    return(ExecuteResult.Fail(SystemErrors.AuthoriztionFail, "#Sadly, We cannot parse currently user's login token correctly."));
                }
                if (token.LoginType == LoginTypes.WebSiteLogin)
                {
                    adGroup.PricePolicy.DevPrice = decimal.Parse(dt.Rows[0]["AcBidPrice"].ToString());
                }

                #endregion


                if (decimal.Parse(dt.Rows[0]["AcBidPrice"].ToString()) != adGroup.PricePolicy.DevPrice)
                {
                    if (!user.IsAdministrator || accountTypes == AccountTypes.MediaAccount)
                    {
                        return(ExecuteResult.Fail(SystemErrors.BusinessObjIsNotSupported, "#Cannot update AcBidPrice field value when you were under the Administrator permission!!!"));
                    }
                }


                #region Details Validation.

                uint   dbAdContentId = (uint)(int)dt.Rows[0]["AdContentID"];
                string dbITunesApId  = Convert.IsDBNull(dt.Rows[0]["ITunesAppID"]) ? null : dt.Rows[0]["ITunesAppID"].ToString();
                if (adGroup.ActionType != 0)
                {
                    if (dbAdContentId < 2 || (dbAdContentId == 5 && adGroup.ITunesAppId != null))
                    {
                        return(ExecuteResult.Fail(SystemErrors.BusinessObjIsNotSupported, "#Cannot pass details validation."));
                    }
                    if (adGroup.ContentType.AdContentId != 7 && adGroup.ContentType.AdContentId != 8)
                    {
                        //AdContentID = 2,DeviceCategory的范围在2,3,4,5,6,7之内
                        //AdContentID = 3,DeviceCategory的范围在2,4,5,7之内
                        //AdContentID = 4,DeviceCategory的范围在3,6之内
                        //AdContentID = 5,DeviceCategory只能是8
                        string[] reqMsgDeviceCategory = adGroup.DeviceCategory.Split(',');
                        if (reqMsgDeviceCategory.Any(t => MidiatorGlobal.DeviceCategory[dbAdContentId.ToString()].Contains(t) == false))
                        {
                            return(ExecuteResult.Fail(SystemErrors.BusinessObjIsNotSupported, "#Cannot pass details validation."));
                        }
                        //AdContentID等于5的时候,ITunesAppID不能传值
                        if (dbAdContentId == 5 && !string.IsNullOrEmpty(adGroup.ITunesAppId.ToString()))
                        {
                            return(ExecuteResult.Fail(SystemErrors.BusinessObjIsNotSupported, "#Cannot pass details validation."));
                        }
                    }
                }
                #endregion

                //修改一条AdGroup的信息
                _masterDB.SpExecuteTable(SpName.SpUpdateAdGroup, ParametersObject.UpdateAdGroup, new object[]
                {
                    dt.Rows[0]["GroupID"]
                    , dt.Rows[0]["CampaignID"]
                    , dt.Rows[0]["AccountID"]
                    , dt.Rows[0]["MediaTypeID"]      //cannot update
                    , adGroup.Name
                    , Math.Round(adGroup.BidPrice, 2)
                    , adGroup.PricePolicy.DevPrice                                                                //dt.Rows[0]["AcBidPrice"]
                    , adGroup.Status
                    , dt.Rows[0]["DeliveryMode"]                                                                  //adGroup.DeliveryMode
                    , dt.Rows[0]["Weight"]                                                                        //adGroup.Weight
                    , dt.Rows[0]["AdActionID"]                                                                    //cannot update
                    , dt.Rows[0]["AdContentID"]                                                                   //cannot update
                    , adGroup.Targetings.TimeTargeting                                                            //dt.Rows[0]["WeekTimePeriodIDs"]
                    , Convert.IsDBNull(dt.Rows[0]["ThirdPartPlatformID"]) ? 0 : dt.Rows[0]["ThirdPartPlatformID"] //adGroup.ThirdpartyPlatformId
                    , adGroup.Targetings.FrequencyTargeting.MaxClicksEveryDayByDevice
                    , adGroup.Targetings.FrequencyTargeting.MaxImpressionsEveryDayByDevice
                    , adGroup.Targetings.FrequencyTargeting.MaxClicksSevenDaysByDevice
                    , adGroup.Targetings.FrequencyTargeting.MaxImpressionsSevenDaysByDevice
                    , adGroup.Targetings.FrequencyTargeting.MaxClicksEveryDay
                    , adGroup.Targetings.FrequencyTargeting.MaxImpressionsEveryDay
                    , adGroup.Targetings.FrequencyTargeting.MaxClicksPutIn
                    , adGroup.Targetings.FrequencyTargeting.MaxImpressionsPutIn
                    , adGroup.ITunesAppId
                    , userId
                    , adGroup.DeviceCategory
                    , adGroup.NetworkTypes
                    , adGroup.Targetings.DeviceTargeting.GetCatagoryString()
                    , adGroup.Targetings.DeviceTargeting.GetSDKString()
                    , adGroup.Targetings.DeviceTargeting.GetOSString()
                    , adGroup.Targetings.DeviceTargeting.GetOpString()
                    , adGroup.Targetings.DeviceTargeting.GetAppString()
                    , adGroup.ITunesAppCategoryId
                    , adGroup.CPAPrice
                    , adGroup.MaxImpressions
                    , adGroup.MaxClicks
                    , adGroup.MaxPerUserImpressions
                    , adGroup.PublishId
                    , adGroup.Targetings.TagTargeting.GetData(UserTagDirectionTypes.Forward) == null ? null : adGroup.Targetings.TagTargeting.GetData(UserTagDirectionTypes.Forward).Concat()
                    , adGroup.Targetings.TagTargeting.GetData(UserTagDirectionTypes.Backward) == null ? null : adGroup.Targetings.TagTargeting.GetData(UserTagDirectionTypes.Backward).Concat()
                    , adGroup.ITunesBundleId
                    , dt.Rows[0]["DisplayType"]      //cannot update
                });
                return(ExecuteResult.Succeed(true));
            }
            catch (Exception ex)
            {
                _tracing.Error(ex, null);
                return(ExecuteResult.Fail(SystemErrors.Unknown, ex.Message));
            }
        }
Exemplo n.º 19
0
        /// <summary>
        ///     对module配置与参数进行基础验证,子类重写后需要显式调用并判定返回值,如返回值不为Success,则不再执行子类后续逻辑
        /// </summary>
        /// <param name="parameter">参数</param>
        public override ExecuteResult <ITaskResult[]> Execute(TaskParameter parameter)
        {
            var baseResult = base.Execute(parameter);

            if (baseResult.Status != ResultStatus.Success)
            {
                return(ExecuteResult <ITaskResult[]> .Cancel("未找到触发会员的Parent Map."));
            }

            var userMap = Resolve <IUserMapService>().GetParentMapFromCache(ShareOrderUser.Id);
            var map     = userMap.ParentMap.DeserializeJson <List <ParentMap> >();

            if (map == null)
            {
                return(ExecuteResult <ITaskResult[]> .Cancel("未找到触发会员的Parent Map."));
            }

            IList <ITaskResult> resultList = new List <ITaskResult>();
            // 获取最大极差比例
            var maxRate = Configuration.TeamRangeRateItems.Max(r => r.MaxRate);

            for (var i = 0; i < TeamLevel; i++)
            {
                if (map.Count < i + 1)
                {
                    break;
                }

                var item = map[i];
                base.GetShareUser(item.UserId, out var shareUser); //从基类获取分润用户
                var shareGrade = Resolve <IGradeService>().GetGrade(shareUser.GradeId);
                if (shareGrade == null)
                {
                    continue;
                }

                var userRule = Configuration.TeamRangeRateItems.FirstOrDefault(r => r.GradeId == shareGrade.Id);
                if (userRule == null)
                {
                    continue;
                }
                //当前分润用户最大极差
                var shareUserRate = userRule.MaxRate;
                //剩余极差比例
                var ratio = maxRate - shareUserRate;
                if (ratio <= 0)
                {
                    continue;
                }

                var shareAmount = ratio * BaseFenRunAmount; // 极差分润
                CreateResultList(shareAmount, ShareOrderUser, shareUser, parameter, Configuration, resultList);

                // 计算推荐人的管理收益
                var parentUer = base.GetShareUser(shareUser.ParentId, out var shareParentShareUser);
                if (shareParentShareUser != null)
                {
                    var parentUserRule =
                        Configuration.TeamRangeRateItems.FirstOrDefault(r => r.GradeId == shareParentShareUser.GradeId);
                    if (parentUserRule != null)
                    {
                        var parentUserManagerRadio = parentUserRule.ManagerRate * shareAmount; // 管理收益
                        CreateResultList(parentUserManagerRadio, ShareOrderUser, shareParentShareUser, parameter,
                                         Configuration, resultList);
                    }
                }
            }
            //分期

            return(ExecuteResult <ITaskResult[]> .Success(resultList.ToArray()));
        }
Exemplo n.º 20
0
        /// <summary>
        ///     创建一个新的AdGroup
        /// </summary>
        /// <param name="userId">用户编号</param>
        /// <param name="accountId">账户编号</param>
        /// <param name="adGroup">需要被创建的AdGroup</param>
        /// <returns>返回执行后的结果</returns>
        /// <exception cref="ArgumentNullException">参数不能为空</exception>
        public IExecuteResult Create(uint userId, ulong accountId, AdGroup adGroup)
        {
            if (adGroup == null)
            {
                throw new ArgumentNullException("adGroup");
            }
            try
            {
                //获取参数的值
                object[] parameterValues = new object[] { accountId, adGroup.CampaignId, userId };

                //验证CampaignId和AccountId从属关系
                DataTable dt = _slaveDB.SpExecuteTable(SpName.SpIsNotExistByAccountIdAndCampaignId, ParametersObject.IsNotExistByAccountIdAndCampaignId, parameterValues);
                if (dt.Rows.Count == 0)
                {
                    return(ExecuteResult.Fail(SystemErrors.NotFound, SpName.SpIsNotExistByAccountIdAndCampaignId + ":Executed count = 0"));
                }
                //check publish id.
                if (!string.IsNullOrEmpty(adGroup.PublishId))
                {
                    string[] subIds = adGroup.PublishId.Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
                    foreach (string subId in subIds)
                    {
                        dt = _slaveDB.SpExecuteTable(SpName.SpGetAppByPublishId, ParametersObject.GetAppByPublishId, new object[] { subId });
                        if (dt.Rows.Count == 0)
                        {
                            return(ExecuteResult.Fail(SystemErrors.NotFound, string.Format("#There isn't any records indicated that this publish id: {0} is valid.", subId)));
                        }
                    }
                }

                //获取参数的值
                parameterValues = new object[]
                {
                    adGroup.CampaignId
                    , accountId
                    , adGroup.MediaTypeId
                    , adGroup.Name
                    , Math.Round(adGroup.BidPrice, 2)
                    , adGroup.PricePolicy.DevPrice
                    , adGroup.Status
                    , adGroup.DeliveryMode
                    , adGroup.Weight
                    , userId
                    , adGroup.Targetings.FrequencyTargeting.MaxClicksEveryDayByDevice
                    , adGroup.Targetings.FrequencyTargeting.MaxImpressionsEveryDayByDevice
                    , adGroup.Targetings.FrequencyTargeting.MaxClicksSevenDaysByDevice
                    , adGroup.Targetings.FrequencyTargeting.MaxImpressionsSevenDaysByDevice
                    , adGroup.Targetings.FrequencyTargeting.MaxClicksEveryDay
                    , adGroup.Targetings.FrequencyTargeting.MaxImpressionsEveryDay
                    , adGroup.Targetings.FrequencyTargeting.MaxClicksPutIn
                    , adGroup.Targetings.FrequencyTargeting.MaxImpressionsPutIn
                    , adGroup.ITunesAppId
                    , adGroup.ActionType
                    , adGroup.ContentType.AdContentId
                    , adGroup.Targetings.TimeTargeting
                    , adGroup.ThirdpartyPlatformId
                    , adGroup.DeviceCategory
                    , adGroup.NetworkTypes
                    , adGroup.Targetings.DeviceTargeting.GetCatagoryString()
                    , adGroup.Targetings.DeviceTargeting.GetSDKString()
                    , adGroup.Targetings.DeviceTargeting.GetOSString()
                    , adGroup.Targetings.DeviceTargeting.GetOpString()
                    , adGroup.Targetings.DeviceTargeting.GetAppString()
                    , adGroup.ITunesAppCategoryId
                    , adGroup.CPAPrice
                    , adGroup.MaxImpressions
                    , adGroup.MaxClicks
                    , adGroup.MaxPerUserImpressions
                    , adGroup.PublishId
                    , adGroup.Targetings.TagTargeting.GetData(UserTagDirectionTypes.Forward) == null ? null : adGroup.Targetings.TagTargeting.GetData(UserTagDirectionTypes.Forward).Concat()
                    , adGroup.Targetings.TagTargeting.GetData(UserTagDirectionTypes.Backward) == null ? null : adGroup.Targetings.TagTargeting.GetData(UserTagDirectionTypes.Backward).Concat()
                    , adGroup.ITunesBundleId
                    , adGroup.DisplayType
                };
                //创建一条Campaign的信息
                dt = _masterDB.SpExecuteTable(SpName.SpAddAdGroup
                                              , ParametersObject.CreateNewAdGroup
                                              , parameterValues);
                if (dt.Rows.Count == 0)
                {
                    return(ExecuteResult.Fail(SystemErrors.NotFound, SpName.SpAddAdGroup + ":Executed count = 0"));
                }
                return(ExecuteResult.Succeed((ulong)(long)dt.Rows[0]["GroupID"]));
            }
            catch (Exception ex)
            {
                _tracing.Error(ex, null);
                return(ExecuteResult.Fail(SystemErrors.Unknown, ex.Message));
            }
        }
Exemplo n.º 21
0
        private static ExecuteResult ExecuteAndParseCheck(SqlConnection m_sql_connection, CheckType m_checktype, string m_sqlscript)

        {
            ExecuteResult m_result     = new ExecuteResult();
            SqlCommand    m_sqlcommand = new SqlCommand(m_sqlscript);
            SqlDataReader m_sql_reader = null;
            string        m_servername = String.Empty;

            try
            {
                m_sqlcommand.Connection = m_sql_connection;
                Log.Debug("Executing SQL Command...");
                m_sql_reader = m_sqlcommand.ExecuteReader();
                Log.Debug("Done!");
                m_sqlcommand.Dispose();

                if (m_sql_reader != null && m_sql_reader.HasRows == true)
                {
                    string m_recovery_health        = string.Empty;
                    string m_synchronization_health = string.Empty;
                    string m_database_state         = string.Empty;
                    string m_primary_replica_node   = string.Empty;

                    switch (m_checktype)
                    {
                    case CheckType.AvailbilityGroup:

                        m_servername = GetSQLServerName(m_sql_connection);

                        if (string.IsNullOrWhiteSpace(m_servername))
                        {
                            throw new Exception("failed to get sql servername");
                        }

                        //we should get only one row here
                        m_sql_reader.Read();

                        m_primary_replica_node = GetValueByColumnName(m_sql_reader, "primary_replica");

                        m_synchronization_health = GetValueByColumnName(m_sql_reader, "synchronization_health_desc");

                        if (m_servername.Equals(m_primary_replica_node))
                        {
                            m_recovery_health = GetValueByColumnName(m_sql_reader, "primary_recovery_health_desc");
                        }
                        else
                        {
                            //we are on the secondary node
                            m_recovery_health = GetValueByColumnName(m_sql_reader, "secondary_recovery_health_desc");
                        }


                        if (m_synchronization_health.ToUpper().Equals("HEALTHY") && m_recovery_health.ToUpper().Equals("ONLINE"))
                        {
                            m_result.Output   = String.Format("CheckMSSQLAvailbilityGroup OK: Node Recovery State: {0}; Node Synchronization Health: {1}", m_recovery_health, m_synchronization_health);
                            m_result.ExitCode = 0;
                        }
                        else
                        {
                            m_result.Output   = String.Format("CheckMSSQLAvailbilityGroup CRITICAL: Node Recovery State: {0}; Node Synchronization Health: {1}", m_recovery_health, m_synchronization_health);
                            m_result.ExitCode = 2;
                        }

                        break;


                    case CheckType.AvailbilityGroupDatabases:

                        int m_count_crit = 0;

                        while (m_sql_reader.Read())

                        {
                            m_synchronization_health = GetValueByColumnName(m_sql_reader, "synchronization_health_desc");
                            m_database_state         = GetValueByColumnName(m_sql_reader, "database_state_desc");

                            if (!m_synchronization_health.ToUpper().Equals("HEALTHY") || !m_database_state.ToUpper().Equals("ONLINE"))
                            {
                                m_count_crit += 1;
                            }
                        }


                        if (m_count_crit >= 1)
                        {
                            m_result.Output   = String.Format("CheckMSSQLAvailbilityGroupDatabases CRITICAL: {0} Databases are not HEALTY or ONLINE", m_count_crit);
                            m_result.ExitCode = 2;
                        }
                        else
                        {
                            m_result.Output   = String.Format("CheckMSSQLAvailbilityGroupDatabases OK: All Databases are HEALTY and ONLINE");
                            m_result.ExitCode = 0;
                        }

                        break;

                    default:

                        throw new Exception("undefined checktype!");
                    }
                }
                else
                {
                    Log.Error("SQL Reader is null or has no rows!");
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex, ex.Message);
                m_result = null;
            }
            finally
            {
                if (m_sql_reader != null)
                {
                    m_sql_reader.Close();
                }
            }

            return(m_result);
        }
Exemplo n.º 22
0
        /// <summary>
        /// 执行结果
        /// </summary>
        /// <param name="config"></param>
        /// <param name="qn"></param>
        /// <returns></returns>
        public static string ExecuteResponse(HJ212Config config, string qn, ExecuteResult res)
        {
            string cp = string.Format("ExeRtn={0}", (int)res);

            return(MakeContent(config, MiddleCode.ExecuteResponse, cp, qn));
        }
Exemplo n.º 23
0
        public override ScmRepositoryStatusEx GetStatus()
        {
            if (!Directory.Exists(Path) && !File.Exists(Path))
            {
                OnErrorAdded(Path, "File or folder don't exist!");
                return(new ScmRepositoryStatusEx()
                {
                    status = ScmRepositoryStatus.Error
                });
            }

            try
            {
                string        arguments = String.Format("status -u --non-interactive --xml \"{0}\"", Path);
                ExecuteResult er        = ExecuteProcess(Config.SvnPath, Path, arguments, true, true);

                SvnXml.Create(er.processOutput);                // Because SVN may return non-valid XML in some cases?

                try
                {
                    //http://svn.collab.net/repos/svn/trunk/subversion/svn/status.c
                    //http://blog.wolfman.com/articles/category/svn

                    SvnXml.ParseXmlForStatus();

                    if (!SvnXml.ContainsKey("revision"))
                    {
                        OnErrorAdded(Path, "Folder not found in repository");
                        return(new ScmRepositoryStatusEx()
                        {
                            status = ScmRepositoryStatus.Error
                        });
                    }

                    if (SvnXml.ContainsKey("NeedUpdate"))
                    {
                        if (SvnXml.ContainsKey("Modified"))
                        {
                            return new ScmRepositoryStatusEx()
                                   {
                                       status = ScmRepositoryStatus.NeedUpdate_Modified
                                   }
                        }
                        ;

                        return(new ScmRepositoryStatusEx()
                        {
                            status = ScmRepositoryStatus.NeedUpdate
                        });
                    }

                    if (SvnXml.ContainsKey("Modified"))
                    {
                        return new ScmRepositoryStatusEx()
                               {
                                   status = ScmRepositoryStatus.UpToDate_Modified
                               }
                    }
                    ;

                    return(new ScmRepositoryStatusEx()
                    {
                        status = ScmRepositoryStatus.UpToDate
                    });
                }
                catch
                {
                    return(new ScmRepositoryStatusEx()
                    {
                        status = ScmRepositoryStatus.Error
                    });
                }
            }
            catch
            {
                return(new ScmRepositoryStatusEx()
                {
                    status = ScmRepositoryStatus.Unknown
                });
            }
        }
Exemplo n.º 24
0
 public Task continueWithTask(ExecuteResult arg0)
 {
     return(Call <Task>("continueWithTask", arg0));
 }
Exemplo n.º 25
0
 protected ExecuteResult <ITaskResult[]> FailAndLogError(string message)
 {
     Logger.LogError(message);
     return(ExecuteResult <ITaskResult[]> .Fail(message));
 }
Exemplo n.º 26
0
 void ICloneable <TransactionState> .FromReplica(TransactionState replica)
 {
     BlockIndex  = replica.BlockIndex;
     Transaction = replica.Transaction;
     Result      = replica.Result;
 }
Exemplo n.º 27
0
        private static async Task MessageReceived(SocketMessage socketMessage)
        {
            // Skip if this is not a real user
            if (socketMessage.Source == MessageSource.Webhook || socketMessage.Source == MessageSource.System)
            {
                return;
            }

            // Skip bots that aren't QA
            if (socketMessage.Source == MessageSource.Bot && socketMessage.Author.Id != 563718045806362642)
            {
                return;
            }

            // Get the SocketUserMessage
            SocketUserMessage userMessage = socketMessage as SocketUserMessage;

            // Create the CommandContext
            SocketCommandContext commandContext = new SocketCommandContext(DiscordClient, userMessage);

            // Ignore empty messages and bots
            if (commandContext.Message == null || commandContext.Message.Content.Length == 0)
            {
                return;
            }

            // Check if this message has a command
            int commandPosition = 0;

            if (userMessage.HasStringPrefix(Configuration.LoadedConfiguration.DiscordConfig.CommandPrefix, ref commandPosition))
            {
                // Trigger typing
                //await commandContext.Channel.TriggerTypingAsync();

                // Execute the command
                IResult result = await CommandService.ExecuteAsync(commandContext, commandPosition, null);

                if (!result.IsSuccess)
                {
                    switch (result.Error)
                    {
                    case CommandError.UnknownCommand:
                        //await DiscordUtil.SendErrorMessageByLocalizedDescription(commandContext.Guild, commandContext.Channel, "discord.error.unknown_command");
                        //
                        //break;

                        return;     // ignore

                    case CommandError.BadArgCount:
                        await DiscordUtil.SendErrorMessageByLocalizedDescription(commandContext.Guild, commandContext.Channel, "discord.error.bad_arguments");

                        break;

                    case CommandError.UnmetPrecondition:
                        // Get the PreconditionResult
                        PreconditionResult preconditionResult = (PreconditionResult)result;

                        // Check if the error reason contains a localizable
                        string description = result.ErrorReason;
                        if (result.ErrorReason.StartsWith("~loc"))
                        {
                            // Localize the error reason
                            await DiscordUtil.SendErrorMessageByLocalizedDescription(commandContext.Guild, commandContext.Channel, description.Split(',')[1]);
                        }
                        else
                        {
                            // Localize the error reason
                            await DiscordUtil.SendErrorMessageByDescription(commandContext.Guild, commandContext.Channel, result.ErrorReason);
                        }

                        break;

                    case CommandError.Exception:
                        // Get the IResult as an ExecuteResult
                        ExecuteResult executeResult = (ExecuteResult)result;

                        // Send the error message
                        await DiscordUtil.SendErrorMessageByException(commandContext.Guild, commandContext.Channel, commandContext.User, $"with command``{userMessage.Content}``", executeResult.Exception);

                        break;

                    default:
                        // Get the type
                        string type = (result.Error != null) ? result.Error.Value.GetType().Name : "Unknown";

                        // Send the error message
                        await DiscordUtil.SendErrorMessageByTypeAndMessage(commandContext.Guild, commandContext.Channel, type, result.ErrorReason);

                        break;
                    }
                }
                else
                {
                    // Declare a variable to hold the length
                    int length;

                    // Get the index of the first space
                    int spaceIdx = userMessage.Content.IndexOf(' ');

                    // Check if there is no space
                    if (spaceIdx == -1)
                    {
                        // Default to the command string length
                        length = userMessage.Content.Length - commandPosition;
                    }
                    else
                    {
                        // Get the length of the string in between the space and the command
                        length = spaceIdx - commandPosition;
                    }

                    // Get the command
                    string command = userMessage.Content.Substring(commandPosition, length);

                    // Check if this is not command stats
                    if (command != "commandstats")
                    {
                        // Increment this command in the statistics
                        Configuration.LoadedConfiguration.DiscordConfig.CommandStatistics.AddOrUpdate(command, 1, (cmd, val) => val + 1);
                    }
                }
            }
            else
            {
                // Acquire the semaphore
                await InteractiveMessageSemaphore.WaitAsync();

                // Check if this will match an interactive message
                // TODO a better way?
                IEnumerable <InteractiveMessage> messages = ActiveInteractiveMessages.Where(x => x.Channel.Id == socketMessage.Channel.Id &&
                                                                                            x.User.Id == socketMessage.Author.Id).ToList();

                // Release the semaphore
                InteractiveMessageSemaphore.Release();

                foreach (InteractiveMessage interactiveMessage in messages)
                {
                    try
                    {
                        await interactiveMessage.TextMessageReceived(socketMessage);
                    }
                    catch (Exception e)
                    {
                        await DiscordUtil.SendErrorMessageByException(commandContext.Guild, commandContext.Channel, commandContext.User, $"in {interactiveMessage.GetType().Name}.TextMessageReceived()", e);
                    }
                }
            }
        }
Exemplo n.º 28
0
        public static ExecuteResult RunCommand(String command, String args, String server, String remoteWorkingDirectory, long timeoutMills, StatusType timeoutStatus = StatusType.Failed, bool killProcessOnTimeout = true, Action <string, string> callback = null, string callbackLabel = null, bool dryRun = false, bool returnStdout = true)
        {
            ExecuteResult result = new ExecuteResult();

            if (callback == null)
            {
                callback = LogTailer.ConsoleWriter;
            }

            Int32  exitStatus = 0;
            String rwd        = remoteWorkingDirectory;

            if (string.IsNullOrWhiteSpace(rwd))
            {
                rwd = @"C:\Temp";
            }

            String cmd = command;

            if (!String.IsNullOrWhiteSpace(args))
            {
                cmd = command + " " + args;
            }

            callback?.Invoke(callbackLabel, "Starting Command : " + cmd);

            if (!dryRun)
            {
                try
                {
                    // Create the process
                    using (ManagementClass process = new ManagementClass("Win32_Process"))
                    {
                        ManagementScope scope = GetManagementScope(server);
                        process.Scope = scope;

                        ManagementBaseObject inParams = process.GetMethodParameters("Create");

                        String stdOutErrFile = System.IO.Path.GetRandomFileName();
                        stdOutErrFile = stdOutErrFile.Replace(".", "") + ".log";

                        inParams["CurrentDirectory"] = rwd;
                        inParams["CommandLine"]      = @"cmd.exe /c " + cmd + @" 1> " + stdOutErrFile + @" 2>&1";

                        ManagementBaseObject mbo = process.InvokeMethod("Create", inParams, null);

                        UInt32 exitCode  = (uint)mbo["ReturnValue"];
                        UInt32 processId = 0;


                        if (exitCode == 0)
                        {
                            processId = (uint)mbo["ProcessId"];

                            // Start Tailing Output Log
                            LogTailer tailer = new LogTailer(server, Path.Combine(remoteWorkingDirectory, stdOutErrFile), callback, callbackLabel, 1000, returnStdout);
                            tailer.Start();

                            // Wait For Process To Finish or Timeout To Be Reached
                            ManagementEventWatcher w = new ManagementEventWatcher(scope, new WqlEventQuery("select * from Win32_ProcessStopTrace where ProcessId=" + processId));
                            if (timeoutMills > 0)
                            {
                                w.Options.Timeout = new TimeSpan(0, 0, 0, 0, (int)timeoutMills);
                            }
                            try
                            {
                                ManagementBaseObject mboEvent = w.WaitForNextEvent();
                                UInt32 uExitStatus            = (UInt32)mboEvent.Properties["ExitStatus"].Value;
                                exitStatus = unchecked ((int)uExitStatus);
                            }
                            catch (ManagementException ex)
                            {
                                if (ex.Message.Contains("Timed out"))
                                {
                                    StringBuilder rc             = new StringBuilder();
                                    String        processName    = @"cmd.exe";
                                    String        timeoutMessage = "TIMEOUT : Process [" + processName + "] With Id [" + processId + "] Failed To Complete In [" + timeoutMills + "] Milliseconds.";
                                    if (killProcessOnTimeout)
                                    {
                                        String      queryStr = String.Format("SELECT * FROM Win32_Process Where Name = '{0}' AND ProcessId = '{1}'", processName, processId);
                                        ObjectQuery Query    = new ObjectQuery(queryStr);
                                        ManagementObjectSearcher Searcher = new ManagementObjectSearcher(scope, Query);

                                        foreach (ManagementObject thisProcess in Searcher.Get())
                                        {
                                            rc.Append(KillProcess(scope, thisProcess));
                                        }

                                        using (StringReader procStr = new StringReader(rc.ToString()))
                                        {
                                            String procLine;
                                            while ((procLine = procStr.ReadLine()) != null)
                                            {
                                                callback?.Invoke(callbackLabel, procLine);
                                            }
                                        }

                                        timeoutMessage = "TIMEOUT : Process [" + processName + "] With Id [" + processId + "] Failed To Complete In [" + timeoutMills + "] Milliseconds And Was Remotely Termintated.";
                                    }
                                    tailer.Stop(60, true);
                                    result.ExitData = tailer.Contents;

                                    throw new Exception(timeoutMessage);
                                }
                                else
                                {
                                    tailer.Stop(60, true);
                                    result.ExitData = tailer.Contents;
                                    throw ex;
                                }
                            }

                            tailer.Stop(300, true);
                            result.ExitData = tailer.Contents;
                        }
                        else
                        {
                            callback?.Invoke(callbackLabel, "Return Value : " + exitCode);
                            callback?.Invoke(callbackLabel, mbo.GetText(TextFormat.Mof));
                        }
                    }   // End Using
                }
                catch (Exception e)
                {
                    String errorMsg = e.Message;

                    if (errorMsg.StartsWith("TIMEOUT"))
                    {
                        callback?.Invoke(callbackLabel, e.Message);
                        result.Status = timeoutStatus;
                        callback?.Invoke(callbackLabel, "TIMEOUT : Returning Timeout Stauts [" + result.Status + "].");
                    }
                    else
                    {
                        callback?.Invoke(callbackLabel, "Error Occured In WMIUtils.RunCommand : ");
                        callback?.Invoke(callbackLabel, e.Message);
                        callback?.Invoke(callbackLabel, e.StackTrace);
                        throw e;
                    }
                }
            }
            else
            {
                callback?.Invoke(callbackLabel, "Dry Run Flag Set.  Execution Skipped");
            }

            result.ExitCode = exitStatus;
            result.Message  = "Exit Code = " + exitStatus;
            callback?.Invoke(callbackLabel, result.Message);

            return(result);
        }
Exemplo n.º 29
0
        public void RunGameWithoutHuman()
        {
            var game = _GameCreationDelegate(_settings[_currentGameNumber], GamePurpose.fastGameInBackgroundWithoutVisualization);

            game.roundNumber = -1;
            game.rounds      = new List <TRound>();

            int runtimeErrorOrTimeLimitCounter = 0;

            while (!game.GameFinished && GameForm.UserWantsToClose == false)
            {
                game.roundNumber++;
                var round = new TRound();
                round.random = new System.Random(Rand.Next());
                round.turns  = new List <TTurn>();

                game.PreparationsBeforeRound();
                List <TPlayer> order    = game.GetTurnOrderForNextRound();
                bool           addRound = true;
                while (round.turns.Count < order.Count)
                {
                    TPlayer player = order[round.turns.Count];
                    ExternalProgramExecuter epe =
                        new ExternalProgramExecuter(player.programAddress, "input.txt", "output.txt", _settings[_currentGameNumber].JavaPath, _settings[_currentGameNumber].PythonPath);


                    string input = game.GetInputFile(player);
                    string output;
                    string comment;

                    ExecuteResult res = epe.Execute(input, FrameworkSettings.ExecutionTimeLimitSeconds, out output, out comment);

                    var turn = game.GetProgramTurn(player, output, res, ExternalProgramExecuter.ExecuteResultToString(res));
                    turn.output = output; //todo this is bad
                    turn.input  = input;
                    round.turns.Add(turn);

                    if (res == ExecuteResult.InternalError || res == ExecuteResult.NotStarted || res == ExecuteResult.TimeOut)
                    {
                        runtimeErrorOrTimeLimitCounter++;
                    }
                    if (runtimeErrorOrTimeLimitCounter == 2)
                    {
                        //todo test game stipping
                        var dialogResult = _gameForm.ThreadSafeMessageBox("Остановка игры", "Вызов программы дважды завершился с ошибкой. YES = остановить игру, NO = продолжить до двух новых ошибочных запусков, CANCEL = продолжить до двадцати новых ошибочных запусков", MessageBoxButtons.YesNoCancel);
                        if (dialogResult == DialogResult.Yes)
                        {
                            game.GameFinished = true;
                            addRound          = false;
                            break;
                        }
                        else if (dialogResult == DialogResult.No)
                        {
                            runtimeErrorOrTimeLimitCounter = 0;
                        }
                        else
                        {
                            runtimeErrorOrTimeLimitCounter = -18;
                        }
                    }
                }
                if (addRound)
                {
                    game.rounds.Add(round);
                    _allRounds.TryAdd(game.roundNumber, round);
                    game.ProcessRoundAndSetTotalStage(round);
                }
            }

            if (_settings[_currentGameNumber].SaveReplays)
            {
                var path = _settings[_currentGameNumber].ReplayFolder + "\\" + _settings[_currentGameNumber].ReplayFileName;
                try
                {
                    var replay = new Replay
                    {
                        AllRounds           = _allRounds.Values.ToList(),
                        ParamsFromStartForm = _settings[_currentGameNumber]
                    };
                    Serialize.TryWriteToXmlFile(path, replay);
                }
                catch
                {
                    if (Debugger.IsAttached)
                    {
                        throw;
                    }
                }
            }

            GameForm.GameInBackgroundRunning = false;
        }
Exemplo n.º 30
0
        protected void ExecuteHelper(string asWhere, string asMacro, ExecuteResult aCallbackResult)
        {
            if (aCallbackResult == null)
            {
                throw new GuiMacroException("aCallbackResult was not specified");
            }

            string result;
            GuiMacroResult code;

            // New ConEmu builds exports "GuiMacro" function
            if (fnGuiMacro != null)
            {
                IntPtr fnCallback = Marshal.GetFunctionPointerForDelegate(aCallbackResult);
                if (fnCallback == IntPtr.Zero)
                {
                    throw new GuiMacroException("GetFunctionPointerForDelegate failed");
                }

                IntPtr bstrPtr = IntPtr.Zero;
                int iRc = fnGuiMacro.Invoke(asWhere, asMacro, out bstrPtr);

                switch (iRc)
                {
                    case 0: // This is not expected for `GuiMacro` exported funciton, but JIC
                    case 133: // CERR_GUIMACRO_SUCCEEDED: expected
                        code = GuiMacroResult.gmrOk;
                        break;
                    case 134: // CERR_GUIMACRO_FAILED
                        code = GuiMacroResult.gmrExecError;
                        break;
                    default:
                        throw new GuiMacroException(string.Format("Internal ConEmuCD error: {0}", iRc));
                }

                if (bstrPtr == IntPtr.Zero)
                {
                    // Not expected, `GuiMacro` must return some BSTR in any case
                    throw new GuiMacroException("Empty bstrPtr was returned");
                }

                result = Marshal.PtrToStringBSTR(bstrPtr);
                Marshal.FreeBSTR(bstrPtr);

                if (result == null)
                {
                    // Not expected, `GuiMacro` must return some BSTR in any case
                    throw new GuiMacroException("Marshal.PtrToStringBSTR failed");
                }
            }
            else
            {
                result = ExecuteLegacy(asWhere, asMacro);
                code = GuiMacroResult.gmrOk;
            }

            aCallbackResult(code, result);
        }
Exemplo n.º 31
0
 public static ExecuteResult Execute(string aUserName, System.Security.SecureString aCheck, string aExe, string aArgs,
     System.Diagnostics.ProcessPriorityClass aPriority,
     string aStdin, ExecOutputDelegate aOutput, ExecOutputDelegate aError)
 {
     string Domain = string.Empty;
     string User = ParseUserName(aUserName, out Domain);
     bool HasStdin = !string.IsNullOrEmpty(aStdin);
     ExecuteResult Result = null;
     try
     {
         using (System.Diagnostics.Process P = new System.Diagnostics.Process())
         {
             P.StartInfo =
                 new System.Diagnostics.ProcessStartInfo(aExe, aArgs)
                 {
                     UseShellExecute = false,
                     RedirectStandardInput = HasStdin,
                     RedirectStandardError = true,
                     RedirectStandardOutput = true,
                     CreateNoWindow = true,
                     UserName = User,
                     Domain = Domain,
                     Password = aCheck,
                     LoadUserProfile = true,
                 };
             // These will read while the process is running.
             StdHandler Out = new StdHandler(OutputSource.stdout, P, aOutput);
             StdHandler Err = new StdHandler(OutputSource.stderr, P, aError);
             // Go
             P.Start();
             // Start the handlers
             Out.Start(); Err.Start();
             // Send any imput to the process
             if (HasStdin)
             {
                 P.StandardInput.WriteLine(aStdin);
                 P.StandardInput.Flush();
             }
             // Gotta set priority AFTER start
             P.PriorityClass = aPriority;
             // And wait till it is done (timeout?)
             P.WaitForExit();
             // And done, build a result thingy
             Result = new ExecuteResult(P, Out, Err);
         }
     }
     catch (Exception Ex)
     {
         Debug.Write("Execute (" + aExe + "): ");
         Debug.WriteLine(Ex);
         Result = new ExecuteResult(Ex);
     }
     return Result;
 }
Exemplo n.º 32
0
        /// <summary>
        /// 预测
        /// </summary>
        /// <param name="inputSeq">输入分词过的语句</param>
        /// <returns></returns>
        public ExecuteResult <List <string> > Predict(List <string> inputSeq)
        {
            ExecuteResult <List <string> > eresult = new ExecuteResult <List <string> >();

            Reset();
            List <string> result = new List <string>();
            var           G2     = new ComputeGraph(false);
            //反序组
            List <string> revseq = inputSeq.ToList();

            revseq.Reverse();
            List <WeightMatrix> encoded = new List <WeightMatrix>();

            //
            //Console.WriteLine($"keys>{string.Join(",", wordToIndex.Keys.ToArray())}");
            for (int i = 0; i < inputSeq.Count; i++)
            {
                //索引
                if (!wordToIndex.ContainsKey(inputSeq[i]))
                {
                    return(eresult.SetFail($"抱歉,未能理解 \"{inputSeq[i]}\"  的含义, 请重新训练我吧!"));
                    //return $"抱歉,未能理解 \"{inputSeq[i]}\"  的含义, 请重新训练我吧!".Split(' ').ToList();
                    //return $"I'm sorry, I can't understand \"{inputSeq[i]}\"  the meaning of the word, please you to retrain me!".Split(' ').ToList();
                }

                if (!wordToIndex.ContainsKey(revseq[i]))
                {
                    return(eresult.SetFail($"抱歉,未能理解 \"{revseq[i]}\"  的含义, 请重新训练我吧!"));
                    //return $"抱歉,未能理解 \"{inputSeq[i]}\"  的含义, 请重新训练我吧!".Split(' ').ToList();
                    //return $"I'm sorry, I can't understand \"{revseq[i]}\"  the meaning of the word, please you to retrain me!".Split(' ').ToList();
                }

                int ix  = wordToIndex[inputSeq[i]].i;
                int ix2 = wordToIndex[revseq[i]].i;

                var x2       = G2.PeekRow(Embedding, ix);
                var o        = encoder.Encode(x2, G2);
                var x3       = G2.PeekRow(Embedding, ix2);
                var eOutput2 = ReversEncoder.Encode(x3, G2);
                var d        = G2.concatColumns(o, eOutput2);
                encoded.Add(d);
            }

            //if (UseDropout)
            //{
            //    for (int i = 0; i < encoded.Weight.Length; i++)
            //    {
            //        encoded.Weight[i] *= 0.2;
            //    }
            //}
            var ix_input = 1;

            while (true)
            {
                var x       = G2.PeekRow(Embedding, ix_input);
                var eOutput = decoder.Decode(x, encoded, G2);
                if (UseDropout)
                {
                    for (int i = 0; i < eOutput.Weight.Length; i++)
                    {
                        eOutput.Weight[i] *= 0.2;
                    }
                }
                var o = G2.add(
                    G2.mul(eOutput, this.Whd), this.bd);
                if (UseDropout)
                {
                    for (int i = 0; i < o.Weight.Length; i++)
                    {
                        o.Weight[i] *= 0.2;
                    }
                }
                var probs = G2.SoftmaxWithCrossEntropy(o);
                var maxv  = probs.Weight[0];
                var maxi  = 0;
                for (int i = 1; i < probs.Weight.Length; i++)
                {
                    if (probs.Weight[i] > maxv)
                    {
                        maxv = probs.Weight[i];
                        maxi = i;
                    }
                }
                var pred = maxi;

                if (pred == 0)
                {
                    break;            // END token predicted, break out
                }
                if (result.Count > max_word)
                {
                    break;
                }                                       // something is wrong
                var letter2 = indexToWord[pred].w;
                result.Add(letter2);
                ix_input = pred;
            }

            return(eresult.SetData(result).SetOk());
        }
Exemplo n.º 33
0
 public ExecuteResult Execute(ExecuteParameters executeParameters)
 {
     return(LastExecResult = this.executor.Execute(executeParameters));
 }
Exemplo n.º 34
0
    public IEnumerator Update()
    {
        int  count       = 0;
        Node currentNode = rootNode;

        while (currentNode != null)
        {
            var nodeState = currentNode.GetNodeState();
            if (count > 1000)
            {
                Debug.Log("無限ループ??");
                yield break;
            }
            count += 1;
            //Debug.Log("Id: " + currentNode.Id + " state:" + nodeState);

            switch (nodeState)
            {
            case NodeState.Init:
                currentNode.StartProcess();
                break;

            case NodeState.Start:
                currentNode.Run();
                break;

            case NodeState.Running:
                currentNode.DoNext();
                break;

            case NodeState.WaitForChild:
                currentNode = currentNode.GetChildNode();
                break;

            case NodeState.Complete:
                if (currentNode.IsRoot())
                {
                    currentNode = null;
                    break;
                }

                currentNode = currentNode.GetOwner();
                break;

            case NodeState.Disable:
                Debug.Log("予期せぬエラー");
                yield break;

            default:
                break;
            }

            yield return(null);
        }

        ExecuteResult result = rootNode.GetExecuteResultState();
        var           state  = result.GetExecuteResult();

        if (state == ExecuteResultState.Success)
        {
            Debug.Log("成功");
        }
        else if (state == ExecuteResultState.Failure)
        {
            Debug.Log("失敗");
        }
        else
        {
            Debug.Log("謎の失敗?");
        }
    }
Exemplo n.º 35
0
        /// <summary>
        /// 对module配置与参数进行基础验证,子类重写后需要显式调用并判定返回值,如返回值不为Success,则不再执行子类后续逻辑
        /// </summary>
        /// <param name="parameter">参数</param>

        public override ExecuteResult <ITaskResult[]> Execute(TaskParameter parameter)
        {
            var baseResult = base.Execute(parameter);

            if (baseResult.Status != ResultStatus.Success)
            {
                return(baseResult);
            }

            if (parameter.TryGetValue(TriggerTypeKey, out int triggerType))
            {
                TriggerType = (TriggerType)triggerType;
                if (Configuration.TriggerType != TriggerType)
                {
                    //触发类型与配置的触发类型不一致,直接退出
                    return(ExecuteResult <ITaskResult[]> .Cancel($"模块实际触发类型{triggerType}与模块设置的触发类型{Configuration.TriggerType}不一致,退出模块."));
                }
            }
            else
            {
                TriggerType = Configuration.TriggerType;
            }
            // 触发类型为会员注册
            if (TriggerType == TriggerType.UserReg)
            {
                parameter.TryGetValue(FenRunAmountKey, out decimal amount);
                BaseFenRunAmount = amount;
                if (BaseFenRunAmount <= 0)
                {
                    return(ExecuteResult <ITaskResult[]> .Cancel($"分润基数价格获取为0. BaseFenRunAmount={BaseFenRunAmount}"));
                }
            }

            // 触发类型为会员升级
            if (TriggerType == TriggerType.UserUpgrade)
            {
                parameter.TryGetValue(FenRunAmountKey, out decimal amount);
                BaseFenRunAmount = amount;
                if (BaseFenRunAmount <= 0)
                {
                    return(ExecuteResult <ITaskResult[]> .Cancel($"分润基数价格获取为0. BaseFenRunAmount={BaseFenRunAmount},会员Id为{ShareOrder.UserId}"));
                }
            }

            // 触发类型为商城购物
            if (TriggerType == TriggerType.Order)
            {
                //TODO 重构注释
                ////获取价格基数
                //if (parameter.TryGetValue("OrderId", out long orderId)) {
                //    // 获取符合条件的商品 价格依赖范围 所有商品 按所属商品线选择 按所属商城选择
                //    var effectiveOrderProductListAll = GetEffectiveOrderProduct(orderId);
                //    if (effectiveOrderProductListAll == null || effectiveOrderProductListAll.Count == 0) {
                //        return ExecuteResult<ITaskResult[]>.Cancel($"没有符合的产品可分润,退出模块.");
                //    }
                //    var effectiveOrderProductList = new List<OrderProduct>();

                //    // 商品单价限制

                //    if (Configuration.PriceLimitType == PriceLimitType.ProductPrice) {
                //        foreach (var productItem in effectiveOrderProductListAll) {
                //            if (productItem.Amount > Configuration.BaseRule.MaxAmount && Configuration.BaseRule.MaxAmount > 0) {
                //                continue;
                //            }
                //            if (productItem.Amount < Configuration.BaseRule.MinimumAmount && Configuration.BaseRule.MinimumAmount > 0) {
                //                continue;
                //            }
                //            effectiveOrderProductList.Add(productItem);
                //        }
                //    } else {
                //        effectiveOrderProductList = effectiveOrderProductListAll;
                //    }

                //    //如果价格模式为销售价,则触发金额为有效的商品实际售价之和
                //    if (Configuration.ProductRule.AmountType == PriceType.Price) {
                //        // 根据实际支付方式获取价格 (PaymentAmount为人民币支付的价格)
                //        BaseFenRunAmount = effectiveOrderProductList.Sum(e => e.PaymentAmount);
                //    }
                //    //如果价格模式为分润价,则触发金额为有效的商品分润价之和
                //    if (Configuration.ProductRule.AmountType == PriceType.FenRun) {
                //        BaseFenRunAmount = effectiveOrderProductList.Sum(e => e.FenRunAmount);
                //    }
                //    //如果价格模式为商品数 :有效商品数量之和
                //    if (Configuration.ProductRule.AmountType == PriceType.ProductNum) {
                //        BaseFenRunAmount = effectiveOrderProductList.Sum(e => e.Count);
                //    }
                //    //如果价格模式为商品数 :有效商品数量之和
                //    if (Configuration.ProductRule.AmountType == PriceType.OrderNum) {
                //        BaseFenRunAmount = 1;
                //    }
                //    //如果价格模式为服务费
                //    if (Configuration.ProductRule.AmountType == PriceType.OrderFeeAmount) {
                //        BaseFenRunAmount = effectiveOrderProductList.Sum(e => e.OrderProductExtension?.OrderAmount?.FeeAmount).ConvertToDecimal();
                //    }
                //}

                //OrderId = orderId;
                //if (BaseFenRunAmount <= 0) {
                //    return ExecuteResult<ITaskResult[]>.Cancel($"分润基数价格获取为0. BaseFenRunAmount={BaseFenRunAmount},订单id为{OrderId}");
                //}
            }

            // 触发类型为内部连锁
            if (TriggerType == TriggerType.Chain)
            {
                if (!parameter.TryGetValue(DefaultAmountKey, out decimal amount))
                {
                    amount = 0;
                }

                BaseFenRunAmount = amount;
            }

            // 触发类型为其他、提现、充值,订单金额为ShareOrder的Amount
            if (TriggerType == TriggerType.Other || TriggerType == TriggerType.WithDraw || TriggerType == TriggerType.Recharge)
            {
                parameter.TryGetValue(FenRunAmountKey, out decimal amount);
                BaseFenRunAmount = amount;
                if (BaseFenRunAmount <= 0)
                {
                    return(ExecuteResult <ITaskResult[]> .Cancel($"分润基数价格获取为0. BaseFenRunAmount={BaseFenRunAmount}"));
                }
            }

            if (!parameter.TryGetValue("ShareOrderId", out long shareOrderId))
            {
                return(ExecuteResult <ITaskResult[]> .Fail("分润订单ShareOrderId未找到."));
            }
            // 线程停止3s中,重新读取数据库,保证ShardeOdeer状态正确,不重复触发
            //Thread.Sleep(TimeSpan.FromSeconds(3));
            var shareOrder = Resolve <IShareService>().GetSingleNative(shareOrderId);

            if (shareOrder == null)
            {
                return(ExecuteResult <ITaskResult[]> .Fail("分润订单未找到."));
            }
            if (shareOrder.Status != ShareOrderStatus.Pending)
            {
                return(ExecuteResult <ITaskResult[]> .Fail("分润订单原生查询,状态不正常."));
            }

            var teamConfig = Resolve <IAutoConfigService>().GetValue <TeamConfig>();

            this.TeamLevel = teamConfig.TeamLevel;
            return(ExecuteResult <ITaskResult[]> .Success());
        }
Exemplo n.º 36
0
    override public ExecuteResult Execute(HandlerStartInfo startInfo)
    {
        ExecuteResult result = new ExecuteResult()
        {
            Status = StatusType.Complete
        };
        string    msg       = string.Empty;
        Exception exception = null;
        object    exitData  = null;

        SimpleUriHandlerParameters parms = DeserializeOrNew <SimpleUriHandlerParameters>(startInfo.Parameters);

        OnProgress("Execute", $"Beginning fetch for {parms.Uri}.", StatusType.Running, startInfo.InstanceId, 1);

        try
        {
            switch (parms.ParsedUri.Scheme)
            {
            case "http":
            case "https":
            {
                exitData = GetHttpUri(parms.Uri).Result;
                break;
            }

            case "file":
            {
                exitData = GetFileUri(parms.Uri);
                break;
            }

            case "s3":
            case "blob":
            default:
            {
                throw new NotSupportedException($"URI scheme {parms.ParsedUri.Scheme} is not supported.");
            }
            }

            exitData = FormatData(exitData, parms.Format);

            if (parms.HasMerge)
            {
                MergeData(ref exitData, parms.Merge, parms.Format);
            }

            result.ExitData = exitData;

            msg = $"Successfully executed HttpClient.Get( {parms.Uri} ).";
        }
        catch (Exception ex)
        {
            result.Status   = StatusType.Failed;
            result.ExitData = msg = ex.Message;
            exception       = ex;
        }

        OnProgress("Execute", msg, result.Status, startInfo.InstanceId, Int32.MaxValue, false, exception);

        return(result);
    }