Exemplo n.º 1
0
 private void DoOrder()
 {
     try
     {
         string canBuyTrainCode = string.Empty;
         DataTable dtTrainCode = dt.DefaultView.ToTable("TrainCode");
         for (int i = 0; i < dtTrainCode.Rows.Count; i++)
         {
             string trainCode = dtTrainCode.Rows[i][0].ToString().Trim();
             if (canBuyTrainCode == "")
             {
                 canBuyTrainCode = trainCode;
             }
             else
             {
                 canBuyTrainCode = canBuyTrainCode + "," + trainCode;
             }
             canBuyTrainCode = canBuyTrainCode + ",";
         }
         WriteLog("查询到符合条件的车次有" + dt.Rows.Count + "个:" + canBuyTrainCode + ".", txtLog);
         //尝试订票
         string msg = string.Empty;
         bool exit = false;
         for (int i = 0; i < dt.Rows.Count; i++)
         {
             if (!exit)
             {
                 DataRow row = dt.Rows[i];
                 string _trainCode = row["TrainCode"].ToString().Trim();
                 List<string> seatList = GetSeatList(row);
                 if (seatList.Count > 0)
                 {
                     for (int j = 0; j < seatList.Count; j++)
                     {
                         string seatName = seatList[j];
                         string seatType = StaticValues.DicSeatType[seatName];
                         WriteLog("正在尝试预定:" + _trainCode + "次," + seatName, txtLog);
                         string _orderKey = dt.Rows[i]["OrderKey"].ToString().Trim();
                         WriteLog("正在提取预定车次信息...", txtLog);
                         TicketInfo ti = TicketHelper.GetTicketInfo(_orderKey, qe, ref msg);
                         if (ti != null)
                         {
                             List<PassengerInfo> _passengerList = Convert2PassengerInfo(seatType);
                             WriteLog("正在加载并识别验证码...", txtLog);
                             VcForm vcForm = new VcForm(this, ti.Token);
                             if (vcForm.ShowDialog() == DialogResult.OK)
                             {
                                 WriteLog("订单确认中...", txtLog);
                                 bool flag = TicketHelper.CheckOrderInfo(ti.Token, code, _passengerList, ref msg);
                                 if (flag)
                                 {
                                     bool canBuy = true;
                                     CountInfo ci = TicketHelper.GetQueueCount(ti, seatType);
                                     string[] seatInfo = ci.ticketCnt.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                                     string info = string.Empty;
                                     if (seatInfo.Length == 2)
                                     {
                                         info = "本次列车,剩余" + "[" + StaticValues.DicSeatType1[seatType] + "]" + seatInfo[0] + "张,[无座]" + seatInfo[1] + "张。";
                                     }
                                     if (seatInfo.Length == 1)
                                     {
                                         info = "本次列车,剩余" + "[" + StaticValues.DicSeatType1[seatType] + "]" + seatInfo[0] + "张。";
                                     }
                                     if (ci.op_2 == "true")
                                     {
                                         info += "目前排队人数已经超过余票张数,请您选择其他席别或车次。";
                                         canBuy = false;
                                     }
                                     else
                                     {
                                         if (Convert.ToInt32(ci.countT) > 0)
                                         {
                                             info += "目前排队人数" + ci.countT + "人";
                                         }
                                     }
                                     WriteLog(info, txtLog);
                                     if (canBuy)
                                     {
                                         WriteLog("正在处理订单中,请稍后...", txtLog);
                                         //确认
                                         flag = TicketHelper.ConfirmSingleForQueue(ti, code, _passengerList, ref msg);
                                         WriteLog("订单处理成功,正在检查订单状态...", txtLog);
                                         while (true)
                                         {
                                             var result = TicketHelper.QueryOrderWaitTime(ti.Token);
                                             if (result.waitTime <= 0)
                                             {
                                                 if (result.orderId != "")
                                                 {
                                                     string tip = "恭喜你,订单完成,订单编号为:" + result.orderId + "!";
                                                     MessageBox.Show(tip, "订单成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                                     this.BeginInvoke(new MethodInvoker(delegate()
                                                     {
                                                         TipForm tf = new TipForm(tip, "订单号:" + result.orderId);
                                                         tf.Show();
                                                         this.Close();
                                                     }));
                                                 }
                                                 else
                                                 {
                                                     WriteLog("出票失败,可能没有足够的票!", txtLog);
                                                 }
                                                 break;
                                             }
                                             else
                                             {
                                                 string tip = result.count > 0 ? "你前面还有" + result.count + "个订单要处理,大约需要等待时间:" + result.waitTime + "秒" : "订单正在处理,大概需要等待+:" + result.waitTime + "秒";
                                                 WriteLog(tip, txtLog);
                                                 Thread.Sleep(500);
                                             }
                                         }
                                         break;
                                     }
                                     else
                                     {
                                         this.WriteLog(msg, this.txtLog);
                                     }
                                 }
                                 else
                                 {
                                     exit = true;
                                     if (msg == "")
                                     {
                                         msg = "订单确认失败或者网络超时!";
                                     }
                                     this.WriteLog(msg, this.txtLog);
                                     break;
                                 }
                             }
                             else
                             {
                                 exit = true;
                                 this.WriteLog("提取预定车次信息错误!", this.txtLog);
                                 break;
                             }
                         }
                         else
                         {
                             exit = true;
                             if (msg.Contains("您还有未处理的订单"))
                             {
                                 msg = "您还有未处理的订单,请处理完后再订票!";
                             }
                             this.WriteLog(msg, this.txtLog);
                             break;
                         }
                     }
                 }
                 else
                 {
                     WriteLog(_trainCode + "票数不够!", txtLog);
                 }
             }
         }
         WriteLog("本次自动购票结束!", txtLog);
     }
     catch
     { }
 }
Exemplo n.º 2
0
 private void DoOrder(string vc, List<PassengerInfo> list)
 {
     string seatType=list[0].SeatType;
     WriteLog("订单确认中...", txtLog);
     string msg = string.Empty;
     bool flag = TicketHelper.CheckOrderInfo(ti.Token, vc, list,ref msg);
     if (flag)
     {
         bool canBuy = true;
         CountInfo ci = TicketHelper.GetQueueCount(ti, seatType);
        string[] seatInfo = ci.ticketCnt.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
        string info=string.Empty;
         if(seatInfo.Length==2)
         {
             info = "本次列车,剩余" + "[" + StaticValues.DicSeatType1[seatType] + "]" + seatInfo[0] + "张,[无座]" + seatInfo[1] + "张。";
         }
         if (seatInfo.Length == 1)
         {
             info = "本次列车,剩余" + "[" + StaticValues.DicSeatType1[seatType] + "]" + seatInfo[0] + "张。";
         }
        if (ci.op_2 == "true")
        {
            info += "目前排队人数已经超过余票张数,请您选择其他席别或车次。";
            canBuy = false;
        }
        else
        {
            if (Convert.ToInt32(ci.countT) > 0)
            {
                info += "目前排队人数" + ci.countT + "人";
            }
        }
        WriteLog(info, txtLog);
        if (canBuy)
        {
            WriteLog("正在处理订单中,请稍后...", txtLog);
            //确认
            flag = TicketHelper.ConfirmSingleForQueue(ti, vc, list, ref msg);
            WriteLog("订单处理成功,正在检查订单状态...", txtLog);
            while (true)
            {
                var result = TicketHelper.QueryOrderWaitTime(ti.Token);
                if (result != null)
                {
                    if (result.waitTime <= 0)
                    {
                        if (result.orderId != "")
                        {
                            string tip = "恭喜你,订单完成,订单编号为:" + result.orderId + "!";
                            MessageBox.Show(tip, "订单成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            this.BeginInvoke(new MethodInvoker(delegate()
                            {
                                TipForm tf = new TipForm(tip, "订单号:" + result.orderId);
                                tf.Show();
                                this.Close();
                            }));
                        }
                        else
                        {
                            WriteLog("出票失败,可能没有足够的票!", txtLog);
                        }
                        break;
                    }
                    else
                    {
                        string tip = result.count > 0 ? "你前面还有" + result.count + "个订单要处理,大约需要等待时间:" + result.waitTime + "秒" : "订单正在处理,大概需要等待+:" + result.waitTime + "秒";
                        WriteLog(tip, txtLog);
                        Thread.Sleep(500);
                    }
                }
            }
        }
        else
        {
            this.WriteLog(msg, this.txtLog);
            this.BeginInvoke(new MethodInvoker(delegate()
            {
                this.btnOrder.Enabled = true;
            }));
            LoadVc();
        }
     }
     else
     {
         this.WriteLog(msg, this.txtLog);
         this.BeginInvoke(new MethodInvoker(delegate()
         {
             this.btnOrder.Enabled = true;
         }));
         LoadVc();
     }
 }
Exemplo n.º 3
0
 private void DoOrder()
 {
     try
     {
         string    canBuyTrainCode = string.Empty;
         DataTable dtTrainCode     = dt.DefaultView.ToTable("TrainCode");
         for (int i = 0; i < dtTrainCode.Rows.Count; i++)
         {
             string trainCode = dtTrainCode.Rows[i][0].ToString().Trim();
             if (canBuyTrainCode == "")
             {
                 canBuyTrainCode = trainCode;
             }
             else
             {
                 canBuyTrainCode = canBuyTrainCode + "," + trainCode;
             }
             canBuyTrainCode = canBuyTrainCode + ",";
         }
         WriteLog("查询到符合条件的车次有" + dt.Rows.Count + "个:" + canBuyTrainCode + ".", txtLog);
         //尝试订票
         string msg  = string.Empty;
         bool   exit = false;
         for (int i = 0; i < dt.Rows.Count; i++)
         {
             if (!exit)
             {
                 DataRow       row        = dt.Rows[i];
                 string        _trainCode = row["TrainCode"].ToString().Trim();
                 List <string> seatList   = GetSeatList(row);
                 if (seatList.Count > 0)
                 {
                     for (int j = 0; j < seatList.Count; j++)
                     {
                         string seatName = seatList[j];
                         string seatType = StaticValues.DicSeatType[seatName];
                         WriteLog("正在尝试预定:" + _trainCode + "次," + seatName, txtLog);
                         string _orderKey = dt.Rows[i]["OrderKey"].ToString().Trim();
                         WriteLog("正在提取预定车次信息...", txtLog);
                         TicketInfo ti = TicketHelper.GetTicketInfo(_orderKey, qe, ref msg);
                         if (ti != null)
                         {
                             List <PassengerInfo> _passengerList = Convert2PassengerInfo(seatType);
                             WriteLog("正在加载并识别验证码...", txtLog);
                             VcForm vcForm = new VcForm(this, ti.Token);
                             if (vcForm.ShowDialog() == DialogResult.OK)
                             {
                                 WriteLog("订单确认中...", txtLog);
                                 bool flag = TicketHelper.CheckOrderInfo(ti.Token, code, _passengerList, ref msg);
                                 if (flag)
                                 {
                                     bool      canBuy   = true;
                                     CountInfo ci       = TicketHelper.GetQueueCount(ti, seatType);
                                     string[]  seatInfo = ci.ticketCnt.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                                     string    info     = string.Empty;
                                     if (seatInfo.Length == 2)
                                     {
                                         info = "本次列车,剩余" + "[" + StaticValues.DicSeatType1[seatType] + "]" + seatInfo[0] + "张,[无座]" + seatInfo[1] + "张。";
                                     }
                                     if (seatInfo.Length == 1)
                                     {
                                         info = "本次列车,剩余" + "[" + StaticValues.DicSeatType1[seatType] + "]" + seatInfo[0] + "张。";
                                     }
                                     if (ci.op_2 == "true")
                                     {
                                         info  += "目前排队人数已经超过余票张数,请您选择其他席别或车次。";
                                         canBuy = false;
                                     }
                                     else
                                     {
                                         if (Convert.ToInt32(ci.countT) > 0)
                                         {
                                             info += "目前排队人数" + ci.countT + "人";
                                         }
                                     }
                                     WriteLog(info, txtLog);
                                     if (canBuy)
                                     {
                                         WriteLog("正在处理订单中,请稍后...", txtLog);
                                         //确认
                                         flag = TicketHelper.ConfirmSingleForQueue(ti, code, _passengerList, ref msg);
                                         WriteLog("订单处理成功,正在检查订单状态...", txtLog);
                                         while (true)
                                         {
                                             var result = TicketHelper.QueryOrderWaitTime(ti.Token);
                                             if (result.waitTime <= 0)
                                             {
                                                 if (result.orderId != "")
                                                 {
                                                     string tip = "恭喜你,订单完成,订单编号为:" + result.orderId + "!";
                                                     MessageBox.Show(tip, "订单成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                                     this.BeginInvoke(new MethodInvoker(delegate()
                                                     {
                                                         TipForm tf = new TipForm(tip, "订单号:" + result.orderId);
                                                         tf.Show();
                                                         this.Close();
                                                     }));
                                                 }
                                                 else
                                                 {
                                                     WriteLog("出票失败,可能没有足够的票!", txtLog);
                                                 }
                                                 break;
                                             }
                                             else
                                             {
                                                 string tip = result.count > 0 ? "你前面还有" + result.count + "个订单要处理,大约需要等待时间:" + result.waitTime + "秒" : "订单正在处理,大概需要等待+:" + result.waitTime + "秒";
                                                 WriteLog(tip, txtLog);
                                                 Thread.Sleep(500);
                                             }
                                         }
                                         break;
                                     }
                                     else
                                     {
                                         this.WriteLog(msg, this.txtLog);
                                     }
                                 }
                                 else
                                 {
                                     exit = true;
                                     if (msg == "")
                                     {
                                         msg = "订单确认失败或者网络超时!";
                                     }
                                     this.WriteLog(msg, this.txtLog);
                                     break;
                                 }
                             }
                             else
                             {
                                 exit = true;
                                 this.WriteLog("提取预定车次信息错误!", this.txtLog);
                                 break;
                             }
                         }
                         else
                         {
                             exit = true;
                             if (msg.Contains("您还有未处理的订单"))
                             {
                                 msg = "您还有未处理的订单,请处理完后再订票!";
                             }
                             this.WriteLog(msg, this.txtLog);
                             break;
                         }
                     }
                 }
                 else
                 {
                     WriteLog(_trainCode + "票数不够!", txtLog);
                 }
             }
         }
         WriteLog("本次自动购票结束!", txtLog);
     }
     catch
     { }
 }
Exemplo n.º 4
0
        private void DoOrder(string vc, List <PassengerInfo> list)
        {
            string seatType = list[0].SeatType;

            WriteLog("订单确认中...", txtLog);
            string msg  = string.Empty;
            bool   flag = TicketHelper.CheckOrderInfo(ti.Token, vc, list, ref msg);

            if (flag)
            {
                bool      canBuy   = true;
                CountInfo ci       = TicketHelper.GetQueueCount(ti, seatType);
                string[]  seatInfo = ci.ticketCnt.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                string    info     = string.Empty;
                if (seatInfo.Length == 2)
                {
                    info = "本次列车,剩余" + "[" + StaticValues.DicSeatType1[seatType] + "]" + seatInfo[0] + "张,[无座]" + seatInfo[1] + "张。";
                }
                if (seatInfo.Length == 1)
                {
                    info = "本次列车,剩余" + "[" + StaticValues.DicSeatType1[seatType] + "]" + seatInfo[0] + "张。";
                }
                if (ci.op_2 == "true")
                {
                    info  += "目前排队人数已经超过余票张数,请您选择其他席别或车次。";
                    canBuy = false;
                }
                else
                {
                    if (Convert.ToInt32(ci.countT) > 0)
                    {
                        info += "目前排队人数" + ci.countT + "人";
                    }
                }
                WriteLog(info, txtLog);
                if (canBuy)
                {
                    WriteLog("正在处理订单中,请稍后...", txtLog);
                    //确认
                    flag = TicketHelper.ConfirmSingleForQueue(ti, vc, list, ref msg);
                    WriteLog("订单处理成功,正在检查订单状态...", txtLog);
                    while (true)
                    {
                        var result = TicketHelper.QueryOrderWaitTime(ti.Token);
                        if (result != null)
                        {
                            if (result.waitTime <= 0)
                            {
                                if (result.orderId != "")
                                {
                                    string tip = "恭喜你,订单完成,订单编号为:" + result.orderId + "!";
                                    MessageBox.Show(tip, "订单成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                    this.BeginInvoke(new MethodInvoker(delegate()
                                    {
                                        TipForm tf = new TipForm(tip, "订单号:" + result.orderId);
                                        tf.Show();
                                        this.Close();
                                    }));
                                }
                                else
                                {
                                    WriteLog("出票失败,可能没有足够的票!", txtLog);
                                }
                                break;
                            }
                            else
                            {
                                string tip = result.count > 0 ? "你前面还有" + result.count + "个订单要处理,大约需要等待时间:" + result.waitTime + "秒" : "订单正在处理,大概需要等待+:" + result.waitTime + "秒";
                                WriteLog(tip, txtLog);
                                Thread.Sleep(500);
                            }
                        }
                    }
                }
                else
                {
                    this.WriteLog(msg, this.txtLog);
                    this.BeginInvoke(new MethodInvoker(delegate()
                    {
                        this.btnOrder.Enabled = true;
                    }));
                    LoadVc();
                }
            }
            else
            {
                this.WriteLog(msg, this.txtLog);
                this.BeginInvoke(new MethodInvoker(delegate()
                {
                    this.btnOrder.Enabled = true;
                }));
                LoadVc();
            }
        }
Exemplo n.º 5
0
        private void DoQuery()
        {
            qe.optionDates.Clear();
            this.BeginInvoke(new MethodInvoker(delegate()
            {
                for (int i = 0; i < this.plSelectDates.Controls.Count; i++)
                {
                    LinkLabel ll = this.plSelectDates.Controls[i] as LinkLabel;
                    string date  = ll.Text;
                    if (!qe.optionDates.Contains(date))
                    {
                        qe.optionDates.Add(date);
                    }
                }
            }));
            DataTable dt = null;

            do
            {
                if (this.InvokeRequired)
                {
                    this.BeginInvoke(new MethodInvoker(delegate()
                    {
                        this.btnQuery.Enabled = false;
                        this.lbLoding.BringToFront();
                        this.lbLoding.Visible = true;
                        this.plNoTicket.Hide();
                    }));
                }
                dt = TicketHelper.GetLeftTicket(ref qe);
                this.BeginInvoke(new MethodInvoker(delegate()
                {
                    this.lbLoding.Visible = false;
                    dgTicket.DataSource   = dt;
                    dgTicket.ClearSelection();
                    lbQueryInfo.Text = qe.from_station_telecode_name + "-->" + qe.to_station_telecode_name + "(" + qe.train_date + "  " + Common.GetWeekDay(Convert.ToDateTime(qe.train_date)) + ")共计" + dt.Rows.Count + "个车次";
                    if (dt.Rows.Count == 0)
                    {
                        this.plNoTicket.Show();
                        this.plNoTicket.Location = this.lbLoding.Location;
                    }
                }));
                if (dt.Rows.Count > 0)
                {
                    if (!autoBuyFlag)
                    {
                        if (this.InvokeRequired)
                        {
                            this.BeginInvoke(new MethodInvoker(delegate()
                            {
                                //保存
                                UserManager.SaveUserInfo(StaticValues.MyUser.UserName, StaticValues.MyUser.Pwd, qe.from_station_telecode_name, qe.to_station_telecode_name);
                                mp3          = new Mp3Helper();
                                mp3.FileName = "succes.mp3";
                                mp3.Play();
                                TipForm tf = new TipForm("恭喜你,有票了,赶快去预订吧!", "有票了");
                                tf.Show();
                            }));
                        }
                    }
                    else
                    {
                        AutoBuyTipForm atf = new AutoBuyTipForm(dt, qe, myList);
                        atf.ShowDialog();
                    }
                }
                ControlQueryRate(timeSpan);
            }while (autoFlag && dt.Rows.Count == 0);
            this.BeginInvoke(new MethodInvoker(delegate()
            {
                btnQuery.Enabled = true;
            }));
        }
Exemplo n.º 6
0
        private void DoQuery()
        {
            qe.optionDates.Clear();
            this.BeginInvoke(new MethodInvoker(delegate()
            {
                for (int i = 0; i < this.plSelectDates.Controls.Count; i++)
                {
                    LinkLabel ll = this.plSelectDates.Controls[i] as LinkLabel;
                    string date = ll.Text;
                    if (!qe.optionDates.Contains(date))
                    {
                        qe.optionDates.Add(date);
                    }
                }

            }));
            DataTable dt = null;
            do
            {
                if (this.InvokeRequired)
                {
                    this.BeginInvoke(new MethodInvoker(delegate()
                    {
                        this.btnQuery.Enabled = false;
                        this.lbLoding.BringToFront();
                        this.lbLoding.Visible = true;
                        this.plNoTicket.Hide();

                    }));
                }
                dt = TicketHelper.GetLeftTicket(ref qe);
                this.BeginInvoke(new MethodInvoker(delegate()
                {
                    this.lbLoding.Visible = false;
                    dgTicket.DataSource = dt;
                    dgTicket.ClearSelection();
                    lbQueryInfo.Text =qe.from_station_telecode_name+"-->"+qe.to_station_telecode_name+"("+qe.train_date+"  "+Common.GetWeekDay(Convert.ToDateTime(qe.train_date))+")共计"+dt.Rows.Count+"个车次";          
                    if (dt.Rows.Count == 0)
                    {
                        this.plNoTicket.Show();
                        this.plNoTicket.Location = this.lbLoding.Location;
                    }
                }));
                if (dt.Rows.Count > 0)
                {
                    if (!autoBuyFlag)
                    {
                        if (this.InvokeRequired)
                        {
                            this.BeginInvoke(new MethodInvoker(delegate()
                            {
                                //保存
                                UserManager.SaveUserInfo(StaticValues.MyUser.UserName, StaticValues.MyUser.Pwd, qe.from_station_telecode_name, qe.to_station_telecode_name);
                                mp3 = new Mp3Helper();
                                mp3.FileName = "succes.mp3";
                                mp3.Play();
                                TipForm tf = new TipForm("恭喜你,有票了,赶快去预订吧!", "有票了");
                                tf.Show();
                            }));
                        }
                    }
                    else
                    {
                        
                        AutoBuyTipForm atf = new AutoBuyTipForm(dt,qe,myList);
                        atf.ShowDialog();
                    }
                }
                ControlQueryRate(timeSpan);
            }
            while (autoFlag&&dt.Rows.Count==0);
            this.BeginInvoke(new MethodInvoker(delegate()
            {
                btnQuery.Enabled = true;
            }));
        }