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; }
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; }
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); }
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; }
/// <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())); }
/// <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()); }
public async Task <IExecuteResult> SearchAsync(PagingInput <NpsServerSearchInput> input) { return(ExecuteResult.Ok(await _npsServerService.SearchAsync(input))); }
/// <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) }); }
public IHttpActionResult InsertBookWithModel(BookModel Model) { ExecuteResult Result = _BookService.InsertBookWithModel(Model); return(Json(Result)); }
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); }
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<ITaskResult[]>.</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())); }
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); }
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 }); } } }
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,謝謝。"; } }
/// <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)); } }
/// <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())); }
/// <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)); } }
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); }
/// <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)); }
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 }); } }
public Task continueWithTask(ExecuteResult arg0) { return(Call <Task>("continueWithTask", arg0)); }
protected ExecuteResult <ITaskResult[]> FailAndLogError(string message) { Logger.LogError(message); return(ExecuteResult <ITaskResult[]> .Fail(message)); }
void ICloneable <TransactionState> .FromReplica(TransactionState replica) { BlockIndex = replica.BlockIndex; Transaction = replica.Transaction; Result = replica.Result; }
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); } } } }
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); }
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; }
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); }
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; }
/// <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()); }
public ExecuteResult Execute(ExecuteParameters executeParameters) { return(LastExecResult = this.executor.Execute(executeParameters)); }
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("謎の失敗?"); } }
/// <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()); }
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); }