Exemple #1
0
        private void SchemeCheck()
        {
            if ((DateTime.Now.Hour < 9) || (DateTime.Now.Hour > 21) || ((DateTime.Now.Hour > 21) && (DateTime.Now.Minute > 30)))
            {
                return;
            }

            DataTable dt = new DAL.Views.V_Schemes().Open(ConnectionString, "id", "DATEDIFF(minute, case when UpdateDatetime < StartTime then dateadd(minute, 2, StartTime) else UpdateDatetime end, getdate()) > 4 and Schedule >= 100 and Buyed = 0 and QuashStatus = 0 and State = 1", "");

            if (dt == null)
            {
                msg.Send("读取未出票方案错误(SchemeCheck)。");
                log.Write("读取未出票方案错误(SchemeCheck)。");

                return;
            }

            if (dt.Rows.Count > 0)
            {
                string[] strMobile = new string[1];

                strMobile[0] = "13537697101";

                for (int i = 0; i < strMobile.Length; i++)
                {
                    SMS.Eucp.Gateway.CallResult Result = segg.Send(strMobile[i], "爱彩乐出现紧急票,需要立即处理。");

                    if (Result.Code < 0)
                    {
                        log.Write("Send is Fail: " + Result.Description);
                    }
                }

                Shove._Net.Email.SendEmail("*****@*****.**", "*****@*****.**", "爱彩乐出现紧急票,需要立即处理。", "爱彩乐出现紧急票,需要立即处理。", "mail.icaile.com", "*****@*****.**", "1314521");
            }
        }
Exemple #2
0
        private void SchemeCheck()
        {
            if ((DateTime.Now.Hour < 9) || (DateTime.Now.Hour > 21) || ((DateTime.Now.Hour > 21) && (DateTime.Now.Minute > 30)))
            {
                return;
            }

            DataTable dt = new DAL.Views.V_Schemes().Open(ConnectionString, "id", "DATEDIFF(minute, case when UpdateDatetime < StartTime then dateadd(minute, 2, StartTime) else UpdateDatetime end, getdate()) > 4 and Schedule >= 100 and Buyed = 0 and QuashStatus = 0 and State = 1", "");

            if (dt == null)
            {
                msg.Send("读取未出票方案错误(SchemeCheck)。");
                log.Write("读取未出票方案错误(SchemeCheck)。");

                return;
            }

            if (dt.Rows.Count > 0)
            {
                string[] strMobile = new string[1];

                strMobile[0] = "13537697101";

                for (int i = 0; i < strMobile.Length; i++)
                {
                    SMS.Eucp.Gateway.CallResult Result = segg.Send(strMobile[i], "爱彩乐出现紧急票,需要立即处理。");

                    if (Result.Code < 0)
                    {
                        log.Write("Send is Fail: " + Result.Description);
                    }
                }

                Shove._Net.Email.SendEmail("*****@*****.**", "*****@*****.**", "爱彩乐出现紧急票,需要立即处理。", "爱彩乐出现紧急票,需要立即处理。", "mail.icaile.com", "*****@*****.**", "1314521");
            }
        }
Exemple #3
0
        private void GetSprize(string IsuseID, string Transmessage)
        {
            System.Xml.XmlDocument XmlDoc = new XmlDocument();
            XmlDoc.Load(new StringReader(Transmessage));

            System.Xml.XmlNodeList nodes = XmlDoc.GetElementsByTagName("*");
            System.Xml.XmlNodeList nodesBonusItem = XmlDoc.GetElementsByTagName("bonusItem");
            System.Xml.XmlNodeList nodesIssue = XmlDoc.GetElementsByTagName("issue");

            string code = "";

            if (nodes == null)
            {
                return;
            }

            string BonusNumber = "";

            for (int j = 0; j < nodes.Count; j++)
            {
                if (nodes[j].Name.ToUpper() == "RESPONSE")
                {
                    code = nodes[j].Attributes["code"].Value;
                }

                if (nodes[j].Name.ToUpper() != "BONUSQUERYRESULT")
                {
                    continue;
                }

                BonusNumber = nodes[j].Attributes["bonusNumber"].InnerText;

            }

            if (code != "0000")
            {
                return;
            }

            if (nodesIssue == null)
            {
                return;
            }

            string number = nodesIssue[0].Attributes["number"].Value;
            string LotteryName = nodesIssue[0].Attributes["gameName"].Value;

            int LotteryID = GetLotteryID(LotteryName);
            string WinNumber = GetWinNumber(LotteryID, BonusNumber);

            DataTable dtIsuse = new DAL.Tables.T_Isuses().Open(ConnectionString, "", "[ID] = " + IsuseID + " and [Name] = '" + number + "' and LotteryID = " + LotteryID.ToString() + " and IsOpened = 0", "");

            if ((dtIsuse == null) || (dtIsuse.Rows.Count < 1))
            {
                return;
            }

            DAL.Tables.T_Isuses T_Isuses = new DAL.Tables.T_Isuses();

            T_Isuses.WinLotteryNumber.Value = WinNumber;
            T_Isuses.OpenOperatorID.Value = 1;
            T_Isuses.Update(ConnectionString, "[ID] = " + IsuseID + " and [Name] = '" + number + "' and LotteryID = " + LotteryID.ToString());

            DataTable dtWinTypesSSL = new DAL.Tables.T_WinTypes().Open(ConnectionString, "", " LotteryID =" + LotteryID.ToString(), "");

            if ((dtWinTypesSSL != null) && dtWinTypesSSL.Rows.Count > 0)
            {
                double[] WinMoneyListSSL = new double[dtWinTypesSSL.Rows.Count * 2];

                double DefaultMoneySSL = 0;
                double DefaultMoneyNoWithTaxSSL = 0;

                for (int i = 0; i < dtWinTypesSSL.Rows.Count; i++)
                {
                    DefaultMoneySSL = Shove._Convert.StrToDouble(dtWinTypesSSL.Rows[i]["DefaultMoney"].ToString(), 0);
                    DefaultMoneyNoWithTaxSSL = Shove._Convert.StrToDouble(dtWinTypesSSL.Rows[i]["DefaultMoneyNoWithTax"].ToString(), 0);

                    WinMoneyListSSL[i * 2] = DefaultMoneySSL == 0 ? 1 : DefaultMoneyNoWithTaxSSL;
                    WinMoneyListSSL[i * 2 + 1] = DefaultMoneyNoWithTaxSSL == 0 ? 1 : DefaultMoneyNoWithTaxSSL;
                }

                DataTable t_dtSchemes = new DAL.Tables.T_Schemes().Open(ConnectionString, "", "IsuseID = " + IsuseID + " and WinMoney = 0 and Buyed =1 and  isnull(Identifiers, '') = ''", "");

                string t_LotteryNumber = "";
                SLS.Lottery.LotteryBase t_lb = new SLS.Lottery()[LotteryID];

                string t_Description = "";
                double t_WinMoneyNoWithTax = 0;

                for (int i = 0; i < t_dtSchemes.Rows.Count; i++)
                {
                    t_LotteryNumber = t_dtSchemes.Rows[i]["LotteryNumber"].ToString();
                    t_Description = "";
                    t_WinMoneyNoWithTax = 0;

                    double WinMoney = t_lb.ComputeWin(t_LotteryNumber, WinNumber.Trim(), ref t_Description, ref t_WinMoneyNoWithTax, int.Parse(t_dtSchemes.Rows[i]["PlayTypeID"].ToString()), WinMoneyListSSL);

                    if (WinMoney > 0)
                    {
                        Shove.Database.MSSQL.ExecuteNonQuery(ConnectionString, "update T_Schemes set PreWinMoney = @p1, PreWinMoneyNoWithTax = @p2, WinMoney = @p3, WinMoneyNoWithTax = @p4, WinDescription = @p5 where [ID] = " + t_dtSchemes.Rows[i]["ID"].ToString(),
                            new Shove.Database.MSSQL.Parameter("p1", SqlDbType.Money, 0, ParameterDirection.Input, WinMoney * Shove._Convert.StrToInt(t_dtSchemes.Rows[i]["Multiple"].ToString(), 1)),
                            new Shove.Database.MSSQL.Parameter("p2", SqlDbType.Money, 0, ParameterDirection.Input, t_WinMoneyNoWithTax * Shove._Convert.StrToInt(t_dtSchemes.Rows[i]["Multiple"].ToString(), 1)),
                            new Shove.Database.MSSQL.Parameter("p3", SqlDbType.Money, 0, ParameterDirection.Input, WinMoney * Shove._Convert.StrToInt(t_dtSchemes.Rows[i]["Multiple"].ToString(), 1)),
                            new Shove.Database.MSSQL.Parameter("p4", SqlDbType.Money, 0, ParameterDirection.Input, t_WinMoneyNoWithTax * Shove._Convert.StrToInt(t_dtSchemes.Rows[i]["Multiple"].ToString(), 1)),
                            new Shove.Database.MSSQL.Parameter("p5", SqlDbType.VarChar, 0, ParameterDirection.Input, t_Description));

                        continue;
                    }
                }
            }

            string BonusXML = "<Schemes>";

            if ((nodesBonusItem != null) && (nodesBonusItem.Count > 0))
            {
                string bonusItemXML = Transmessage.Substring(Transmessage.IndexOf("<bonusQueryResult"), Transmessage.LastIndexOf("</response>") - Transmessage.IndexOf("<bonusQueryResult"));
                DataSet dsXML = new DataSet();

                try
                {
                    dsXML.ReadXml(new StringReader(bonusItemXML));
                }
                catch (Exception e)
                {
                    new Log("ElectronTicket\\HPSH").Write("电子票开奖,第 " + number + " 期解析开奖数据错误:" + e.Message);

                    return;
                }

                if ((dsXML == null) || (dsXML.Tables.Count < 3))
                {
                    new Log("ElectronTicket\\HPSH").Write("电子票开奖,第 " + number + " 期开奖数据格式不符合要求。");

                    return;
                }

                DataTable dtTickets = dsXML.Tables[2];
                DataTable dtSchemes = MSSQL.Select(ConnectionString, "SELECT SchemeID, 0 AS AgentID, SchemesMultiple as Multiple, Identifiers FROM V_SchemesSendToCenter WHERE (IsuseID = " + IsuseID + ")");

                if (dtSchemes == null)
                {
                    new Log("ElectronTicket\\HPSH").Write("电子票开奖,第 " + number + " 期,读取本地方案错误。");

                    return;
                }

                try
                {
                    var query1 = from NewDtTickets in dtTickets.AsEnumerable()
                                 join NewdtScheme in dtSchemes.AsEnumerable()
                                 on NewDtTickets.Field<string>("ticketID") equals NewdtScheme.Field<string>("Identifiers")
                                 select new
                                 {
                                     ID = NewdtScheme.Field<long>("SchemeID"),
                                     AgentID = NewdtScheme.Field<long>("AgentID"),
                                     Multiple = NewdtScheme.Field<int>("Multiple"),
                                     Bonus = Shove._Convert.StrToDouble(NewDtTickets.Field<string>("money"), 0),
                                     BonusLevel = NewDtTickets.Field<string>("bonusLevel"),
                                     Size = Shove._Convert.StrToInt(NewDtTickets.Field<string>("size"), 1)
                                 };

                    var query2 = from NewDt in query1.AsQueryable()
                                 group NewDt by new { NewDt.ID, NewDt.BonusLevel, NewDt.AgentID, NewDt.Multiple } into gg
                                 select new
                                 {
                                     ID = gg.Key.ID,
                                     AgentID = gg.Key.AgentID,
                                     Multiple = gg.Key.Multiple,
                                     Bonus = gg.Sum(NewDt => NewDt.Bonus),
                                     BonusLevel = GetSchemeWinDescription(gg.Key.BonusLevel, LotteryID, (gg.Sum(NewDt => NewDt.Size) / gg.Key.Multiple))
                                 };

                    var query3 = from NewDt in query2.AsQueryable()
                                 group NewDt by new { NewDt.ID, NewDt.Multiple, NewDt.AgentID } into t_dtSchemes
                                 select new
                                 {
                                     SchemeID = t_dtSchemes.Key.ID,
                                     AgentID = t_dtSchemes.Key.AgentID,
                                     Multiple = t_dtSchemes.Key.Multiple,
                                     Bonus = t_dtSchemes.Sum(NewDt => NewDt.Bonus),
                                     BonusLevel = t_dtSchemes.Merge(NewDt => NewDt.BonusLevel) + ((t_dtSchemes.Key.Multiple != 1) ? "(" + t_dtSchemes.Key.Multiple.ToString() + "倍)" : "")
                                 };

                    foreach (var Scheme in query3)
                    {
                            BonusXML += "<Scheme SchemeID=\"" + Scheme.SchemeID.ToString() + "\" WinMoney=\"" + Scheme.Bonus.ToString() + "\" WinDescription=\"" + Scheme.BonusLevel + "\" />";
                    }
                }
                catch (Exception e)
                {
                    new Log("ElectronTicket\\HPSH").Write("电子票开奖,第 " + number + " 期详细中奖数据解析错误:" + e.Message);

                    return;
                }
            }

            BonusXML += "</Schemes>";

            dtIsuse = new DAL.Tables.T_Isuses().Open(ConnectionString, "", "[ID] = " + IsuseID + " and IsOpened = 0", "");

            if ((dtIsuse == null) || (dtIsuse.Rows.Count < 1))
            {
                return;
            }

            int ReturnValue = 0;
            string ReturnDescription = "";

            DataSet ds = null;
            int Times = 0;
            int Result = -1;

            while ((Result < 0) && (Times < 5))
            {
                ReturnValue = 0;
                ReturnDescription = "";

                Result = DAL.Procedures.P_ElectronTicketWin(ConnectionString, ref ds, Shove._Convert.StrToLong(IsuseID, 0), BonusXML, ref ReturnValue, ref ReturnDescription);

                if (Result < 0)
                {
                    new Log("ElectronTicket\\HPSH").Write("电子票第 " + (Times + 1).ToString() + " 次派奖出现错误(IsuseOpenNotice) 期号为: " + number + ",彩种为: " + LotteryID.ToString());
                    Times++;

                    if (Times < 5)
                    {
                        System.Threading.Thread.Sleep(10000);
                    }

                    continue;
                }
            }

            if (ReturnValue < 0)
            {
                log.Write(ReturnDescription);

                return;
            }

            //PublicFunction.SendWinNotification(ds);

            DataTable dtWinTypes = new DAL.Tables.T_WinTypes().Open(ConnectionString, "", " LotteryID =" + LotteryID.ToString(), "");

            if ((dtWinTypes == null) || dtWinTypes.Rows.Count < 1)
            {
                msg.Send("执行电子票--获取彩种: " + LotteryID.ToString() + ",奖金等级时出现错误!");
                log.Write("执行电子票--获取彩种: " + LotteryID.ToString() + ",奖金等级时出现错误!");

                return;
            }

            double[] WinMoneyList = new double[dtWinTypes.Rows.Count * 2];

            double DefaultMoney = 0;
            double DefaultMoneyNoWithTax = 0;

            for (int i = 0; i < dtWinTypes.Rows.Count; i++)
            {
                DefaultMoney = Shove._Convert.StrToDouble(dtWinTypes.Rows[i]["DefaultMoney"].ToString(), 0);
                DefaultMoneyNoWithTax = Shove._Convert.StrToDouble(dtWinTypes.Rows[i]["DefaultMoneyNoWithTax"].ToString(), 0);

                WinMoneyList[i * 2] = DefaultMoney == 0 ? 1 : DefaultMoneyNoWithTax;
                WinMoneyList[i * 2 + 1] = DefaultMoneyNoWithTax == 0 ? 1 : DefaultMoneyNoWithTax;
            }

            DataTable dtSchemesWithTaskDetails = new DAL.Views.V_Schemes().Open(ConnectionString, "", " IsuseName = '" + number + "' and LotteryID = " + LotteryID.ToString() + " and WinMoney = 0  and Buyed = 0 and ID in ( select ID from V_ChaseTaskDetails where IsuseName = '" + number + "' and LotteryID = " + LotteryID.ToString() + ")", "");

            string LotteryNumber = "";
            SLS.Lottery.LotteryBase lb = new SLS.Lottery()[LotteryID];

            string Description = "";
            double WinMoneyNoWithTax = 0;

            for (int i = 0; i < dtSchemesWithTaskDetails.Rows.Count; i++)
            {
                LotteryNumber = dtSchemesWithTaskDetails.Rows[i]["LotteryNumber"].ToString();

                Description = "";
                WinMoneyNoWithTax = 0;

                double WinMoney = lb.ComputeWin(LotteryNumber, WinNumber.Trim(), ref Description, ref WinMoneyNoWithTax, int.Parse(dtSchemesWithTaskDetails.Rows[i]["PlayTypeID"].ToString()), WinMoneyList);

                if (WinMoney > 0)
                {
                    if (DAL.Procedures.P_ChaseTaskStopWhenWin(ConnectionString, Shove._Convert.StrToLong(dtSchemesWithTaskDetails.Rows[i]["SiteID"].ToString(), 0), Shove._Convert.StrToLong(dtSchemesWithTaskDetails.Rows[i]["ID"].ToString(), 0), WinMoney, ref ReturnValue, ref ReturnDescription) < 0)
                    {
                        msg.Send("执行电子票--判断是否停止追号的时候出现错误");
                        log.Write("执行电子票--判断是否停止追号的时候出现错误");

                        continue;
                    }
                }
            }
        }