public string UpdateLotteryNumber(string id, string content, int Money) { DataTable dt = new DAL.Tables.T_Schemes().Open("", "id=" + id, ""); if (dt == null) { return(""); } if (dt.Rows.Count != 1) { return(""); } string Share = dt.Rows[0]["Share"].ToString(); string Schedule = dt.Rows[0]["Schedule"].ToString(); DAL.Tables.T_Schemes s = new DAL.Tables.T_Schemes(); s.LotteryNumber.Value = content; s.Money.Value = Money; s.Share.Value = Money; if (s.Update("ID=" + id) < 0) { return("修改方案号码失败!"); } return("上传成功!"); }
protected void btnGO_Click(object sender, System.EventArgs e) { tbWinNumber.Text = Shove._Convert.ToDBC(tbWinNumber.Text.Trim().Replace(" ", " ")).Trim(); if (!new SLS.Lottery()[int.Parse(ddlLottery.SelectedValue)].AnalyseWinNumber(tbWinNumber.Text)) { Shove._Web.JavaScript.Alert(this.Page, "开奖号码不正确!"); return; } double[] WinMoneyList = new double[g.Rows.Count * 2]; for (int i = 0; i < g.Rows.Count; i++) { WinMoneyList[i * 2] = Shove._Convert.StrToDouble(((TextBox)g.Rows[i].Cells[1].FindControl("tbMoney")).Text, 0); WinMoneyList[i * 2 + 1] = Shove._Convert.StrToDouble(((TextBox)g.Rows[i].Cells[2].FindControl("tbMoneyNoWithTax")).Text, 0); if (WinMoneyList[i * 2] < 0) { Shove._Web.JavaScript.Alert(this.Page, "第 " + (i + 1).ToString() + " 项奖金输入错误!"); return; } } DAL.Tables.T_Schemes T_Schemes = new DAL.Tables.T_Schemes(); DataTable dt = T_Schemes.Open("", "IsuseID = " + ddlIsuse.SelectedValue + " and isOpened = 1", ""); if (dt == null) { PF.GoError(ErrorNumber.DataReadWrite, "数据库繁忙,请重试", this.GetType().BaseType.FullName); return; } for (int i = 0; i < dt.Rows.Count; i++) { string LotteryNumber = dt.Rows[i]["LotteryNumber"].ToString(); string Description = ""; double WinMoneyNoWithTax = 0; double WinMoney = new SLS.Lottery()[int.Parse(ddlLottery.SelectedValue)].ComputeWin(LotteryNumber, tbWinNumber.Text.Trim(), ref Description, ref WinMoneyNoWithTax, int.Parse(dt.Rows[i]["PlayTypeID"].ToString()), WinMoneyList); int Multiple = Shove._Convert.StrToInt(dt.Rows[i]["Multiple"].ToString(), 1); T_Schemes.WinDescription.Value = Description; T_Schemes.Update("[ID] = " + dt.Rows[i]["ID"].ToString()); } //tbWinNumber.Text = ""; Shove._Web.JavaScript.Alert(this.Page, "重构中奖描述成功。"); }
// 满员方案拆分为票 private void WriteTickets() { DataTable dt = new DAL.Views.V_SchemeSchedules().Open(ConnectionString, " ID, LotteryID, PlayTypeID, LotteryNumber, Multiple, Money", "Buyed = 0 and PrintOutType = 103 and (GetDate() between StartTime and EndTime) and Schedule >= 100 and not [ID] in (select SchemeID from T_SchemesSendToCenter)", "[ID]"); if (dt == null) { msg.Send("读取方案错误(WriteTickets)。"); log.Write("读取方案错误(WriteTickets)。"); return; } DAL.Tables.T_Schemes t_Schemes = new DAL.Tables.T_Schemes(); ElectronTicketBase.ElectronTicketTwo ElectronTicket = new ElectronTicketBase.ElectronTicketTwo(); foreach (DataRow dr in dt.Rows) { List <string> TicekList = ElectronTicket.ToResault(Convert.ToInt32(dr["PlayTypeID"].ToString()), dr["LotteryNumber"].ToString()); string LotterNumber = null; long SchemeID = Shove._Convert.StrToLong(dr["ID"].ToString(), -1); for (int j = 0; j < TicekList.Count; j++) { LotterNumber += TicekList[j].ToString() + ","; } int PlayTypeID = Shove._Convert.StrToInt(dr["PlayTypeID"].ToString(), -1); int Multiple = Shove._Convert.StrToInt(dr["Multiple"].ToString(), -1); decimal Money = Convert.ToDecimal(dr["Money"].ToString()); if ((SchemeID < 0) || (PlayTypeID < 0) || (Multiple < 1)) { msg.Send("读取方案错误(WriteTickets)。方案号:" + SchemeID.ToString()); log.Write("读取方案错误(WriteTickets)。方案号:" + SchemeID.ToString()); continue; } string TicketXML = "<Tickets>"; TicketXML += "<Ticket LotteryNumber=\"" + LotterNumber + "\" Multiple=\"" + Multiple + "\" Money=\"" + Money + "\" />"; TicketXML += "</Tickets>"; int ReturnValue = 0; string ReturnDescription = ""; int Result = DAL.Procedures.P_SchemesSendToCenterAdd(ConnectionString, SchemeID, PlayTypeID, TicketXML, ref ReturnValue, ref ReturnDescription); if ((Result < 0) || (ReturnValue < 0)) { msg.Send("票写入错误(WriteTickets):方案号:" + SchemeID.ToString() + "," + ReturnDescription); log.Write("票写入错误(WriteTickets):方案号:" + SchemeID.ToString() + "," + ReturnDescription); } } }
//开奖派奖 private void DrawingLottery(int LotteryID, string IsuseName, string WinNumber) { Log log = new Log("SystemGetLotteryOpenNumber"); if (!new SLS.Lottery()[LotteryID].AnalyseWinNumber(WinNumber)) { log.Write("开奖号码不正确!"); return; } int ReturnValue = 0; string ReturnDescription = ""; DataTable dtIsuse = new DAL.Tables.T_Isuses().Open(conn, "top 1 [ID], IsOpened", "LotteryID = " + LotteryID.ToString() + " and [Name] = '" + IsuseName + "' and IsOpened=0 and year(StartTime) = YEAR(GETDATE())", ""); if (dtIsuse == null) { log.Write("数据读写错误001"); return; } if (dtIsuse.Rows.Count <= 0) { //log.Write("暂无对应期号信息,彩种ID:" + LotteryID.ToString() + ", 期号:" + IsuseName); return; } if (Shove._Convert.StrToBool(dtIsuse.Rows[0]["IsOpened"].ToString(), false)) { //log.Write("彩种ID:" + LotteryID + "第" + IsuseName + "期已开奖"); return; } long IsuseID = Shove._Convert.StrToLong(dtIsuse.Rows[0]["ID"].ToString(), -1); DataTable dtWin = null; dtWin = new DAL.Tables.T_Schemes().Open(conn, "ID", "IsuseID = " + IsuseID.ToString() + " and isOpened = 0", ""); if (dtWin == null) { log.Write("数据读写错误002"); return; } // 准备开奖,开奖之前,对出票不完整的方案进行出票处理 ReturnValue = 0; ReturnDescription = ""; DataTable dtWinTypes = new DAL.Tables.T_WinTypes().Open(conn, "[DefaultMoney],[DefaultMoneyNoWithTax]", "LotteryID = " + LotteryID.ToString(), "[Order]"); if (dtWinTypes == null) { log.Write("奖金读取数据读写错误"); return; } double[] WinMoneyList = new double[dtWinTypes.Rows.Count * 2]; for (int y = 0; y < dtWinTypes.Rows.Count; y++) { WinMoneyList[y * 2] = Shove._Convert.StrToDouble(dtWinTypes.Rows[y]["DefaultMoney"].ToString(), 0); WinMoneyList[y * 2 + 1] = Shove._Convert.StrToDouble(dtWinTypes.Rows[y]["DefaultMoneyNoWithTax"].ToString(), 0); if (WinMoneyList[y * 2] < 0) { log.Write("第 " + (y + 1).ToString() + " 项奖金输入错误!"); return; } } dtWin = null; #region 开奖第一步 dtWin = new DAL.Tables.T_Schemes().Open(conn, "LotteryNumber,PlayTypeID,Multiple,ID", "isOpened = 0 and IsuseID = " + IsuseID.ToString(), "[ID]"); if (dtWin == null) { log.Write("方案数据读取错误"); return; } for (int y = 0; y < dtWin.Rows.Count; y++) { string LotteryNumber = ""; try { LotteryNumber = dtWin.Rows[y]["LotteryNumber"].ToString(); } catch { } string Description = ""; double WinMoneyNoWithTax = 0; try { double WinMoney = new SLS.Lottery()[LotteryID].ComputeWin(LotteryNumber, WinNumber, ref Description, ref WinMoneyNoWithTax, int.Parse(dtWin.Rows[y]["PlayTypeID"].ToString()), WinMoneyList); if (WinMoney > 0) { log.Write("方案ID:" + dtWin.Rows[y]["ID"].ToString() + " 中奖金额:" + WinMoney.ToString()); } Shove.Database.MSSQL.ExecuteNonQuery(conn, "update T_Schemes set EditWinMoney = @p1, EditWinMoneyNoWithTax = @p2, WinDescription = @p3 where [ID] = " + dtWin.Rows[y]["ID"].ToString(), new Shove.Database.MSSQL.Parameter("p1", SqlDbType.Money, 0, ParameterDirection.Input, WinMoney * Shove._Convert.StrToInt(dtWin.Rows[y]["Multiple"].ToString(), 1)), new Shove.Database.MSSQL.Parameter("p2", SqlDbType.Money, 0, ParameterDirection.Input, WinMoneyNoWithTax * Shove._Convert.StrToInt(dtWin.Rows[y]["Multiple"].ToString(), 1)), new Shove.Database.MSSQL.Parameter("p3", SqlDbType.VarChar, 0, ParameterDirection.Input, Description)); } catch { log.Write("方案ID:" + dtWin.Rows[y]["ID"].ToString() + " 开奖号码出现错误"); continue; } } #endregion log.Write("开奖-----------------------------4"); #region 开奖第三步 string OpenAffiche = new OpenAfficheTemplates()[LotteryID]; int SchemeCount, QuashCount, WinCount, WinNoBuyCount; bool isEndOpen = false; while (!isEndOpen) { SchemeCount = 0; QuashCount = 0; WinCount = 0; WinNoBuyCount = 0; // 总方案数,处理时撤单数,中奖数,中奖但未成功数 ReturnValue = 0; ReturnDescription = ""; DataSet dsWin = null; P_Win(conn, ref dsWin, IsuseID, WinNumber, OpenAffiche, 1, true, ref SchemeCount, ref QuashCount, ref WinCount, ref WinNoBuyCount, ref isEndOpen, ref ReturnValue, ref ReturnDescription); if ((dsWin == null) || (ReturnDescription != "")) { log.Write(ReturnDescription); return; } string Message = "彩种ID:{0},开奖成功,开奖号码:{1},总方案 {2} 个,撤单未满员或未出票方案 {3} 个,有效中奖方案 {4} 个,中奖但未成功方案 {5} 个。本期开奖还未全部完成, 请继续操作第三步。"; if (isEndOpen) { Message = "彩种ID:{0},开奖成功,开奖号码:{1},总方案 {2} 个,撤单未满员或未出票方案 {3} 个,有效中奖方案 {4} 个,中奖但未成功方案 {5} 个。本期开奖已全部完成。"; } log.Write(String.Format(Message, LotteryID, WinNumber, SchemeCount, QuashCount, WinCount, WinNoBuyCount)); } #endregion log.Write("开奖-----------------------------5"); }
// 满员方案拆分为票 private void WriteTickets() { DataTable dt = new DAL.Views.V_SchemeSchedules().Open(ConnectionString, "ID, LotteryID, PlayTypeID, LotteryNumber, Multiple, Money, (case LotteryID when 29 then -29 else LotteryID end) as LotteryID_2", "Buyed = 0 and (GetDate() between StartTime and EndTime) and BuyedShare >= Share and isnull(Identifiers, '') = '' and PrintOutType = 102 and State = 1 and dateadd(mi, 1, StateUpdateTime) <= GetDate() and LotteryID = 29", "LotteryID_2, UserType desc, [ID]"); if (dt == null) { msg.Send("读取方案错误(WriteTickets)。"); log.Write("读取方案错误(WriteTickets)。"); return; } DAL.Tables.T_Schemes t_Schemes = new DAL.Tables.T_Schemes(); foreach (DataRow dr in dt.Rows) { long SchemeID = Shove._Convert.StrToLong(dr["ID"].ToString(), -1); int LotteryID = Shove._Convert.StrToInt(dr["LotteryID"].ToString(), -1); string LotterNumber = dr["LotteryNumber"].ToString(); int PlayTypeID = Shove._Convert.StrToInt(dr["PlayTypeID"].ToString(), -1); int Multiple = Shove._Convert.StrToInt(dr["Multiple"].ToString(), -1); if ((SchemeID < 0) || (LotteryID < 0) || (PlayTypeID < 0) || (Multiple < 1)) { msg.Send("读取方案错误(WriteTickets)。方案号:" + SchemeID.ToString()); log.Write("读取方案错误(WriteTickets)。方案号:" + SchemeID.ToString()); continue; } double Money = 0; SLS.Lottery.Ticket[] Tickets = null; try { Tickets = new SLS.Lottery()[LotteryID].ToElectronicTicket_HPSH(PlayTypeID, LotterNumber, Multiple, 200, ref Money); } catch (Exception e) { msg.Send("拆票错误(WriteTickets)。方案号:" + SchemeID.ToString() + "," + e.Message); log.Write("拆票错误(WriteTickets)。方案号:" + SchemeID.ToString() + "," + e.Message); continue; } if (Tickets == null) { msg.Send("分解票错误(WriteTickets)。方案号:" + SchemeID.ToString()); log.Write("分解票错误(WriteTickets)。方案号:" + SchemeID.ToString()); continue; } if (Money != Shove._Convert.StrToDouble(dr["Money"].ToString(), -1)) { msg.Send("异常警告!!!!(WriteTickets)。方案号: " + SchemeID.ToString() + " 的购买金额与实际票的金额不符合!!!!"); log.Write("异常警告!!!!(WriteTickets)。方案号: " + SchemeID.ToString() + " 的购买金额与实际票的金额不符合!!!!"); SMS.Eucp.Gateway.CallResult SmsResult = segg.Send("13537697101", "异常警告!!!!(WriteTickets)。方案号: " + SchemeID.ToString() + " 的购买金额与实际票的金额不符合!!!!"); if (SmsResult.Code < 0) { log.Write("Send is Fail: " + SmsResult.Description); } SmsResult = segg.Send("13612833534", "异常警告!!!!(WriteTickets)。方案号: " + SchemeID.ToString() + " 的购买金额与实际票的金额不符合!!!!"); continue; } int TicketPlayTypeID = Tickets[0].PlayTypeID; string TicketXML = "<Tickets>"; foreach (SLS.Lottery.Ticket ticket in Tickets) { TicketXML += "<Ticket LotteryNumber=\"" + ticket.Number + "\" Multiple=\"" + ticket.Multiple + "\" Money=\"" + ticket.Money + "\" />"; } TicketXML += "</Tickets>"; int ReturnValue = 0; string ReturnDescription = ""; int Result = DAL.Procedures.P_SchemesSendToCenterAdd(ConnectionString, SchemeID, TicketPlayTypeID, TicketXML, ref ReturnValue, ref ReturnDescription); if ((Result < 0) || (ReturnValue < 0)) { msg.Send("票写入错误(WriteTickets):方案号:" + SchemeID.ToString() + "," + ReturnDescription); log.Write("票写入错误(WriteTickets):方案号:" + SchemeID.ToString() + "," + ReturnDescription); } } }
//对返回的开奖号码,进行程序自动派奖 private void BonusQuery(string TransMessage) { System.Xml.XmlDocument XmlDoc = new XmlDocument(); XmlDoc.Load(new StringReader(TransMessage)); System.Xml.XmlNodeList nodes = XmlDoc.GetElementsByTagName("*"); string WinNumber = ""; string Issue = ""; string LotteryName = ""; if (nodes == null) { return; } for (int i = 0; i < nodes.Count; i++) { if (nodes[i].Name.ToUpper() == "BONUSQUERYRESULT") { WinNumber = nodes[i].Attributes["bonusNumber"].Value.Replace(",", ""); } if (nodes[i].Name.ToUpper() == "ISSUE") { Issue = nodes[i].Attributes["number"].Value; LotteryName = nodes[i].Attributes["gameName"].Value; } } int LotteryID = GetLotteryID(LotteryName); if (LotteryID < 0) { return; } DataTable dtIssue = new DAL.Tables.T_Isuses().Open("top 1 *", "LotteryID = " + LotteryID.ToString() + " and [Name] = '" + Shove._Web.Utility.FilteSqlInfusion(Issue) + "' and isOpened = 0 and EndTime < GetDate()", ""); if (dtIssue == null) { new Log("ElectronTicket\\HPCQ").Write("恒朋-重庆电子票网关自动开奖错误,彩种:" + LotteryName + ",期号:" + Issue); return; } if (dtIssue.Rows.Count < 1) { return; } // 准备开奖,开奖之前,对出票不完整的方案进行处理(按系统的设定:当作已出票,或者撤单处理) //int ReturnValue = 0; //string ReturnDescription = ""; //DAL.Procedures.P_PrintOutNotFullHandle(LotteryID, "请电询", ref ReturnValue, ref ReturnDescription); DataTable dtWinMoneyList = new DAL.Tables.T_WinTypes().Open("DefaultMoney, DefaultMoneyNoWithTax", "LotteryID = " + LotteryID.ToString(), "[Order]"); if (dtWinMoneyList == null) { new Log("ElectronTicket\\HPCQ").Write("恒朋-重庆电子票网关自动开奖错误,彩种:" + LotteryName + ",期号:" + Issue); return; } double[] WinMoneyList = new double[dtWinMoneyList.Rows.Count * 2]; for (int i = 0; i < dtWinMoneyList.Rows.Count; i++) { WinMoneyList[i * 2] = Shove._Convert.StrToDouble(dtWinMoneyList.Rows[i][0].ToString(), 0); WinMoneyList[i * 2 + 1] = Shove._Convert.StrToDouble(dtWinMoneyList.Rows[i][1].ToString(), 0); } DataTable dtScheme = new DAL.Tables.T_Schemes().Open("", "IsuseID = " + dtIssue.Rows[0]["ID"].ToString() + " and isOpened = 0", ""); if (dtScheme == null) { new Log("ElectronTicket\\HPCQ").Write("恒朋-重庆电子票网关自动开奖错误,彩种:" + LotteryName + ",期号:" + Issue); return; } if (dtScheme.Rows.Count > 0) { for (int i = 0; i < dtScheme.Rows.Count; i++) { string LotteryNumber = dtScheme.Rows[i]["LotteryNumber"].ToString(); string Description = ""; double WinMoneyNoWithTax = 0; double WinMoney = new SLS.Lottery()[LotteryID].ComputeWin(LotteryNumber, WinNumber, ref Description, ref WinMoneyNoWithTax, int.Parse(dtScheme.Rows[i]["PlayTypeID"].ToString()), WinMoneyList); Shove.Database.MSSQL.ExecuteNonQuery("update T_Schemes set PreWinMoney = @p1, PreWinMoneyNoWithTax = @p2, EditWinMoney = @p3, EditWinMoneyNoWithTax = @p4, WinDescription = @p5 where [ID] = " + dtScheme.Rows[i]["ID"].ToString(), new Shove.Database.MSSQL.Parameter("p1", SqlDbType.Money, 0, ParameterDirection.Input, WinMoney * Shove._Convert.StrToInt(dtScheme.Rows[i]["Multiple"].ToString(), 1)), new Shove.Database.MSSQL.Parameter("p2", SqlDbType.Money, 0, ParameterDirection.Input, WinMoneyNoWithTax * Shove._Convert.StrToInt(dtScheme.Rows[i]["Multiple"].ToString(), 1)), new Shove.Database.MSSQL.Parameter("p3", SqlDbType.Money, 0, ParameterDirection.Input, WinMoney * Shove._Convert.StrToInt(dtScheme.Rows[i]["Multiple"].ToString(), 1)), new Shove.Database.MSSQL.Parameter("p4", SqlDbType.Money, 0, ParameterDirection.Input, WinMoneyNoWithTax * Shove._Convert.StrToInt(dtScheme.Rows[i]["Multiple"].ToString(), 1)), new Shove.Database.MSSQL.Parameter("p5", SqlDbType.VarChar, 0, ParameterDirection.Input, Description)); } } //int SchemeCount = 0, QuashCount = 0, WinCount = 0, WinNoBuyCount = 0; // 总方案数,处理时撤单数,中奖数,中奖但未成功数 //ReturnValue = 0; //ReturnDescription = ""; DataSet ds = null; //DAL.Procedures.P_Win(ref ds, // long.Parse(dtIssue.Rows[0]["ID"].ToString()), // WinNumber, // "暂无", // 1, // true, // ref SchemeCount, ref QuashCount, ref WinCount, ref WinNoBuyCount, // ref ReturnValue, ref ReturnDescription); //if ((ds == null) || (ReturnDescription != "")) //{ // PF.GoError(ErrorNumber.DataReadWrite, ReturnDescription, this.GetType().BaseType.FullName); // return; //} PF.SendWinNotification(ds); }
// 接收开奖通知 private void IsuseOpenNotice(string Transmessage) { System.Xml.XmlDocument XmlDoc = new XmlDocument(); System.Xml.XmlNodeList nodes = null; System.Xml.XmlNodeList nodesBonusItem = null; System.Xml.XmlNodeList nodesIssue = null; try { XmlDoc.Load(new StringReader(Transmessage)); nodes = XmlDoc.GetElementsByTagName("*"); nodesBonusItem = XmlDoc.GetElementsByTagName("bonusItem"); nodesIssue = XmlDoc.GetElementsByTagName("issue"); } catch { } if (nodes == null) { return; } string BonusNumber = ""; for (int j = 0; j < nodes.Count; j++) { if (!(nodes[j].Name.ToUpper() == "BODY" && nodes[j].FirstChild.Name.ToUpper() == "BONUSNOTIFY")) { continue; } BonusNumber = nodes[j].FirstChild.Attributes["bonusNumber"].InnerText; } if (nodesIssue == null) { this.Response.End(); return; } string MessageID = nodes[0].Attributes["id"].Value; 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("", " [Name] = '" + Shove._Web.Utility.FilteSqlInfusion(number) + "' and LotteryID = " + LotteryID.ToString() + " and IsOpened = 0 and LotteryID in (select id from T_Lotteries where PrintOutType = 104)", ""); if ((dtIsuse == null) || (dtIsuse.Rows.Count < 1)) { this.Response.End(); return; } string IsuseID = dtIsuse.Rows[0]["ID"].ToString(); DAL.Tables.T_Isuses T_Isuses = new DAL.Tables.T_Isuses(); T_Isuses.WinLotteryNumber.Value = WinNumber; T_Isuses.OpenOperatorID.Value = 1; T_Isuses.Update(" ID = " + IsuseID); int ReturnValue = 0; string ReturnDescription = ""; DataTable dtWinTypesSSL = new DAL.Tables.T_WinTypes().Open("", " LotteryID =" + LotteryID.ToString(), ""); if ((dtWinTypesSSL != null) && dtWinTypesSSL.Rows.Count > 0) { double[] WinMoneyList = new double[dtWinTypesSSL.Rows.Count * 2]; double DefaultMoney = 0; double DefaultMoneyNoWithTax = 0; for (int i = 0; i < dtWinTypesSSL.Rows.Count; i++) { DefaultMoney = Shove._Convert.StrToDouble(dtWinTypesSSL.Rows[i]["DefaultMoney"].ToString(), 0); DefaultMoneyNoWithTax = Shove._Convert.StrToDouble(dtWinTypesSSL.Rows[i]["DefaultMoneyNoWithTax"].ToString(), 0); WinMoneyList[i * 2] = DefaultMoney == 0 ? 1 : DefaultMoneyNoWithTax; WinMoneyList[i * 2 + 1] = DefaultMoneyNoWithTax == 0 ? 1 : DefaultMoneyNoWithTax; } DataTable dtSchemesWithTaskDetails = new DAL.Tables.T_Schemes().Open("", "IsuseID = " + IsuseID + " and WinMoney = 0 and Buyed = 1 and isnull(Identifiers, '') = ''", ""); 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) { Shove.Database.MSSQL.ExecuteNonQuery("update T_Schemes set PreWinMoney = @p1, PreWinMoneyNoWithTax = @p2, WinMoney = @p3, WinMoneyNoWithTax = @p4, WinDescription = @p5 where [ID] = " + dtSchemesWithTaskDetails.Rows[i]["ID"].ToString(), new Shove.Database.MSSQL.Parameter("p1", SqlDbType.Money, 0, ParameterDirection.Input, WinMoney * Shove._Convert.StrToInt(dtSchemesWithTaskDetails.Rows[i]["Multiple"].ToString(), 1)), new Shove.Database.MSSQL.Parameter("p2", SqlDbType.Money, 0, ParameterDirection.Input, WinMoneyNoWithTax * Shove._Convert.StrToInt(dtSchemesWithTaskDetails.Rows[i]["Multiple"].ToString(), 1)), new Shove.Database.MSSQL.Parameter("p3", SqlDbType.Money, 0, ParameterDirection.Input, WinMoney * Shove._Convert.StrToInt(dtSchemesWithTaskDetails.Rows[i]["Multiple"].ToString(), 1)), new Shove.Database.MSSQL.Parameter("p4", SqlDbType.Money, 0, ParameterDirection.Input, WinMoneyNoWithTax * Shove._Convert.StrToInt(dtSchemesWithTaskDetails.Rows[i]["Multiple"].ToString(), 1)), new Shove.Database.MSSQL.Parameter("p5", SqlDbType.VarChar, 0, ParameterDirection.Input, Description)); continue; } } } string BonusXML = "<Schemes>"; string AgentBonusXML = "<Schemes>"; if ((nodesBonusItem != null) && (nodesBonusItem.Count > 0)) { string bonusItemXML = Transmessage.Substring(Transmessage.IndexOf("<bonusNotify"), Transmessage.LastIndexOf("</body>") - Transmessage.IndexOf("<bonusNotify")); DataSet dsXML = new DataSet(); try { dsXML.ReadXml(new StringReader(bonusItemXML)); } catch (Exception e) { new Log("ElectronTicket\\HPSD").Write("电子票开奖,第 " + number + " 期解析开奖数据错误:" + e.Message); this.Response.End(); return; } if ((dsXML == null) || (dsXML.Tables.Count < 3)) { new Log("ElectronTicket\\HPSD").Write("电子票开奖,第 " + number + " 期开奖数据格式不符合要求。"); this.Response.End(); return; } DataTable dtTickets = dsXML.Tables[2]; DataTable dtSchemes = MSSQL.Select("SELECT SchemeID, 0 AS AgentID, SchemesMultiple as Multiple, Identifiers FROM V_SchemesSendToCenter WHERE (IsuseID = " + IsuseID + ")"); if (dtSchemes == null) { new Log("ElectronTicket\\HPSD").Write("电子票开奖,第 " + number + " 期,读取本地方案错误。"); this.Response.End(); 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 = 0, //NewdtScheme.Field<long>("AgentID"), Multiple = NewdtScheme.Field <int>("Multiple"), Bonus = Shove._Convert.StrToDouble(NewDtTickets.Field <string>("money"), 0), BonusLevel = NewDtTickets.Field <string>("bonusLevel"), }; 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 = GetWinDescription(LotteryID, gg.Key.BonusLevel) }; 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.Sum(NewDt => NewDt.Bonus).ToString() + ((t_dtSchemes.Key.Multiple != 1) ? "(" + t_dtSchemes.Key.Multiple.ToString() + "倍)" : "") }; foreach (var Scheme in query3) { if (Scheme.AgentID == 0) { BonusXML += "<Scheme SchemeID=\"" + Scheme.SchemeID.ToString() + "\" WinMoney=\"" + Scheme.Bonus.ToString() + "\" WinDescription=\"" + Scheme.BonusLevel + "\" />"; } else { AgentBonusXML += "<Scheme SchemeID=\"" + Scheme.SchemeID.ToString() + "\" WinMoney=\"" + Scheme.Bonus.ToString() + "\" WinDescription=\"" + Scheme.BonusLevel + "\" />"; } } } catch (Exception e) { new Log("ElectronTicket\\HPSD").Write("电子票开奖,第 " + number + " 期详细中奖数据解析错误:" + e.Message); this.Response.End(); return; } } BonusXML += "</Schemes>"; AgentBonusXML += "</Schemes>"; dtIsuse = new DAL.Tables.T_Isuses().Open("", "[ID] = " + IsuseID + " and IsOpened = 0", ""); if ((dtIsuse == null) || (dtIsuse.Rows.Count < 1)) { this.Response.End(); return; } DataSet ds = null; int Times = 0; int Result = -1; while ((Result < 0) && (Times < 5)) { ReturnValue = 0; ReturnDescription = ""; Result = DAL.Procedures.P_ElectronTicketWin(ref ds, Shove._Convert.StrToLong(IsuseID, 0), BonusXML, AgentBonusXML, ref ReturnValue, ref ReturnDescription); if (Result < 0) { new Log("ElectronTicket\\HPSD").Write("电子票第 " + (Times + 1).ToString() + " 次派奖出现错误(IsuseOpenNotice) 期号为: " + number + ",彩种为: " + LotteryID.ToString()); Times++; if (Times < 5) { System.Threading.Thread.Sleep(10000); } continue; } } if (ReturnValue < 0) { new Log("ElectronTicket\\HPSD").Write("电子票派奖出现错误(IsuseOpenNotice) 期号为: " + number + ",彩种为: " + LotteryID.ToString() + ",错误:" + ReturnDescription); this.Response.End(); return; } DataTable dtWinTypes = new DAL.Tables.T_WinTypes().Open("", " LotteryID =" + LotteryID.ToString(), ""); if ((dtWinTypes != null) && dtWinTypes.Rows.Count > 0) { 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("LotteryNumber, PlayTypeID, SiteID, ID, Multiple", " IsuseID = " + IsuseID + " and WinMoney = 0 and Buyed = 0", ""); 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(Shove._Convert.StrToLong(dtSchemesWithTaskDetails.Rows[i]["SiteID"].ToString(), 0), Shove._Convert.StrToLong(dtSchemesWithTaskDetails.Rows[i]["ID"].ToString(), 0), WinMoney, ref ReturnValue, ref ReturnDescription) < 0) { new Log("ElectronTicket\\HPSD").Write("执行电子票--判断是否停止追号的时候出现错误"); } continue; } } } PF.SendWinNotification(ds); MessageID = nodes[0].Attributes["id"].Value; ReNotice(MessageID, "508"); }
private void BindData() { long SchemeID = Shove._Convert.StrToLong(Shove._Web.Utility.GetRequest("id"), -1); if (SchemeID < 0) { PF.GoError(ErrorNumber.Unknow, "参数错误", this.GetType().FullName); return; } DataTable dt = new DAL.Tables.T_Schemes().Open("InitiateUserID,LotteryNumber, PlayTypeID", "SiteID = " + _Site.ID.ToString() + " and [ID] = " + SchemeID.ToString(), ""); if (dt == null) { PF.GoError(ErrorNumber.DataReadWrite, "数据库繁忙,请重试", this.GetType().FullName); return; } if (dt.Rows.Count < 1) { PF.GoError(ErrorNumber.Unknow, "参数错误", this.GetType().FullName); return; } long InitiateUserID = Shove._Convert.StrToLong(dt.Rows[0]["InitiateUserID"].ToString(), -1); //既不是发起人,也不在招股对象之内 if (_User != null && !_User.isCanViewSchemeContent(SchemeID)) { PF.GoError(ErrorNumber.Unknow, "对不起,您不在此方案的招股对象之内。", this.GetType().FullName); return; } string LotteryNumber = dt.Rows[0]["LotteryNumber"].ToString(); if (Shove._Convert.StrToInt(dt.Rows[0]["PlayTypeID"].ToString(), -1) > 7200 && Shove._Convert.StrToInt(dt.Rows[0]["PlayTypeID"].ToString(), -1) < 7300) { string CacheKey = "JCZC_Scheme_Bind"; DataTable dtMatch = Shove._Web.Cache.GetCacheAsDataTable(CacheKey); if (dtMatch == null) { dtMatch = new DAL.Tables.T_Match().Open("ID, MatchNumber, StopSellingTime", "", ""); if (dtMatch == null) { return; } if (dtMatch.Rows.Count < 1) { return; } Shove._Web.Cache.SetCache(CacheKey, dtMatch, 3600); } string CanonicalNumber = ""; int PlayTypeID = Shove._Convert.StrToInt(dt.Rows[0]["PlayTypeID"].ToString(), 7201); ArrayList al = new ArrayList(); string[] strs = LotteryNumber.Split('\n'); if (strs == null) { return; } if (strs.Length == 0) { return; } string CacheKeyNumbers = "Home_Web_DownloadSchemeFile_" + SchemeID.ToString(); string[] LotteryNumbers = Shove._Web.Cache.GetCacheAsString(CacheKeyNumbers, "").Split('\n'); string[] strNumbers = null; if (LotteryNumbers.Length < 2) { for (int i = 0; i < strs.Length; i++) { if (string.IsNullOrEmpty(strs[i])) { continue; } strNumbers = new SLS.Lottery()[Shove._Convert.StrToInt(PlayTypeID.ToString().Substring(0, PlayTypeID.ToString().Length - 2), 72)].ToSingle(strs[i], ref CanonicalNumber, PlayTypeID); if (strNumbers == null) { continue; } for (int j = 0; j < strNumbers.Length; j++) { al.Add(strNumbers[j]); } } LotteryNumbers = new string[al.Count]; StringBuilder sbLotteryNumbers = new StringBuilder(); for (int i = 0; i < al.Count; i++) { if (i == al.Count) { sbLotteryNumbers.Append(al[i].ToString()); } else { sbLotteryNumbers.Append(al[i].ToString() + "\n"); } LotteryNumbers[i] = al[i].ToString(); } Shove._Web.Cache.SetCache(CacheKeyNumbers, sbLotteryNumbers.ToString(), 3600); } StringBuilder sb = new StringBuilder(); sb.Append("<table width=\"60%\" border=\"0\" align=\"center\" cellpadding=\"2\" cellspacing=\"1\" class=\"BgBlue\">"); sb.Append("<tr align=\"center\" bgcolor=\"#FFFFFF\" class=\"BlueLightBg WhiteWords\">"); sb.Append("<td width=\"8%\"><strong>序号</strong></td>"); sb.Append("<td><strong>过关场次</strong></td>"); sb.Append("<td width=\"10%\"><strong>过关方式</strong></td>"); sb.Append("<td width=\"10%\"><strong>注数</strong></td>"); sb.Append("<td width=\"10%\"><strong>投注金额(元)</strong></td></tr>"); string Number = ""; int No = 0; string BuyWays = ""; int Multiple = 0; int LotID = 0; int PlayID = 0; PlayID = Shove._Convert.StrToInt(LotteryNumbers[0].Split(';')[0], 7201); LotID = Shove._Convert.StrToInt(PlayID.ToString().Substring(0, 2), 72); DateTime EndTime = DateTime.Now; int pageindex = 1; if (!string.IsNullOrEmpty(Shove._Web.Utility.GetRequest("p"))) { pageindex = Shove._Convert.StrToInt(Shove._Web.Utility.GetRequest("p").ToString(), 1); } int perPageRowCount = 30; if (pageindex < 1) { pageindex = 1; } foreach (string str in LotteryNumbers) { if (string.IsNullOrEmpty(str)) { continue; } No++; if (str.Split(';').Length < 3) { continue; } try { Multiple = Shove._Convert.StrToInt(str.Split(';')[2].Substring(1, str.Split(';')[2].Length - 2).Substring(2), 1); } catch { } if ((No < (pageindex - 1) * perPageRowCount) || No > (pageindex) * perPageRowCount) { continue; } sb.Append("<tr align=\"center\" class=\"" + ((No % 2 == 0) ? "BlueWord WhiteBg" : "BlueLightBg2 BlueWord") + "\">"); sb.Append("<td>" + No.ToString() + "</td>"); Number = str.Split(';')[1].Substring(1, str.Split(';')[1].Length - 2); string[] Numbers = Number.Split('|'); //if (Numbers.Length < 2) //{ // continue; //} sb.Append("<td height=\"20\">"); if (Numbers.Length == 1) { BuyWays = "单关"; } else { BuyWays = Numbers.Length.ToString() + "串1"; } long MatchID = 0; for (int i = 0; i < Numbers.Length; i++) { if (Numbers[i].IndexOf("(") < 0) { continue; } MatchID = Shove._Convert.StrToLong(Numbers[i].Substring(0, Numbers[i].IndexOf("(")), 1); DataRow[] dr = dtMatch.Select("ID=" + MatchID.ToString()); if (dr.Length < 1) { continue; } sb.Append(dr[0]["MatchNumber"].ToString() + "->" + PF.Getesult(PlayID.ToString(), Numbers[i].Substring(Numbers[i].IndexOf("(") + 1, Numbers[i].IndexOf(")") - Numbers[i].IndexOf("(") - 1)) + ";"); } sb.Append("</td>"); sb.Append("<td height=\"20\">" + BuyWays + "</td>"); sb.Append("<td>1</td>"); sb.Append("<td>" + (2 * Multiple).ToString() + "</td></tr>"); } sb.Append("</table>"); labLotteryNumber.Text = sb.ToString(); StringBuilder sbpage = new StringBuilder(); int rowCount = No; int pageCount = rowCount % perPageRowCount == 0 ? rowCount / perPageRowCount : rowCount / perPageRowCount + 1; if (SchemeID < 0) { sbpage.Append("<div id=\"Pagination\" class=\"yahoo\" style=\"width: auto;\"><span id=\"first\"><a href=\"DownloadSchemeFile.aspx\">首页</a></span>"); if (pageindex == 1) { sbpage.Append("<span class=\"disabled\">« 上一页</span>"); } else { sbpage.Append("<span><a href=\"DownloadSchemeFile.aspx?p=" + (pageindex - 1).ToString() + "\">« 上一页</a></span>"); } for (int i = 0; i < pageCount; i++) { if (i == pageindex - 1) { sbpage.Append("<span class=\"current\">" + (i + 1).ToString() + "</span>"); continue; } if ((i < pageindex + 4 || i < 9) && (i > pageindex - 6 || i > pageCount - 10)) { sbpage.Append("<a href=\"DownloadSchemeFile.aspx?p=" + (i + 1).ToString() + "\">" + (i + 1).ToString() + "</a>"); } } if (pageindex == pageCount) { sbpage.Append("<span class=\"disabled\">下一页 »</span>"); } else { sbpage.Append("<span><a href=\"DownloadSchemeFile.aspx?p=" + (pageindex + 1).ToString() + "\">下一页 »</a></span>"); } sbpage.Append("<span id=\"last\" value=\"" + pageCount.ToString() + "\"><a href=\"DownloadSchemeFile.aspx?p=" + (pageCount).ToString() + "\">尾页</a></span><span class=\"jilu\">共" + pageCount.ToString() + "页," + No.ToString() + "条记录</span></div>"); } else { sbpage.Append("<div id=\"Pagination\" class=\"yahoo\" style=\"width: auto;\"><span id=\"first\"><a href=\"DownloadSchemeFile.aspx?id=" + SchemeID.ToString() + "\">首页</a></span>"); if (pageindex == 1) { sbpage.Append("<span class=\"disabled\">« 上一页</span>"); } else { sbpage.Append("<span><a href=\"DownloadSchemeFile.aspx?id=" + SchemeID.ToString() + "&p=" + (pageindex - 1).ToString() + "\">« 上一页</a></span>"); } for (int i = 0; i < pageCount; i++) { if (i == pageindex - 1) { sbpage.Append("<span class=\"current\">" + (i + 1).ToString() + "</span>"); continue; } if ((i < pageindex + 4 || i < 9) && (i > pageindex - 6 || i > pageCount - 10)) { sbpage.Append("<a href=\"DownloadSchemeFile.aspx?id=" + SchemeID.ToString() + "&p=" + (i + 1).ToString() + "\">" + (i + 1).ToString() + "</a>"); } } if (pageindex == pageCount) { sbpage.Append("<span class=\"disabled\">下一页 »</span>"); } else { sbpage.Append("<span><a href=\"DownloadSchemeFile.aspx?id=" + SchemeID.ToString() + "&p=" + (pageindex + 1).ToString() + "\">下一页 »</a></span>"); } sbpage.Append("<span id=\"last\" value=\"" + pageCount.ToString() + "\"><a href=\"DownloadSchemeFile.aspx?id=" + SchemeID.ToString() + "&p=" + (pageCount).ToString() + "\">尾页</a></span><span class=\"jilu\">共" + pageCount.ToString() + "页," + No.ToString() + "条记录</span></div>"); } labLotteryNumber.Text += sbpage.ToString(); } else { LotteryNumber = PF.GetScriptResTable(LotteryNumber); if (LotteryNumber.IndexOf("table") < 0) { LotteryNumber = Shove._Convert.ToHtmlCode(LotteryNumber); } labLotteryNumber.Text = (LotteryNumber == "") ? "未找到相关数据。" : (LotteryNumber + " "); } }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { lbName.Text = _User.Name; lbName1.Text = _User.Name; lbBalance.Text = _User.Balance.ToString("N"); string Type = Shove._Web.Utility.GetRequest("Type"); string LotteryID = Shove._Web.Utility.GetRequest("LotteryID"); string SchemeID = Shove._Web.Utility.GetRequest("SchemeID"); string Money = Shove._Web.Utility.GetRequest("Money"); SystemOptions so = new SystemOptions(); lbScore.Text = (Shove._Convert.StrToDouble(_Site.SiteOptions["Opt_ScoringOfSelfBuy"].ToString("1"), 1) * Shove._Convert.StrToDouble(Money, 0)).ToString("N"); if (Type == "2") { lbType.Text = "追号"; lbType1.Text = "[继续追号]"; Look.Visible = false; } if (Type == "3") { lbType.Text = "入伙"; lbType1.Text = "[继续入伙]"; } if (Type == "3") { Buy.HRef = "Scheme.aspx?id=" + SchemeID; } else { if (LotteryID == "29") { Buy.HRef = "../../Lottery/BuySSL.aspx"; } else if (LotteryID == "61") { Buy.HRef = "../../Lottery/BuySSC.aspx"; } else if (LotteryID == "62") { Buy.HRef = "../../Lottery/BuySYYDJ.aspx"; } else if (LotteryID == "28") { Buy.HRef = "../../Lottery/BuyCQSSC.aspx"; } else if (LotteryID == "65") { Buy.HRef = "../../Lottery/Buy31X7.aspx"; } else if (LotteryID == "59") { Buy.HRef = "../../Lottery/Buy15X5.aspx"; } else if (LotteryID == "9") { Buy.HRef = "../../Lottery/Buy22X5.aspx"; } else if (LotteryID == "6") { Buy.HRef = "../../Lottery/Buy3D.aspx"; } else if (LotteryID == "39") { Buy.HRef = "../../Lottery/BuyCJDLT.aspx"; } else if (LotteryID == "58") { Buy.HRef = "../../Lottery/BuyDF6J1.aspx"; } else if (LotteryID == "2") { Buy.HRef = "../../Lottery/BuyJQC.aspx"; } else if (LotteryID == "15") { Buy.HRef = "../../Lottery/BuyLCBQC.aspx"; } else if (LotteryID == "63") { Buy.HRef = "../../Lottery/BuyPL3.aspx"; } else if (LotteryID == "64") { Buy.HRef = "../../Lottery/BuyPL5.aspx"; } else if (LotteryID == "13") { Buy.HRef = "../../Lottery/BuyQLC.aspx"; } else if (LotteryID == "3") { Buy.HRef = "../../Lottery/BuyQXC.aspx"; } else if (LotteryID == "1") { Buy.HRef = "../../Lottery/BuySFC.aspx"; } else if (LotteryID == "5") { Buy.HRef = "../../Lottery/BuySSQ.aspx"; } else if (LotteryID == "70") { Buy.HRef = "../../Lottery/BuyJX11X5.aspx"; } else if (LotteryID == "74") { Buy.HRef = "../../Lottery/BuySFC.aspx"; } else if (LotteryID == "75") { Buy.HRef = "../../Lottery/BuySFC_9_D.aspx"; } if (Type != "2") { DataTable dt = new DAL.Tables.T_Schemes().Open("PlayTypeID", "id=" + SchemeID, ""); if (dt == null) { new Log("System").Write("数据库读取错误,错误页面: Home_Room_UserBuySuccess"); return; } if (dt.Rows.Count != 1) { new Log("System").Write("参数错误, 错误页面: Home_Room_UserBuySuccess"); return; } } } Look.HRef = "Scheme.aspx?id=" + SchemeID; URL = Buy.HRef; } }
//开奖派奖 private void DrawingLottery(int LotteryID, string IsuseName, string WinNumber) { Log log = new Log("SystemGetLotteryOpenNumber"); if (!new SLS.Lottery()[LotteryID].AnalyseWinNumber(WinNumber)) { log.Write("开奖号码不正确!"); return; } int ReturnValue = 0; string ReturnDescription = ""; DataTable dtIsuse = new DAL.Tables.T_Isuses().Open(conn, "top 1 [ID], IsOpened", "LotteryID = " + LotteryID.ToString() + " and [Name] = '" + IsuseName + "' and IsOpened=0 and year(StartTime) = YEAR(GETDATE())", ""); if (dtIsuse == null) { log.Write("数据读写错误001"); return; } if (dtIsuse.Rows.Count <= 0) { //log.Write("暂无对应期号信息,彩种ID:" + LotteryID.ToString() + ", 期号:" + IsuseName); return; } if (Shove._Convert.StrToBool(dtIsuse.Rows[0]["IsOpened"].ToString(), false)) { //log.Write("彩种ID:" + LotteryID + "第" + IsuseName + "期已开奖"); return; } long IsuseID = Shove._Convert.StrToLong(dtIsuse.Rows[0]["ID"].ToString(), -1); DataTable dtWin = null; dtWin = new DAL.Tables.T_Schemes().Open(conn, "ID", "IsuseID = " + IsuseID.ToString() + " and isOpened = 0", ""); if (dtWin == null) { log.Write("数据读写错误002"); return; } // 准备开奖,开奖之前,对出票不完整的方案进行出票处理 ReturnValue = 0; ReturnDescription = ""; DataTable dtWinTypes = new DAL.Tables.T_WinTypes().Open(conn, "[DefaultMoney],[DefaultMoneyNoWithTax]", "LotteryID = " + LotteryID.ToString(), "[Order]"); if (dtWinTypes == null) { log.Write("奖金读取数据读写错误"); return; } double[] WinMoneyList = new double[dtWinTypes.Rows.Count * 2]; for (int y = 0; y < dtWinTypes.Rows.Count; y++) { WinMoneyList[y * 2] = Shove._Convert.StrToDouble(dtWinTypes.Rows[y]["DefaultMoney"].ToString(), 0); WinMoneyList[y * 2 + 1] = Shove._Convert.StrToDouble(dtWinTypes.Rows[y]["DefaultMoneyNoWithTax"].ToString(), 0); if (WinMoneyList[y * 2] < 0) { log.Write("第 " + (y + 1).ToString() + " 项奖金输入错误!"); return; } } dtWin = null; #region 开奖第一步 dtWin = new DAL.Tables.T_Schemes().Open(conn, "LotteryNumber,PlayTypeID,Multiple,ID", "isOpened = 0 and IsuseID = " + IsuseID.ToString(), "[ID]"); if (dtWin == null) { log.Write("方案数据读取错误"); return; } for (int y = 0; y < dtWin.Rows.Count; y++) { string LotteryNumber = ""; try { LotteryNumber = dtWin.Rows[y]["LotteryNumber"].ToString(); } catch { } string Description = ""; double WinMoneyNoWithTax = 0; try { double WinMoney = new SLS.Lottery()[LotteryID].ComputeWin(LotteryNumber, WinNumber, ref Description, ref WinMoneyNoWithTax, int.Parse(dtWin.Rows[y]["PlayTypeID"].ToString()), WinMoneyList); if (WinMoney > 0) { log.Write("方案ID:" + dtWin.Rows[y]["ID"].ToString() + " 中奖金额:" + WinMoney.ToString()); } Shove.Database.MSSQL.ExecuteNonQuery(conn, "update T_Schemes set EditWinMoney = @p1, EditWinMoneyNoWithTax = @p2, WinDescription = @p3 where [ID] = " + dtWin.Rows[y]["ID"].ToString(), new Shove.Database.MSSQL.Parameter("p1", SqlDbType.Money, 0, ParameterDirection.Input, WinMoney * Shove._Convert.StrToInt(dtWin.Rows[y]["Multiple"].ToString(), 1)), new Shove.Database.MSSQL.Parameter("p2", SqlDbType.Money, 0, ParameterDirection.Input, WinMoneyNoWithTax * Shove._Convert.StrToInt(dtWin.Rows[y]["Multiple"].ToString(), 1)), new Shove.Database.MSSQL.Parameter("p3", SqlDbType.VarChar, 0, ParameterDirection.Input, Description)); } catch { log.Write("方案ID:" + dtWin.Rows[y]["ID"].ToString() + " 开奖号码出现错误"); continue; } } #endregion log.Write("开奖-----------------------------4"); #region 开奖第三步 string OpenAffiche = new OpenAfficheTemplates()[LotteryID]; int SchemeCount, QuashCount, WinCount, WinNoBuyCount; bool isEndOpen = false; while (!isEndOpen) { SchemeCount = 0; QuashCount = 0; WinCount = 0; WinNoBuyCount = 0; // 总方案数,处理时撤单数,中奖数,中奖但未成功数 ReturnValue = 0; ReturnDescription = ""; DataSet dsWin = null; P_Win(conn, ref dsWin, IsuseID, WinNumber, OpenAffiche, 1, true, ref SchemeCount, ref QuashCount, ref WinCount, ref WinNoBuyCount, ref isEndOpen, ref ReturnValue, ref ReturnDescription); if ((dsWin == null) || (ReturnDescription != "")) { log.Write(ReturnDescription); return; } string Message = "彩种ID:{0},开奖成功,开奖号码:{1},总方案 {2} 个,撤单未满员或未出票方案 {3} 个,有效中奖方案 {4} 个,中奖但未成功方案 {5} 个。本期开奖还未全部完成, 请继续操作第三步。"; if (isEndOpen) { Message = "彩种ID:{0},开奖成功,开奖号码:{1},总方案 {2} 个,撤单未满员或未出票方案 {3} 个,有效中奖方案 {4} 个,中奖但未成功方案 {5} 个。本期开奖已全部完成。"; } log.Write(String.Format(Message,LotteryID,WinNumber, SchemeCount, QuashCount, WinCount, WinNoBuyCount)); } #endregion log.Write("开奖-----------------------------5"); }
// 接收奖期通知 private void IsuseNotice(string TransMessage) { System.Xml.XmlDocument XmlDoc = new XmlDocument(); try { XmlDoc.Load(new StringReader(TransMessage)); } catch { } DAL.Tables.T_Isuses t_Isuses = new DAL.Tables.T_Isuses(); string Body = TransMessage.Substring(TransMessage.IndexOf("<elements"), TransMessage.LastIndexOf("</elements>") - TransMessage.IndexOf("<elements")) + "</elements>"; DataSet ds = new DataSet(); ds.ReadXml(new StringReader(Body)); if (ds == null) { return; } if (ds.Tables.Count == 0) { return; } DataTable dt = ds.Tables[0]; if (dt.Rows.Count < 1) { return; } string MessageID = ""; for (int i = 0; i < dt.Rows.Count; i++) { DataRow dr = dt.Rows[i]; string LotteryName = dr["lotteryid"].ToString(); int LotteryID = GetLotteryID(LotteryName); string IsuseName = GetIsusesNameToCaiyou(LotteryID.ToString(), dr["issue"].ToString()); string Status = dr["status"].ToString(); string StartTime = dr["starttime"].ToString(); string EndTime = dr["endtime"].ToString(); string WinNumber = ""; if (Shove._Convert.StrToInt(Status, 0) > 1) { try { WinNumber = GetWinNumber(LotteryID, dr["bonuscode"].ToString()); } catch { } } if ((LotteryID < 0) || (String.IsNullOrEmpty(IsuseName))) { continue; } if (t_Isuses.GetCount("LotteryID = " + LotteryID.ToString() + " and [Name] = '" + Shove._Web.Utility.FilteSqlInfusion(IsuseName) + "' and year(StartTime) = YEAR(GETDATE())") < 1) { DateTime _StartTime = DateTime.Now; DateTime _EndTime = DateTime.Now; try { _StartTime = DateTime.Parse(StartTime); _EndTime = DateTime.Parse(EndTime); } catch { continue; } long IsuseID = -1; string ReturnDescription = ""; if (DAL.Procedures.P_IsuseAdd(LotteryID, IsuseName, _StartTime, _EndTime, "", ref IsuseID, ref ReturnDescription) < 0) { continue; } if (IsuseID < 0) { continue; } } DataTable dtIsuse = t_Isuses.Open("ID, State, WinLotteryNumber", "LotteryID = " + LotteryID.ToString() + " and [Name] = '" + Shove._Web.Utility.FilteSqlInfusion(IsuseName) + "' and year(StartTime) = YEAR(GETDATE())", ""); if ((dtIsuse == null) || (dtIsuse.Rows.Count < 1)) { continue; } if (Status == "1") { int ReturnValue = 0; string ReturnDescprtion = ""; if (DAL.Procedures.P_ElectronTicketAgentSchemeQuash(Shove._Convert.StrToLong(dtIsuse.Rows[0]["ID"].ToString(), 0), ref ReturnValue, ref ReturnDescprtion) < 0) { new Log("ElectronTicket\\ZCW").Write("电子票方案撤单错误_P_ElectronTicketAgentSchemeQuash"); continue; } } bool isHasUpdate = false; if (dtIsuse.Rows[0]["State"].ToString() != Status) { isHasUpdate = true; } if (isHasUpdate) { int ReturnValue = 0; string ReturnDescprtion = ""; if (DAL.Procedures.P_IsuseUpdate(LotteryID, Shove._Web.Utility.FilteSqlInfusion(IsuseName), Shove._Convert.StrToShort(Status, 0), Shove._Convert.StrToDateTime(StartTime, DateTime.Now.ToString()), Shove._Convert.StrToDateTime(EndTime, DateTime.Now.ToString()), DateTime.Now, WinNumber, ref ReturnValue, ref ReturnDescprtion) < 0) { new Log("ElectronTicket\\ZCW").Write("电子票撤销追号错误P_IsuseEdit。"); } if (ReturnValue < 0) { new Log("ElectronTicket\\ZCW").Write(ReturnDescprtion); } } if (!String.IsNullOrEmpty(WinNumber) && (dtIsuse.Rows[0]["WinLotteryNumber"].ToString() != WinNumber)) { DataTable dtWinTypes = new DAL.Tables.T_WinTypes().Open("", "LotteryID =" + LotteryID.ToString(), ""); double[] WinMoneyList = new double[dtWinTypes.Rows.Count * 2]; for (int k = 0; k < dtWinTypes.Rows.Count; k++) { if (Shove._Convert.StrToDouble(dtWinTypes.Rows[k]["DefaultMoney"].ToString(), 1) < 1) { MessageID = GetFromXPath(TransMessage, "message/header/messengerid"); ReNotice(MessageID, "13008"); return; } WinMoneyList[k * 2] = Shove._Convert.StrToDouble(dtWinTypes.Rows[k]["DefaultMoney"].ToString(), 1); WinMoneyList[k * 2 + 1] = Shove._Convert.StrToDouble(dtWinTypes.Rows[k]["DefaultMoneyNoWithTax"].ToString(), 1); } #region 开奖第一步 DataTable dtWin = null; dtWin = new DAL.Tables.T_Schemes().Open("LotteryNumber,PlayTypeID,Multiple,ID", "isOpened = 0 and IsuseID = " + dtIsuse.Rows[0]["ID"].ToString(), "[ID]"); if (dtWin == null) { return; } for (int y = 0; y < dtWin.Rows.Count; y++) { string LotteryNumber = ""; try { LotteryNumber = dtWin.Rows[y]["LotteryNumber"].ToString(); } catch { } string Description = ""; double WinMoneyNoWithTax = 0; try { double WinMoney = new SLS.Lottery()[LotteryID].ComputeWin(LotteryNumber, WinNumber, ref Description, ref WinMoneyNoWithTax, int.Parse(dtWin.Rows[y]["PlayTypeID"].ToString()), WinMoneyList); Shove.Database.MSSQL.ExecuteNonQuery("update T_Schemes set PreWinMoney = @p1, PreWinMoneyNoWithTax = @p2, EditWinMoney = @p3, EditWinMoneyNoWithTax = @p4, WinDescription = @p5 where [ID] = " + dtWin.Rows[y]["ID"].ToString(), new Shove.Database.MSSQL.Parameter("p1", SqlDbType.Money, 0, ParameterDirection.Input, WinMoney * Shove._Convert.StrToInt(dtWin.Rows[y]["Multiple"].ToString(), 1)), new Shove.Database.MSSQL.Parameter("p2", SqlDbType.Money, 0, ParameterDirection.Input, WinMoneyNoWithTax * Shove._Convert.StrToInt(dtWin.Rows[y]["Multiple"].ToString(), 1)), new Shove.Database.MSSQL.Parameter("p3", SqlDbType.Money, 0, ParameterDirection.Input, WinMoney * Shove._Convert.StrToInt(dtWin.Rows[y]["Multiple"].ToString(), 1)), new Shove.Database.MSSQL.Parameter("p4", SqlDbType.Money, 0, ParameterDirection.Input, WinMoneyNoWithTax * Shove._Convert.StrToInt(dtWin.Rows[y]["Multiple"].ToString(), 1)), new Shove.Database.MSSQL.Parameter("p5", SqlDbType.VarChar, 0, ParameterDirection.Input, Description)); } catch { continue; } } #endregion #region 开奖第二步 string OpenAffiche = new OpenAfficheTemplates()[LotteryID]; int SchemeCount, QuashCount, WinCount, WinNoBuyCount; bool isEndOpen = false; int ReturnValue = 0; string ReturnDescription = ""; while (!isEndOpen) { SchemeCount = 0; QuashCount = 0; WinCount = 0; WinNoBuyCount = 0; // 总方案数,处理时撤单数,中奖数,中奖但未成功数 ReturnValue = 0; ReturnDescription = ""; DataSet dsWin = null; DAL.Procedures.P_Win(ref dsWin, Shove._Convert.StrToLong(dtIsuse.Rows[0]["ID"].ToString(), 0), WinNumber, OpenAffiche, 1, true, ref SchemeCount, ref QuashCount, ref WinCount, ref WinNoBuyCount, ref isEndOpen, ref ReturnValue, ref ReturnDescription); } #endregion } } MessageID = GetFromXPath(TransMessage, "message/header/messengerid"); ReNotice(MessageID, "13008"); }
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; } } } }
private void Bind(long SchemeID) { string LotteryNumber = ""; string[] LotteryNumbers = null; string CacheKey = "JCZC_Scheme_Bind"; DataTable dtMatch = Shove._Web.Cache.GetCacheAsDataTable(CacheKey); if (SchemeID < 0) { string FileName = Request.Cookies["ASP.NET_SessionId"].Value; try { LotteryNumber = File.ReadAllText(System.AppDomain.CurrentDomain.BaseDirectory + "Temp\\" + FileName + ".txt"); } catch { } if (string.IsNullOrEmpty(LotteryNumber)) { Shove._Web.JavaScript.Alert(this.Page, "传递的参数错误,请重新发起操作!"); return; } LotteryNumbers = LotteryNumber.Replace("\r", "").Split('\n'); if (dtMatch == null) { dtMatch = new DAL.Tables.T_PassRate().Open("MatchID, MatchNumber, StopSellTime", "", ""); } } if (string.IsNullOrEmpty(LotteryNumber)) { string SchemeInfo = ""; try { SchemeInfo = File.ReadAllText(System.AppDomain.CurrentDomain.BaseDirectory + "SchemeInfo\\" + SchemeID.ToString() + ".txt"); } catch { } if (string.IsNullOrEmpty(SchemeInfo)) { DataTable dt = new DAL.Tables.T_Schemes().Open("", "ID=" + SchemeID.ToString(), ""); if (dt == null) { Shove._Web.JavaScript.Alert(this.Page, "传递的参数错误,请重新发起操作!"); return; } if (dt.Rows.Count < 1) { Shove._Web.JavaScript.Alert(this.Page, "传递的参数错误,请重新发起操作!"); return; } LotteryNumber = dt.Rows[0]["LotteryNumber"].ToString(); ArrayList al = new ArrayList(); string[] strs = LotteryNumber.Split('\n'); if (strs == null) { return; } if (strs.Length == 0) { return; } string CanonicalNumber = ""; int PlayTypeID = Shove._Convert.StrToInt(dt.Rows[0]["PlayTypeID"].ToString(), 7201); string CacheKeyNumbers = "Home_Web_DownloadSchemeFile_" + SchemeID.ToString(); LotteryNumbers = Shove._Web.Cache.GetCacheAsString(CacheKeyNumbers, "").Split('\n'); string[] strNumbers = null; if (LotteryNumbers.Length < 2) { for (int i = 0; i < strs.Length; i++) { if (string.IsNullOrEmpty(strs[i])) { continue; } strNumbers = new SLS.Lottery()[Shove._Convert.StrToInt(PlayTypeID.ToString().Substring(0, PlayTypeID.ToString().Length - 2), 72)].ToSingle(strs[i], ref CanonicalNumber, PlayTypeID); if (strNumbers == null) { continue; } for (int j = 0; j < strNumbers.Length; j++) { al.Add(strNumbers[j]); } } LotteryNumbers = new string[al.Count]; StringBuilder sbLotteryNumbers = new StringBuilder(); for (int i = 0; i < al.Count; i++) { if (i == al.Count) { sbLotteryNumbers.Append(al[i].ToString()); } else { sbLotteryNumbers.Append(al[i].ToString() + "\n"); } LotteryNumbers[i] = al[i].ToString(); } Shove._Web.Cache.SetCache(CacheKeyNumbers, sbLotteryNumbers.ToString(), 3600); } if (dtMatch == null) { dtMatch = new DAL.Tables.T_Match().Open("ID as MatchID, MatchNumber, StopSellingTime as StopSellTime", "", ""); } } else { LotteryNumber = SchemeInfo.Substring(0, SchemeInfo.LastIndexOf('$') - 1); LotteryNumbers = LotteryNumber.Replace("\r", "").Split('\n'); if (dtMatch == null) { dtMatch = new DAL.Tables.T_PassRate().Open("MatchID, MatchNumber, StopSellTime", "MatchID in (" + SchemeInfo.Substring(SchemeInfo.LastIndexOf('$')) + ")", ""); } } } if (dtMatch == null) { Shove._Web.JavaScript.Alert(this.Page, "传递的参数错误,请重新发起操作!"); return; } if (dtMatch.Rows.Count < 1) { return; } Shove._Web.Cache.SetCache(CacheKey, dtMatch, 3600); StringBuilder sb = new StringBuilder(); sb.Append("<table width=\"60%\" border=\"0\" align=\"center\" cellpadding=\"2\" cellspacing=\"1\" class=\"BgBlue\">"); sb.Append("<tr align=\"center\" bgcolor=\"#FFFFFF\" class=\"BlueLightBg WhiteWords\">"); sb.Append("<td width=\"8%\"><strong>序号</strong></td>"); sb.Append("<td><strong>过关场次</strong></td>"); sb.Append("<td width=\"10%\"><strong>过关方式</strong></td>"); sb.Append("<td width=\"10%\"><strong>注数</strong></td>"); sb.Append("<td width=\"10%\"><strong>投注金额(元)</strong></td></tr>"); string Number = ""; int No = 0; string BuyWays = ""; int Multiple = 0; int LotID = 0; int PlayID = 0; PlayID = Shove._Convert.StrToInt(LotteryNumbers[0].Split(';')[0], 7201); LotID = Shove._Convert.StrToInt(PlayID.ToString().Substring(0, 2), 72); DateTime EndTime = DateTime.Now; int pageindex = 1; if (!string.IsNullOrEmpty(Shove._Web.Utility.GetRequest("p"))) { pageindex = Shove._Convert.StrToInt(Shove._Web.Utility.GetRequest("p").ToString(), 1); } int perPageRowCount = 30; if (pageindex < 1) { pageindex = 1; } foreach (string str in LotteryNumbers) { if (string.IsNullOrEmpty(str)) { continue; } No++; if (str.Split(';').Length < 3) { continue; } try { Multiple = Shove._Convert.StrToInt(str.Split(';')[2].Substring(1, str.Split(';')[2].Length - 2).Substring(2), 1); } catch { } if ((No < (pageindex - 1) * perPageRowCount) || No > (pageindex) * perPageRowCount) { continue; } sb.Append("<tr align=\"center\" class=\"" + ((No % 2 == 0) ? "BlueWord WhiteBg" : "BlueLightBg2 BlueWord") + "\">"); sb.Append("<td>" + No.ToString() + "</td>"); Number = str.Split(';')[1].Substring(1, str.Split(';')[1].Length - 2); string[] Numbers = Number.Split('|'); if (Numbers.Length < 2) { continue; } sb.Append("<td height=\"20\">"); BuyWays = Numbers.Length.ToString() + "串1"; long MatchID = 0; for (int i = 0; i < Numbers.Length; i++) { if (Numbers[i].IndexOf("(") < 0) { continue; } MatchID = Shove._Convert.StrToLong(Numbers[i].Substring(0, Numbers[i].IndexOf("(")), 1); DataRow[] dr = dtMatch.Select("MatchID=" + MatchID.ToString()); if (dr.Length < 1) { continue; } sb.Append(dr[0]["MatchNumber"].ToString() + "->" + PF.Getesult(PlayID.ToString(), Numbers[i].Substring(Numbers[i].IndexOf("(") + 1, Numbers[i].IndexOf(")") - Numbers[i].IndexOf("(") - 1)) + ";"); } sb.Append("</td>"); sb.Append("<td height=\"20\">" + BuyWays + "</td>"); sb.Append("<td>1</td>"); sb.Append("<td>" + (2 * Multiple).ToString() + "</td></tr>"); } sb.Append("</table>"); labLotteryNumber.Text = sb.ToString(); StringBuilder sbpage = new StringBuilder(); int rowCount = No; int pageCount = rowCount % perPageRowCount == 0 ? rowCount / perPageRowCount : rowCount / perPageRowCount + 1; if (SchemeID < 0) { sbpage.Append("<div id=\"Pagination\" class=\"yahoo\" style=\"width: auto;\"><span id=\"first\"><a href=\"Scheme.aspx\">首页</a></span>"); if (pageindex == 1) { sbpage.Append("<span class=\"disabled\">« 上一页</span>"); } else { sbpage.Append("<span><a href=\"Scheme.aspx?p=" + (pageindex - 1).ToString() + "\">« 上一页</a></span>"); } for (int i = 0; i < pageCount; i++) { if (i == pageindex - 1) { sbpage.Append("<span class=\"current\">" + (i + 1).ToString() + "</span>"); continue; } if ((i < pageindex + 4 || i < 9) && (i > pageindex - 6 || i > pageCount - 10)) { sbpage.Append("<a href=\"Scheme.aspx?p=" + (i + 1).ToString() + "\">" + (i + 1).ToString() + "</a>"); } } if (pageindex == pageCount) { sbpage.Append("<span class=\"disabled\">下一页 »</span>"); } else { sbpage.Append("<span><a href=\"Scheme.aspx?p=" + (pageindex + 1).ToString() + "\">下一页 »</a></span>"); } sbpage.Append("<span id=\"last\" value=\"" + pageCount.ToString() + "\"><a href=\"Scheme.aspx?p=" + (pageCount).ToString() + "\">尾页</a></span><span class=\"jilu\">共" + pageCount.ToString() + "页," + No.ToString() + "条记录</span></div>"); } else { sbpage.Append("<div id=\"Pagination\" class=\"yahoo\" style=\"width: auto;\"><span id=\"first\"><a href=\"Scheme.aspx?id=" + SchemeID.ToString() + "\">首页</a></span>"); if (pageindex == 1) { sbpage.Append("<span class=\"disabled\">« 上一页</span>"); } else { sbpage.Append("<span><a href=\"Scheme.aspx?id=" + SchemeID.ToString() + "&p=" + (pageindex - 1).ToString() + "\">« 上一页</a></span>"); } for (int i = 0; i < pageCount; i++) { if (i == pageindex - 1) { sbpage.Append("<span class=\"current\">" + (i + 1).ToString() + "</span>"); continue; } if ((i < pageindex + 4 || i < 9) && (i > pageindex - 6 || i > pageCount - 10)) { sbpage.Append("<a href=\"Scheme.aspx?id=" + SchemeID.ToString() + "&p=" + (i + 1).ToString() + "\">" + (i + 1).ToString() + "</a>"); } } if (pageindex == pageCount) { sbpage.Append("<span class=\"disabled\">下一页 »</span>"); } else { sbpage.Append("<span><a href=\"Scheme.aspx?id=" + SchemeID.ToString() + "&p=" + (pageindex + 1).ToString() + "\">下一页 »</a></span>"); } sbpage.Append("<span id=\"last\" value=\"" + pageCount.ToString() + "\"><a href=\"Scheme.aspx?id=" + SchemeID.ToString() + "&p=" + (pageCount).ToString() + "\">尾页</a></span><span class=\"jilu\">共" + pageCount.ToString() + "页," + No.ToString() + "条记录</span></div>"); } labLotteryNumber.Text += sbpage.ToString(); }
protected void btnGO_Step1_Click(object sender, EventArgs e) { btnGO_Step1.AlertText = ""; if (ddlLottery.SelectedValue == SLS.Lottery.ZCDC.sID) { Shove._Web.JavaScript.Alert(this.Page, "足彩单场不支持分步开奖。"); return; } tbWinNumber.Text = Shove._Convert.ToDBC(tbWinNumber.Text.Trim().Replace(" ", " ")).Trim(); if (!new SLS.Lottery()[int.Parse(ddlLottery.SelectedValue)].AnalyseWinNumber(tbWinNumber.Text)) { Shove._Web.JavaScript.Alert(this.Page, "开奖号码不正确!"); return; } SystemOptions so = new SystemOptions(); bool isCompareWinMoneyNoWithFax = so["isCompareWinMoneyNoWithFax"].ToBoolean(true); string WinListXML = "<WinLists>"; double[] WinMoneyList = new double[g.Rows.Count * 2]; for (int i = 0; i < g.Rows.Count; i++) { WinMoneyList[i * 2] = Shove._Convert.StrToDouble(((TextBox)g.Rows[i].Cells[1].FindControl("tbMoney")).Text, 0); WinMoneyList[i * 2 + 1] = Shove._Convert.StrToDouble(((TextBox)g.Rows[i].Cells[2].FindControl("tbMoneyNoWithTax")).Text, 0); if (WinMoneyList[i * 2] < 0) { Shove._Web.JavaScript.Alert(this.Page, "第 " + (i + 1).ToString() + " 项奖金输入错误!"); return; } if (WinMoneyList[i * 2] < WinMoneyList[i * 2 + 1]) { if (isCompareWinMoneyNoWithFax) { Shove._Web.JavaScript.Alert(this.Page, "第 " + (i + 1).ToString() + " 项税后奖金输入错误(不能大于税前奖金)!"); return; } } WinListXML += "<WinList defaultMoney=\"" + WinMoneyList[i * 2].ToString() + "\" DefaultMoneyNoWithTax=\"" + WinMoneyList[i * 2 + 1].ToString() + "\"/>"; } WinListXML += "</WinLists>"; DataTable dtIsuseBonuses = new DAL.Tables.T_IsuseBonuses().Open("", "IsuseID = " + Shove._Web.Utility.FilteSqlInfusion(ddlIsuse.SelectedValue), ""); if (dtIsuseBonuses == null) { PF.GoError(ErrorNumber.DataReadWrite, "数据库繁忙,请重试", this.GetType().BaseType.FullName); return; } if (dtIsuseBonuses.Rows.Count < 1) { int ReturnValue = -1; string ReturnDescription = ""; int Result = DAL.Procedures.P_IsuseBonusesAdd(Shove._Convert.StrToLong(ddlIsuse.SelectedValue, 0), _User.ID, WinListXML, ref ReturnValue, ref ReturnDescription); if (Result < 0) { PF.GoError(ErrorNumber.DataReadWrite, "数据库繁忙,请重试", this.GetType().BaseType.FullName); return; } if (ReturnValue < 0) { Shove._Web.JavaScript.Alert(this.Page, ReturnDescription); return; } Shove._Web.JavaScript.Alert(this.Page, "请下一位管理员继续开奖!"); return; } if (dtIsuseBonuses.Rows[0]["UserID"].ToString() == _User.ID.ToString()) { Shove._Web.JavaScript.Alert(this.Page, "请下一位管理员继续开奖!"); return; } for (int i = 0; i < dtIsuseBonuses.Rows.Count; i++) { if ((WinMoneyList[i * 2] != Shove._Convert.StrToDouble(dtIsuseBonuses.Rows[i]["defaultMoney"].ToString(), 0)) || (WinMoneyList[i * 2 + 1] != Shove._Convert.StrToDouble(dtIsuseBonuses.Rows[i]["DefaultMoneyNoWithTax"].ToString(), 0))) { DAL.Tables.T_IsuseBonuses T_IsuseBonuses = new DAL.Tables.T_IsuseBonuses(); T_IsuseBonuses.Delete("IsuseID = " + ddlIsuse.SelectedValue); Shove._Web.JavaScript.Alert(this.Page, "两次奖项输入不一致,请联系上一次开奖操作员!"); return; } } DataTable dt = new DAL.Tables.T_Schemes().Open("* ", "IsuseID = " + Shove._Web.Utility.FilteSqlInfusion(ddlIsuse.SelectedValue) + " and isOpened = 0 and Buyed = 1", "[ID]"); if (dt == null) { PF.GoError(ErrorNumber.DataReadWrite, "数据库繁忙,请重试", this.GetType().BaseType.FullName); return; } StringBuilder sb = new StringBuilder(); string NoWinSchemeID = ""; for (int i = 0; i < dt.Rows.Count; i++) { string LotteryNumber = dt.Rows[i]["LotteryNumber"].ToString(); string Description = ""; double WinMoneyNoWithTax = 0; double WinMoney = 0; try { WinMoney = new SLS.Lottery()[int.Parse(ddlLottery.SelectedValue)].ComputeWin(LotteryNumber, tbWinNumber.Text.Trim(), ref Description, ref WinMoneyNoWithTax, int.Parse(dt.Rows[i]["PlayTypeID"].ToString()), WinMoneyList); } catch { WinMoney = 0; new Log("System").Write("方案 ID:" + dt.Rows[i]["ID"].ToString() + " 算奖出现错误!"); } if (WinMoney == 0) { NoWinSchemeID += dt.Rows[i]["ID"].ToString() + ","; continue; } sb.Append("update T_Schemes set EditWinMoney = ").Append(WinMoney * Shove._Convert.StrToInt(dt.Rows[i]["Multiple"].ToString(), 1)) .Append(", EditWinMoneyNoWithTax = ").Append(WinMoneyNoWithTax * Shove._Convert.StrToInt(dt.Rows[i]["Multiple"].ToString(), 1)) .Append(", WinDescription = '").Append(Description).Append("'") .Append(" where [ID] = ").AppendLine(dt.Rows[i]["ID"].ToString()); } Shove.Database.MSSQL.ExecuteNonQuery(sb.ToString(), new Shove.Database.MSSQL.Parameter[0]); if (NoWinSchemeID.EndsWith(",")) { NoWinSchemeID = NoWinSchemeID.Substring(0, NoWinSchemeID.Length - 1); } if (!string.IsNullOrEmpty(NoWinSchemeID)) { StringBuilder sb1 = new StringBuilder(); sb1.Append("update T_Schemes set EditWinMoney = 0") .Append(", EditWinMoneyNoWithTax = 0, isOpened = 1 , OpenOperatorID=" + _User.ID.ToString()) .Append(", WinDescription = ''") .Append(" where [ID] in (" + NoWinSchemeID + ")"); Shove.Database.MSSQL.ExecuteNonQuery(sb1.ToString(), new Shove.Database.MSSQL.Parameter[0]); } dt = new DAL.Tables.T_Schemes().Open("top 1 * ", "IsuseID = " + Shove._Web.Utility.FilteSqlInfusion(ddlIsuse.SelectedValue) + " and isOpened = 0 and Buyed = 1 and WinDescription is null", "[ID]"); if (dt == null) { PF.GoError(ErrorNumber.DataReadWrite, "数据库繁忙,请重试", this.GetType().BaseType.FullName); return; } Step1IsOpen = (dt.Rows.Count > 0); btnGO_Step1.Enabled = Step1IsOpen; btnGO_Step2.Enabled = (!Step1IsOpen); btnGO_Step3.Enabled = ((!Step1IsOpen) && (!Step2IsOpen)); string Message = "请再次执行第一步"; if (!Step1IsOpen) { Message = "开奖步骤一已经完成,请执行第二步."; } Shove._Web.JavaScript.Alert(this.Page, Message); }
protected void btnGO_Click(object sender, EventArgs e) { string SchemeNumber = Shove._Web.Utility.FilteSqlInfusion(tbSchemeNumber.Text.Trim()); if (SchemeNumber == "") { Shove._Web.JavaScript.Alert(this.Page, "请输入方案号。"); return; } DataTable dt = new DAL.Tables.T_Schemes().Open("", "SchemeNumber='" + SchemeNumber + "'", ""); if (dt == null) { PF.GoError(ErrorNumber.DataReadWrite, "数据库繁忙,请重试", "Admin_UploadWinLotteryImage"); return; } if (dt.Rows.Count < 1) { Shove._Web.JavaScript.Alert(this.Page, "方案号不存在。"); return; } DataRow dr = dt.Rows[0]; if (!Shove._Convert.StrToBool(dr["Buyed"].ToString(), false)) { Shove._Web.JavaScript.Alert(this.Page, "该方案号没有出票。"); return; } if (Shove._IO.File.UploadFile(this.Page, fileImage, "../Temp/", "SchemeWinImage" + SchemeNumber + ".jpg", true, "image") < 0) { Shove._Web.JavaScript.Alert(this.Page, "文件上传错误。"); return; } string FileName = this.Server.MapPath("../Temp/SchemeWinImage" + SchemeNumber + ".jpg"); byte[] Data = System.IO.File.ReadAllBytes(FileName); System.IO.File.Delete(FileName); if (Data == null) { Shove._Web.JavaScript.Alert(this.Page, "文件格式错误。"); return; } MSSQL.ExecuteNonQuery("update T_Schemes set WinImage = @p1 where [SchemeNumber] = @p2", new MSSQL.Parameter("p1", SqlDbType.VarChar, 0, ParameterDirection.Input, Data), new MSSQL.Parameter("p2", SqlDbType.VarChar, 0, ParameterDirection.Input, SchemeNumber)); Shove._Web.JavaScript.Alert(this.Page, "文件上传成功!"); }
protected void btnGO_Step3_Click(object sender, EventArgs e) { btnGO_Step1.AlertText = ""; if (ddlLottery.SelectedValue == SLS.Lottery.ZCDC.sID) { Shove._Web.JavaScript.Alert(this.Page, "足彩单场不支持分步开奖。"); return; } tbWinNumber.Text = Shove._Convert.ToDBC(tbWinNumber.Text.Trim().Replace(" ", " ")).Trim(); if (!new SLS.Lottery()[int.Parse(ddlLottery.SelectedValue)].AnalyseWinNumber(tbWinNumber.Text)) { Shove._Web.JavaScript.Alert(this.Page, "开奖号码不正确!"); return; } int SchemeCount = 0, QuashCount = 0, WinCount = 0, WinNoBuyCount = 0; // 总方案数,处理时撤单数,中奖数,中奖但未成功数 int ReturnValue = -1; string ReturnDescription = ""; DataSet ds = null; bool isEndOpen = false; string ConnectionString2 = Shove._Web.WebConfig.GetAppSettingsString("ConnectionString"); SqlConnection conn1 = Shove.Database.MSSQL.CreateDataConnection <System.Data.SqlClient.SqlConnection>(ConnectionString2 + ";Connect Timeout=120;"); // change the winning announcement to reflect the data if (ddlLottery.SelectedValue == "5") { tbOpenAffiche.Value = tbOpenAffiche.Value.Replace("[__Drawing0__]", tbWinNumber.Text.Substring(0, tbWinNumber.Text.IndexOf('+')).Trim()).Replace("[__Drawing1__]", tbWinNumber.Text.Substring(tbWinNumber.Text.IndexOf('+') + 2)); tbOpenAffiche.Value = tbOpenAffiche.Value.Replace("[__IssueNumber__]", ddlIsuse.Text); tbOpenAffiche.Value = tbOpenAffiche.Value.Replace("[__1stprize__]", ((TextBox)g.Rows[0].Cells[1].FindControl("tbMoney")).Text); tbOpenAffiche.Value = tbOpenAffiche.Value.Replace("[__2ndprize__]", ((TextBox)g.Rows[1].Cells[1].FindControl("tbMoney")).Text); } int Result = P_Win(conn1, ref ds, long.Parse(ddlIsuse.SelectedValue), tbWinNumber.Text.Trim(), tbOpenAffiche.Value, _User.ID, true, ref SchemeCount, ref QuashCount, ref WinCount, ref WinNoBuyCount, ref isEndOpen, ref ReturnValue, ref ReturnDescription); if ((ds == null) || (ReturnDescription != "") || (ReturnValue < 0) || (Result < 0)) { Response.Write(ddlIsuse.SelectedValue + "<br>"); Response.Write(tbWinNumber.Text.Trim() + "<br>"); Response.Write(tbOpenAffiche.Value + "<br>"); Response.Write(_User.ID.ToString() + "<br>"); Response.Write(SchemeCount.ToString() + "<br>"); Response.Write(QuashCount.ToString() + "<br>"); Response.Write(WinCount.ToString() + "<br>"); Response.Write(WinNoBuyCount.ToString() + "<br>"); Response.Write(isEndOpen.ToString() + "<br>"); Response.Write(ReturnValue.ToString() + "<br>"); Response.Write(ReturnDescription.ToString() + "<br>"); Response.Write(Result.ToString() + "<br>"); if (ds == null) { Response.Write("ds = null"); } //PF.GoError(ErrorNumber.DataReadWrite, "数据库读写错误。", this.GetType().BaseType.FullName + Result); return; } PF.SendWinNotification(ds); btnGO_Step1.Enabled = false; btnGO_Step2.Enabled = false; btnGO_Step3.Enabled = true; string Message = "开奖成功,总方案 {0} 个,撤单未满员或未出票方案 {1} 个,有效中奖方案 {2} 个。本期开奖还未全部完成, 请继续操作第三步。"; if (isEndOpen) { BindDataForIsuse(); btnGO_Step3.Enabled = false; Message = "开奖成功,总方案 {0} 个,撤单未满员或未出票方案 {1} 个,有效中奖方案 {2} 个。本期开奖已全部完成。"; } DataTable dt = new DAL.Tables.T_Schemes().Open("", "IsuseID=" + Shove._Convert.StrToLong(ddlIsuse.SelectedValue, 0).ToString(), ""); if (dt == null) { Shove._Web.JavaScript.Alert(this.Page, "开奖出现异常!请联系开发维护人员"); return; } SchemeCount = dt.Rows.Count; DataRow[] dr = dt.Select("QuashStatus <> 0"); QuashCount = dr.Length; dr = dt.Select("WinMoney > 0"); WinCount = dr.Length; Shove._Web.Cache.ClearCache(DataCache.IsusesInfo + ddlLottery.SelectedValue); Shove._Web.JavaScript.Alert(this.Page, String.Format(Message, SchemeCount, QuashCount, WinCount)); }
public void ClearanceStatistics() { DataTable dt1 = new DAL.Tables.T_Schemes().Open(ConnectionString, "ID, LotteryNumber,SchemeNumber,InitiateUserID,PlayTypeID, Multiple", "Buyed = 1 and not exists(select ID from T_BuyWays where T_Schemes.ID = T_BuyWays.SchemeID and Type = 1) and PlayTypeID between 7200 and 7300", ""); if (dt1 == null) { new Log("System").Write("T_Schemes表繁忙,请稍候再读"); return; } if (dt1.Rows.Count < 1) { return; } string InitiateUserID = ""; string LotteryNumber = ""; string SchemeNumber = ""; int SchemeLength = 0; int PlayTypeID = 0; string BuyWays = ""; DataTable dtMatch1 = null; DataRow[] drMatch1 = null; foreach (DataRow dr in dt1.Rows) { LotteryNumber = dr["LotteryNumber"].ToString(); PlayTypeID = Shove._Convert.StrToInt(dr["PlayTypeID"].ToString(), 7201); SchemeNumber = dr["SchemeNumber"].ToString(); SchemeLength = LotteryNumber.Split(';').Length; if (SchemeLength < 3) { new Log("System").Write("方案内容错误");//写错误日志 continue; } BuyWays = GetPassWay(LotteryNumber); string BuyNumber = LotteryNumber.Trim().Split(';')[1].ToString(); string Numbers = BuyNumber.Substring(1, BuyNumber.Length - 1).Substring(0, BuyNumber.Length - 2).ToString().Trim(); int GamesNumber = Numbers.Split('|').Length; //选择场次 string Locate = ""; string[] Matchs = new string[GamesNumber]; string[] BuyResutl = new string[GamesNumber]; string Matchids1 = ""; string Result1 = ""; int GamesNumber1 = 0; for (int i = 0; i < GamesNumber; i++) { Locate = Numbers.Split('|')[i]; Matchs[i] = Locate.Substring(0, Locate.IndexOf('(')); BuyResutl[i] = Locate.Substring(Locate.IndexOf('(') + 1, (Locate.IndexOf(')') - Locate.IndexOf('(') - 1)); Matchids1 += Locate.Substring(0, Locate.IndexOf('(')) + ","; } if (Matchids1.EndsWith(",")) { Matchids1 = Matchids1.Substring(0, Matchids1.Length - 1); } if (string.IsNullOrEmpty(Matchids1)) { continue; } dtMatch1 = new DAL.Tables.T_Match().Open(ConnectionString, "ID,SPFResult, BQCResult, ZJQSResult, ZQBFResult", "id in (" + Matchids1 + ") and isnull(SPFResult, '') <> '' and IsOpened = 1", ""); // 查询字段 if (dtMatch1 == null) { new Log("System").Write("T_Match表繁忙,请稍候再读");// 写日志 continue; } if (dtMatch1.Rows.Count < 1) { new Log("System").Write("T_Match表没数据"); // 写日志 continue; } if (dtMatch1.Rows.Count != Matchids1.Split(',').Length) { continue; } string MatchResult = " "; #region 循环比较赛果 for (int j = 0; j < Matchs.Length; j++) { drMatch1 = dtMatch1.Select("ID=" + Matchs[j]); if (drMatch1.Length < 1) { continue; } switch (PlayTypeID) { case 7201: Result1 = drMatch1[0]["SPFResult"].ToString(); MatchResult = Get7201(Result1); break; case 7204: Result1 = drMatch1[0]["BQCResult"].ToString(); MatchResult = Get7204(Result1); break; case 7203: Result1 = drMatch1[0]["ZJQSResult"].ToString(); MatchResult = Get7203(Result1); break; case 7202: Result1 = drMatch1[0]["ZQBFResult"].ToString(); MatchResult = Get7202(Result1); break; default: break; } if (BuyResutl[j].Contains(MatchResult)) { GamesNumber1++; //命中场次 } // 比较赛果 } #endregion string CanonicalNumber = ""; int count1 = 0; DataTable dtMatch2 = null; DataRow[] drMatch2 = null; string Result2 = ""; int num = 0; int count2 = 0; string Locate2 = ""; string Matchids2 = ""; double WinMoney = 0; double T_WinMoney = 0; string[] strs = LotteryNumber.Split('\r'); string[] LotteryNumbers = null; if (strs.Length < 1) { continue; } foreach (string str in strs) { if (string.IsNullOrEmpty(str.Replace("\n", "").Replace("\r", ""))) { continue; } LotteryNumbers = new Lottery()[72].ToSingle(str, ref CanonicalNumber, PlayTypeID); if (LotteryNumbers.Length < 1) { continue; } bool IsWin = true; count1 = LotteryNumbers.Length; //注数 for (int k = 0; k < count1; k++) { IsWin = true; num = LotteryNumbers[k].Split('|').Length; string[] Screenings = new string[num]; string[] LocateBuyResult = new string[num]; Matchids2 = " "; for (int l = 0; l < num; l++) { Locate2 = LotteryNumbers[k].Split(';')[1].Substring(1, LotteryNumbers[k].Split(';')[1].Length - 2).Split('|')[l]; Screenings[l] = Locate2.Substring(0, Locate2.IndexOf('(')); LocateBuyResult[l] = Locate2.Substring(Locate2.IndexOf('(') + 1, (Locate2.IndexOf(')') - Locate2.IndexOf('(') - 1)); Matchids2 += Locate2.Substring(0, Locate2.IndexOf('(')) + ","; } if (Matchids2.EndsWith(",")) { Matchids2 = Matchids2.Substring(0, Matchids2.Length - 1); } if (string.IsNullOrEmpty(Matchids2)) { continue; } dtMatch2 = new DAL.Tables.T_Match().Open(ConnectionString, "ID,SPFResult, BQCResult, ZJQSResult, ZQBFResult, SPFBonus, BQCBonus, ZJQSBonus, ZQBFBonus", "id in (" + Matchids2 + ")", ""); // 查询字段 if (dtMatch2 == null) { new Log("System").Write("T_Match表繁忙,请稍候再读");// 写日志 continue; } if (dtMatch2.Rows.Count < 1) { new Log("System").Write("T_Match表没数据");// 写日志 continue; } string MatchResult2 = ""; for (int m = 0; m < Screenings.Length; m++) { drMatch2 = dtMatch2.Select("ID=" + Screenings[m]); if (drMatch2.Length < 1) { continue; } switch (PlayTypeID) { case 7201: Result2 = drMatch2[0]["SPFResult"].ToString(); MatchResult2 = Get7201(Result2); T_WinMoney = Shove._Convert.StrToDouble(drMatch2[0]["SPFBonus"].ToString(), 0); break; case 7204: Result2 = drMatch2[0]["BQCResult"].ToString(); MatchResult2 = Get7204(Result2); T_WinMoney = Shove._Convert.StrToDouble(drMatch2[0]["BQCBonus"].ToString(), 0); break; case 7203: Result2 = drMatch2[0]["ZJQSResult"].ToString(); MatchResult2 = Get7203(Result2); T_WinMoney = Shove._Convert.StrToDouble(drMatch2[0]["ZJQSBonus"].ToString(), 0); break; case 7202: Result2 = drMatch2[0]["ZQBFResult"].ToString(); MatchResult2 = Get7202(Result2); T_WinMoney = Shove._Convert.StrToDouble(drMatch2[0]["ZQBFBonus"].ToString(), 0); break; default: break; } if (!LocateBuyResult[m].Equals(MatchResult2)) { IsWin = false; continue; } else if (BuyWays.Equals("单关")) { WinMoney += T_WinMoney * Shove._Convert.StrToInt(dr["Multiple"].ToString(), 1); } } if (IsWin) { count2++; //中奖注数 } } } InitiateUserID = dr["InitiateUserID"].ToString(); DataTable users = new DAL.Tables.T_Users().Open(ConnectionString, "Name", "ID =" + InitiateUserID, ""); if (users == null) { new Log("System").Write("T_Users表繁忙,请稍候再读"); return; } if (users.Rows.Count < 1) { new Log("System").Write("T_Users表没数据"); continue; } string Name = users.Rows[0]["Name"].ToString(); DAL.Tables.T_BuyWays bw = new DAL.Tables.T_BuyWays(); bw.SchemeID.Value = Shove._Convert.StrToLong(dr["ID"].ToString(), 0); bw.SchemeNumber.Value = SchemeNumber; bw.Name.Value = Name; bw.PlayTypeID.Value = PlayTypeID; bw.Count1.Value = count1; bw.BuyWays.Value = BuyWays; bw.Count2.Value = count2; bw.GameNumber.Value = GamesNumber; bw.GameNumber2.Value = GamesNumber1; bw.Rate.Value = GamesNumber1 * 1.00 / GamesNumber * 1.00; bw.UserID.Value = InitiateUserID; bw.Type.Value = 1; long Result = bw.Insert(ConnectionString); if (Result < 0) { new Log("System").Write("BuyWays数据表插入数据不成功"); } if (WinMoney > 0) { DAL.Tables.T_Schemes t_Schemes = new DAL.Tables.T_Schemes(); t_Schemes.WinMoney.Value = WinMoney; t_Schemes.WinMoneyNoWithTax.Value = WinMoney; t_Schemes.WinDescription.Value = "中奖奖金:" + WinMoney.ToString(); Result = t_Schemes.Update(ConnectionString, "id=" + dr["ID"].ToString()); if (Result < 0) { new Log("System").Write("单关自动开奖出现错误,方案ID:" + Shove._Convert.StrToLong(dr["ID"].ToString(), 0).ToString()); } } else if (count2 < 1) { DAL.Tables.T_Schemes t_Schemes = new DAL.Tables.T_Schemes(); t_Schemes.WinMoney.Value = WinMoney; t_Schemes.WinMoneyNoWithTax.Value = WinMoney; t_Schemes.WinDescription.Value = ""; t_Schemes.isOpened.Value = true; Result = t_Schemes.Update(ConnectionString, "id=" + dr["ID"].ToString()); if (Result < 0) { new Log("System").Write("单关自动开奖出现错误,方案ID:" + Shove._Convert.StrToLong(dr["ID"].ToString(), 0).ToString()); } } } }