public override void Execute() { TalkPanelView talkPanel = MYXZUIManager.Instance.GetPanel(UIPanelType.TalkPanel) as TalkPanelView; List <string> taskIds; TaskInfoService.CheckTaskFinsh(ID); if (TaskInfoService.IsInTaskOfNpc(ID, out taskIds)) //如果Player正在执行此NPC的任务 { talkPanel.CurrentTalks = MYXZGameDataManager.Instance.GetTaskById(taskIds[0]).InTaskTalk; talkPanel.IsTaskTalk = false; } else if ((taskIds = TaskInfoService.GetAcceptableTasksInNpc(ID)).Count >= 1) //如果此NPC当前有可以接取的任务 { talkPanel.CurrentTalks = MYXZGameDataManager.Instance.GetTaskById(taskIds[0]).TakeTaskTalk; //给出此NPC可以被接受的第一个任务TakeTaskTalk talkPanel.CurrentTask = taskIds[0]; talkPanel.IsTaskTalk = true; //这是一个接取任务的对话 } else //如果没有可接的任务和正在进行的任务,说明是一个平常对话 { talkPanel.CurrentTalks = MYXZGameDataManager.Instance.GetNpcInfoById(ID).Talks; talkPanel.IsTaskTalk = false; } PushPanelSignal.Dispatch(UIPanelType.TalkPanel); //弹出对话面板 }
/// <summary> /// 接受任务 /// </summary> private void GetTask() { TaskInfoService.PlayerGetNewTask(CurrentTaskId); //向玩家的InfoModel中添加此任务 MYXZUIManager.Instance.PopPanel(); //关闭MessageBoxPanel MYXZUIManager.Instance.PopPanel(); //关闭TalkPanel FinishTalkSignal.Dispatch(); //通知玩家对话已经结束 }
public CrmPluginViewModel(ICrm crmClient, IPasswordService passwordService, IPortableNavigationService navigationService) { this.crmClient = crmClient; this.passwordService = passwordService; this.navigationService = navigationService; taskInfoService = new TaskInfoService(crmClient); Name = crmClient.GetName(); LoginCommand = new RelayCommand(LoginCommand_Executed, () => !isBusy); }
/// <summary> /// 任务管理 /// </summary> /// <param name="scheduler"></param> public static void TaskManager(IScheduler scheduler) { var taskList = new TaskInfoService().GetModelList("WHERE IsDelete=0", null); if (taskList != null) { foreach (var taskInfo in taskList) { JobKey jobKey = new JobKey("TaskName." + taskInfo.TaskId, "TaskGroup." + taskInfo.TaskId); if (scheduler.CheckExists(jobKey))//任务存在 { //立刻运行 if (taskInfo.ImmedRun == 1) { var _JobDataMap = new JobDataMap(); _JobDataMap.Add("TaskInfo", JsonConvert.SerializeObject(taskInfo)); scheduler.TriggerJob(jobKey, _JobDataMap); } //即将停止,删除任务并变成停止状态 if (taskInfo.State == (int)TaskState.Stopping || taskInfo.State == (int)TaskState.Stopped) { bool deleteFlag = scheduler.DeleteJob(jobKey); if (deleteFlag) { WriteTaskLog(taskInfo, "该任务已经停止运行并删除", TaskState.Stopped); } } //即将启动,变成开启状态 else if (taskInfo.State == (int)TaskState.Starting) { WriteTaskLog(taskInfo, "该任务已经从Starting-->Running", TaskState.Running); } } else { if (taskInfo.State == (int)TaskState.Starting || taskInfo.State == (int)TaskState.Running) { //添加job if (AddScheduleJob(scheduler, taskInfo)) { WriteTaskLog(taskInfo, "该任务已经添加计划并启动运行", TaskState.Running); } } } } } }
public void JobWasExecuted(IJobExecutionContext context, JobExecutionException jobException) { try { //DateTime? NextFireTimeUtc = TimeZoneInfo.ConvertTimeFromUtc(context.NextFireTimeUtc.Value.DateTime, TimeZoneInfo.Local); //DateTime? FireTimeUtc = TimeZoneInfo.ConvertTimeFromUtc(context.FireTimeUtc.Value.DateTime, TimeZoneInfo.Local); DateTime?NextFireTimeUtc = null; if (context.NextFireTimeUtc.HasValue) { NextFireTimeUtc = context.NextFireTimeUtc.Value.DateTime; } DateTime?FireTimeUtc = null; if (context.NextFireTimeUtc.HasValue) { FireTimeUtc = context.FireTimeUtc.Value.DateTime; } double TotalSeconds = context.JobRunTime.TotalSeconds; TB_TM_TaskInfo taskInfo = null; string LogContent = string.Empty; if (context.MergedJobDataMap != null) { if (context.MergedJobDataMap.ContainsKey("TaskInfo")) { taskInfo = JsonConvert.DeserializeObject <TB_TM_TaskInfo>(context.MergedJobDataMap.GetString("TaskInfo")); } if (taskInfo != null) { System.Text.StringBuilder log = new System.Text.StringBuilder(); int i = 0; foreach (var item in context.MergedJobDataMap) { string key = item.Key; if (key.StartsWith("Extend_")) { if (i > 0) { log.Append(","); } log.AppendFormat("{0}:{1}", item.Key, item.Value); i++; } } if (i > 0) { LogContent = string.Concat("[", log.ToString(), "]"); } TaskInfoService _TaskInfoService = new TaskInfoService(); TaskLogService _TaskLogService = new TaskLogService(); taskInfo = _TaskInfoService.GetModel(taskInfo.TaskId); taskInfo.LastRunTime = FireTimeUtc; taskInfo.NextRunTime = NextFireTimeUtc; taskInfo.RunCount = taskInfo.RunCount + 1; if (taskInfo.ImmedRun == 1)//立刻运行 { LogContent = "(本次是立刻运行)" + LogContent; taskInfo.ImmedRun = 0; } _TaskInfoService.Update(taskInfo); _TaskLogService.Add(new TaskManager.Core.Model.TB_TM_TaskLog() { TaskId = taskInfo.TaskId, TaskName = taskInfo.TaskName, CreatedDateTime = DateTime.Now, ExecutionTime = FireTimeUtc, ExecutionDuration = TotalSeconds, RunLog = LogContent }); } } //if (jobException != null) //{ // LogContent = LogContent + " EX:" + jobException.ToString(); // new TaskLogService().Add(new TaskManager.Core.Model.TB_TM_TaskLog() // { // TaskId = Convert.ToInt32(TaskId), // TaskName = TaskName, // CreatedDateTime = DateTime.Now, // ExecutionTime = FireTimeUtc, // ExecutionDuration = TotalSeconds, // RunLog = LogContent // }); //} } catch (Exception ex) { //错误日志 } }
public TaskInfoController() { _TaskInfoService = new TaskInfoService(); }