Exemplo n.º 1
0
        internal SlideVcForm(Session session, string token, string appId)
        {
            InitializeComponent();

            _tcs       = new TaskCompletionSource <bool>();
            _vcControl = new SlideVcControl(session, token, appId)
            {
                Dock = DockStyle.Fill
            };
            Controls.Add(_vcControl);

            _vcControl.SlideOk += (sender, args) =>
            {
                DialogResult = DialogResult.OK;
                Close();
            };
            Closing += SlideVcForm_Closing;

            //60秒自动关闭
            _timer          = new Timer();
            _timer.Interval = 60 * 1000;
            _timer.Tick    += (sender, args) =>
            {
                _timer.Stop();
                Close();
            };
            _timer.Start();
        }
        private void SubmitBackupOrderDlg_Load(object sender, EventArgs e)
        {
            //车次列表
            RefreshTrains();

            void CartItemChanged(object s1, ItemEventArgs <BackupCartItem> e2) => RefreshTrains();

            _cart.Items.Added   += CartItemChanged;
            _cart.Items.Removed += CartItemChanged;
            Disposed            += (s1, e1) =>
            {
                _cart.Items.Added   -= CartItemChanged;
                _cart.Items.Removed -= CartItemChanged;
            };

            //联系人
            ps.ShowAddLink             = false;
            ps.RequestSelectPassenger += (_1, _2) => _cart.Passengers.Add(_2.PassengerRaw);
            ps.FilterExprList.Add(_ => _cart.Passengers.Contains(_));
            RefreshPassengers();
            void PassengersChanged(object s1, ItemEventArgs <Passenger> e2) => RefreshPassengers();

            _cart.Passengers.Added   += PassengersChanged;
            _cart.Passengers.Removed += PassengersChanged;
            Disposed += (s1, e1) =>
            {
                _cart.Passengers.Added   -= PassengersChanged;
                _cart.Passengers.Removed -= PassengersChanged;
            };

            //提交
            btnSubmit.Click += (_1, _2) =>
            {
                if (pQueue.Visible)
                {
                    CancelOrderQueueAsync();
                }
                else
                {
                    SubmitOrderAsync();
                }
            };

            //是否需要验证码
            if (_cart.NeedSlideVc)
            {
                _slideVc = new SlideVcControl(Session, _cart.SlideToken, SlideAppId.Order);
                pBottom.Controls.Add(_slideVc);
                _slideVc.Size     = new Size(310, 65);
                _slideVc.Location = new Point(pBottom.ClientSize.Width - _slideVc.Width - 10, (pBottom.ClientSize.Height - _slideVc.Height) / 2);
                _slideVc.SlideOk += (o, args) =>
                {
                    _slideVc.Visible      = false;
                    btnSubmit.Visible     = true;
                    _cart.SlideSig        = _slideVc.Sig;
                    _cart.SlideCSessionId = _slideVc.CfSessionId;
                    btnSubmit.PerformClick();
                };
                btnSubmit.Visible = false;
                _slideVc.BringToFront();
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 订单准备成功
        /// </summary>
        /// <param name="queueWarning">是否有排队警告</param>
        /// <returns></returns>
        protected virtual async Task PrepareSuccessAsync(bool queueWarning)
        {
            PreventCloseFlag = false;
            SetFocus();

            VerifyCodeBox.SetIfNeedVc(SubmitOrderWorker.NeedVc);

            if (await CanSkipVcAsync().ConfigureAwait(true))
            {
                //TODO 这里将延迟的流程延迟到提交订单中了。
                //     现在的延迟不高

                //if (SubmitOrderWorker.NeedVcTime > 0)
                //{
                //	_safeTime = SubmitOrderWorker.NeedVcTime - (SubmitOrderWorker.VcBaseTime == null ? 0 : (int)(DateTime.Now - SubmitOrderWorker.VcBaseTime.Value).TotalMilliseconds);
                //	//_safeTime = Math.Min(ApiConfiguration.Instance.MinimalVcWaitTimeRunTime, _safeTime);
                //	_delaySubmit = true;
                //	Debug.WriteLine($"[VCTIME] {SubmitOrderWorker.NeedVcTime} [BASETIME] {SubmitOrderWorker.VcBaseTime?.ToString("O")} [DELAYTIME] {_safeTime}");

                //	StartSafeTimeCountDown();
                //}
                //else
                if (PassengerInTickets?.Count() > 0 && PassengerInTickets.All(s => s.SeatType != '\0'))
                {
                    await BeginSubmitOrderAsync().ConfigureAwait(true);
                }
                else
                {
                    await SafeTimeEnd().ConfigureAwait(true);
                }
            }
            else if (SubmitOrderWorker.NeedSlideVc)
            {
                //需要滑动验证码
                if (_slideVc == null)
                {
                    _slideVc          = new SlideVcControl(Session, SubmitOrderWorker.SlideVcToken, SlideAppId.Order);
                    _slideVc.SlideOk += async(sender, args) =>
                    {
                        await SetAllowOperationAsync(true, true);

                        SubmitOrderWorker.SlideSig        = _slideVc.Sig;
                        SubmitOrderWorker.SlideCSessionId = _slideVc.CfSessionId;
                        _submitButton.Visible             = true;
                        _slideVc.Visible = false;
                        await TryBeginSubmitOrderAsync();
                    };
                    VerifyCodeBox.Parent.Controls.Add(_slideVc);
                    _slideVc.Location = VerifyCodeBox.Location + new Size(0, VerifyCodeBox.Size.Height - _slideVc.Height);
                    _slideVc.BringToFront();
                }
                else
                {
                    _slideVc.Token = SubmitOrderWorker.SlideVcToken;
                }
                VerifyCodeBox.Visible = false;
                _submitButton.Visible = false;
                await OrderInitSuccessAsync(true).ConfigureAwait(true);
            }
            else if (Session.LastVerifyCode != null)
            {
                VerifyCodeBox.ValidateImage = Properties.Resources.img_preinput;
                SubmitOrderWorker.RandCode  = Session.LastVerifyCode;

                await TryBeginSubmitOrderAsync().ConfigureAwait(true);
            }
            else
            {
                VerifyCodeBox.Visible = false;
                if (_slideVc != null)
                {
                    _slideVc.Visible = false;
                }
                _submitButton.Visible = true;
                await OrderInitSuccessAsync(SubmitOrderWorker.NeedVc).ConfigureAwait(true);
            }
        }