public OrderQueue(Session session, OrderCacheItem queueInfo) { _queueInfo = queueInfo; InitializeComponent(); imglist.Images.Add(UiUtility.Get24PxImageFrom16PxImg(Properties.Resources.user_16)); Gif.SetLoadingImage(pbAnimate); Icon = Properties.Resources.icon_warning; InitSession(session); LoadInfo(); _worker = new QueueOrderWorker(session) { TourFlag = _queueInfo.tourFlag }; _worker.QueueMessageChanged += _worker_QueueMessageChanged; _worker.QueryOrderQueueFailed += _worker_QueryOrderQueueFailed; _worker.QueryOrderQueueSuccess += _worker_QueryOrderQueueSuccess; Load += (s, e) => { btnClose.Enabled = false; _worker.RunQueryOrderQueue(); }; FormClosing += (s, e) => { e.Cancel = _worker != null; }; btnClose.DialogResult = DialogResult.Cancel; btnCancelQueue.Click += BtnCancelQueue_Click; FormPlacementManager.Instance.Control(this); }
private void _worker_QueryOrderQueueFailed(object sender, EventArgs e) { pbAnimate.Image = Properties.Resources.lxh_cry; btnCancelQueue.Enabled = true; lblTimeInfo.Text = _worker.Error?.ToString() ?? "未知信息"; lblTimeInfo.ForeColor = Color.Red; btnClose.Enabled = true; btnCancelQueue.Visible = false; _worker = null; }
public SubmitOrder(Session session, QueryResultItem train, Entity.QueryParam query, char seat, IEnumerable <PassengerInTicket> passengers, bool byAuto) : base(session, train, seat, passengers, query, byAuto) { InitializeComponent(); Icon = Properties.Resources.shoppingcart; tc.InitSession(session); ps.InitSession(session); //VerifyCodeBox = verifyCodeBox1; AttachVerifyCodeControl(tc); if (Session == null) { return; } Resign = Query.Resign; _config = Configuration.SubmitOrder.Current; //初始化票类型 _validTicketTypes = new Dictionary <int, string>(); if (Query.QueryStudentTicket) { _validTicketTypes.Add(3, "学生票"); } else { _validTicketTypes.Add(1, "成人票"); _validTicketTypes.Add(2, "儿童票"); _validTicketTypes.Add(3, "学生票"); _validTicketTypes.Add(4, "残军票"); } //初始化席别类型 var allSeatCodes = Train.TicketCount.Keys.Where(s => Train.TicketCount[s].Count > 0 && ParamData.SeatTypeFull.ContainsKey(s)).Select(s => Train.FindCorrectSeat(s)).Where(s => s != 0).Distinct().ToArray(); _validSeatTypes = allSeatCodes.ToDictionary(s => s, s => ParamData.SeatTypeFull[s]); //_validSeatTypesInTicket = _validTicketTypes.Keys.ToDictionary(s => s, s => allSeatCodes); _worker = new SubmitOrderWorker(Session, Train, Query); //_ticketQueryWorker = new TicketQueryWorker(null, Query); _queueWorker = new QueueOrderWorker(Session); _queueWorker.TourFlag = "dc"; AttachWorker(_worker, _queueWorker); //初始化事件 InitEditor(); InitSubmit(); PostInitialize(); }
protected override void AttachWorker(SubmitOrderBase orderWorker, QueueOrderWorker queueWorker) { base.AttachWorker(orderWorker, queueWorker); orderWorker.TicketCountChanged += (_1, _2) => { var str = $"实时余票 {ParamData.SeatTypeFull.GetValue(orderWorker.TicketCountSeat)} {orderWorker.TicketCount} 张"; if (orderWorker.TicketCountNoSeat >= 0) { str += ",无座 " + orderWorker.TicketCountNoSeat + " 张"; } this.Invoke(() => ShowTip(str)); }; }
private void _worker_QueryOrderQueueSuccess(object sender, EventArgs e) { pbAnimate.Image = Properties.Resources.lxh_happy__2_; btnCancelQueue.Enabled = true; lblTimeInfo.Text = $"排队成功!订单号为 {_worker.OrderID},请尽快付款!"; lblTimeInfo.ForeColor = Color.Green; Session.OnRequestShowPanel(PanelIndex.Orders); Session.OnOrderChanged(); btnClose.Image = Properties.Resources.cou_32_accept; btnClose.Enabled = true; btnCancelQueue.Visible = false; _worker = null; }
/// <summary> /// _订单排队成功_ /// --- /// /// /// </summary> /// <returns></returns> protected virtual async Task SubmitOrderSuccessAsync(bool async, string orderid) { if (async) { PreventCloseFlag = true; await QueueBeginAsync().ConfigureAwait(true); QueueOrderWorker.RunQueryOrderQueue(); } else { PreventCloseFlag = false; //非异步模式,不需要排队 await QueueSucceedAsync(orderid).ConfigureAwait(true); } }
public FastSubmitOrder(Session session, QueryResultItem train, char seat, IEnumerable <PassengerInTicket> passengers, QueryParam queryParam, bool byAuto) : base(session, train, seat, passengers, queryParam, byAuto) { InitializeComponent(); //vc.InitSession(session); tc.InitSession(session); tc.ResizeParent(this, ProgramConfiguration.Instance.CaptchaZoom, ClientSize.Width - tc.Width - tc.Location.X - 10 - 10); //VerifyCodeBox = vc; AttachVerifyCodeControl(tc); VerifyCodeBox.RandType = RandCodeType.Randp; //imglist.Images.Add(FSLib.Windows.Utility.Get24PxImageFrom16PxImg(Properties.Resources.user_16)); PostInitialize(); tc.EnableAutoVc = ProgramConfiguration.Instance.AutoSubmitOrderVcCode && Query.EnableAutoVC && VerifyCodeRecognizeServiceLoader.VerifyCodeRecognizeEngine?.IsLoggedIn == true; //TODO: 快速下单模式 _submitWoker = Query.Resign || Query.TemporaryDisableFastSubmitOrder || !ApiConfiguration.Instance.EnableAutoSubmitAPI ? (SubmitOrderBase) new SubmitOrderWorker(Session, Train, Query) { Passengers = PassengerInTickets.ToArray() } : new AutoSubmitWorker(Session, Train, Query, PassengerInTickets.ToArray()) { }; _queueWorker = new QueueOrderWorker(Session) { TourFlag = "dc" }; AttachWorker(_submitWoker, _queueWorker); Load += async(x, y) => { await PrepareOrderAsync().ConfigureAwait(true); }; }
private async void _submitButton_Click(object sender, EventArgs e) { if (InQueue) { if (!_cancelQueueConfirm) { _cancelQueueConfirm = true; SubmitButton.Text = "确认取消"; this.ShowToast("请再次点击“确认取消”以确定取消排队"); } else { SubmitButton.Text = "正在取消..."; SubmitButton.Enabled = false; var(ret, msg) = await QueueOrderWorker.CancelQueueOrderAsync().ConfigureAwait(true); SubmitButton.Enabled = ret == CancelQueueStatus.Failed || ret == CancelQueueStatus.NetworkError; SubmitButton.Text = msg; if (ret == CancelQueueStatus.ForceLogout) { DevComponents.DotNetBar.MessageBoxEx.Show(this, "登录已失效,尽快重新登录查看排队结果,请留意是否有未完成订单。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); if (!await Session.BeenForceLogout().ConfigureAwait(true)) { Close(); } } } } else { await TryBeginSubmitOrderAsync().ConfigureAwait(true); } }
protected virtual void AttachWorker([NotNull] SubmitOrderBase orderWorker, [NotNull] QueueOrderWorker queueWorker) { if (orderWorker == null) { throw new ArgumentNullException(nameof(orderWorker)); } if (queueWorker == null) { throw new ArgumentNullException(nameof(queueWorker)); } if (SubmitOrderWorker != null) { throw new InvalidOperationException(); } SubmitOrderWorker = orderWorker; QueueOrderWorker = queueWorker; //初始化信息 if (PassengerInTickets != null && SubmitOrderWorker.Passengers == null) { SubmitOrderWorker.Passengers = PassengerInTickets.ToArray(); } OrderEventArgs = SubmitOrderWorker.CreateEventArgs(); //绑定事件 orderWorker.PrepareFailed += async(s, e) => { if (IsFormClosed) { return; } await PrepareFailed(orderWorker.Error).ConfigureAwait(true); }; orderWorker.PrepareFinished += async(s, e) => { if (IsFormClosed) { return; } await PrepareSuccessAsync(orderWorker.QueueWarning).ConfigureAwait(true); }; //提交失败 orderWorker.SubmitOrderFailed += async(s, e) => { await OrderFailedAsync(orderWorker.Error, false).ConfigureAwait(true); }; orderWorker.SubmitOrderSuccess += async(s, e) => { await SubmitOrderSuccessAsync(orderWorker.Async, orderWorker.OrderID).ConfigureAwait(true); }; QueueOrderWorker.QueryOrderQueueFailed += async(s, e) => { InQueue = false; _cancelQueueConfirm = false; if (SubmitButton != null) { SubmitButton.ColorTable = eButtonColor.BlueWithBackground; SubmitButton.Image = Properties.Resources.cou_32_accept; SubmitButton.Text = "重新提交"; } await OrderFailedAsync(QueueOrderWorker.Error.ToString(), true).ConfigureAwait(true); }; QueueOrderWorker.QueryOrderQueueSuccess += async(s, e) => { InQueue = false; _cancelQueueConfirm = false; if (SubmitButton != null) { SubmitButton.Image = Properties.Resources.cou_32_accept; SubmitButton.Text = "订票成功"; SubmitButton.Enabled = false; } await QueueSucceedAsync(QueueOrderWorker.OrderID).ConfigureAwait(true); }; QueueOrderWorker.QueueMessageChanged += async(s, e) => { await SubmitProgressChangedAsync(QueueOrderWorker.QueueMessage, QueueOrderWorker.SlowQueueWarning).ConfigureAwait(true); }; }