public void GetLotteryOpenNumberAndOpenWin() // 获取开奖信息,并计算奖金开奖 { // 读取未开奖的擂台方案表 DataTable dtSchemeChallenge = new DAL.Tables.T_ChallengeScheme().Open(ConnectionString, "[ID],[InitiateUserID],[LotteryNumber],[Odds], PlayTypeID, Money", "IsOpened = 0 and DateTime < CONVERT(VARCHAR(24),GETDATE(),111)", ""); if (dtSchemeChallenge == null) { new Log("SystemGetLotteryOpenNumber").Write("比拼擂台方案表,没有可开奖的数据。"); return; } if (dtSchemeChallenge.Rows.Count < 1) { IsOpened = true; return; } string PlayTypeID = ""; string SchemeID = ""; string InitiateUserID = ""; string LotteryNunber = ""; string Content = ""; string WaysNumber = ""; string Matchs = ""; // 遍历没有开奖的方案 foreach (DataRow dr in dtSchemeChallenge.Rows) { //得到方案ID SchemeID = dr["ID"].ToString().Trim(); //得到方案发起用户ID InitiateUserID = dr["InitiateUserID"].ToString().Trim(); //得到投注号码 LotteryNunber = dr["LotteryNumber"].ToString().Trim(); PlayTypeID = dr["PlayTypeID"].ToString().Trim(); #region 对投注号码进行分析,判断注数 SLS.Lottery slsLottery = new SLS.Lottery(); string[] t_lotterys = SplitLotteryNumber(LotteryNunber); if ((t_lotterys == null) || (t_lotterys.Length < 1)) { new Log("SystemGetLotteryOpenNumber").Write("投注号码出现异常,读取格式不正确:" + LotteryNunber); return; } int ValidNum = 0; foreach (string str in t_lotterys) { string Number = slsLottery[72].AnalyseScheme(str, Shove._Convert.StrToInt(PlayTypeID, 0)); if (string.IsNullOrEmpty(Number)) { continue; } string[] str_s = Number.Split('|'); if (str_s == null || str_s.Length < 1) { continue; } ValidNum += Shove._Convert.StrToInt(str_s[str_s.Length - 1], 0); } #endregion //解析投注号码 Content = LotteryNunber.Trim().Split(';')[1].ToString(); // 得到投注内容 WaysNumber = LotteryNunber.Trim().Split(';')[2].ToString(); // 得到过关玩法 // 得到投注比赛ID、投注内容 string[] Numbers = Content.Substring(1, Content.Length - 2).Split('|'); Matchs = ""; foreach (string Number in Numbers) { Matchs += Number.Substring(0, Number.IndexOf('(')) + ","; } if (Matchs.EndsWith(",")) { Matchs = Matchs.Substring(0, Matchs.Length - 1); } if (string.IsNullOrEmpty(Matchs)) { continue; } //通过赛事ID 查找赛事结果 DataTable dt = new DAL.Tables.T_Match().Open(ConnectionString, "[SPFResult], [ID]", "[ID] in (" + Matchs + ") and IsOpened = 1", "[ID]"); if (dt == null) { new Log("SystemGetLotteryOpenNumber").Write("读取 T_Match 数据时候出现异常"); continue; } if (dt.Rows.Count < 1) { new Log("SystemGetLotteryOpenNumber").Write("MatchID:(" + Matchs + ")暂未开奖"); continue; } bool IsWin = true; string Result = ""; int WinCoumt = 0; // 命中场次 int i = 0; string[] matchsId = Matchs.Split(','); foreach (string Number in Numbers) { DataRow[] drs = dt.Select("ID = " + matchsId[i]); if (drs.Length < 1) { IsWin = false; break; } string ddx = Number.Substring(Number.IndexOf('(')).Substring(1); if (ddx.EndsWith(")")) { ddx = ddx.Substring(0, ddx.Length - 1); } Result = GetResult(drs[0]["SPFResult"].ToString(), PlayTypeID); if (!Result.Equals(ddx)) { IsWin = false; } else { WinCoumt++; } i++; } string sql = ""; int result = 0; // 计算命中场次 if (WinCoumt > 0) { string WinCountSql = "update T_ChallengeBetRed set WinCount = ISNULL(WinCount,0) + " + WinCoumt + " where UserId = " + InitiateUserID; int WinCountResult = Shove.Database.MSSQL.ExecuteNonQuery(ConnectionString, WinCountSql); if (WinCountResult < 0) { new Log("SystemGetLotteryOpenNumber").Write("执行Sql语句失败:" + sql); continue; } } if (!IsWin) {// 没有中奖 sql = "update T_ChallengeScheme set IsOpened = 1, OpenOperateId = 1 where ID = " + SchemeID; result = Shove.Database.MSSQL.ExecuteNonQuery(ConnectionString, sql); if (result < 0) { new Log("SystemGetLotteryOpenNumber").Write("执行Sql语句失败:" + sql); continue; } continue; } string Odds = dr["odds"].ToString(); double WinMoney = 2; foreach (string Odd in Odds.Split('|')) { WinMoney *= Shove._Convert.StrToDouble(Odd, 0); } // 将 中奖金额 转换为 整型 以 积分的形式显示出来 int Score = Convert.ToInt32(WinMoney); // 修改方案的 IsOpen , WinMoney ,WinDescription sql = "update T_ChallengeScheme set IsOpened = 1,WinMoney = " + Score.ToString() + ",WinDescription='比拼擂台中奖', OpenOperateId = 1 where ID = " + SchemeID; sql += " update T_ChallengeBetRed set Score = isnull(Score,0) +" + Score.ToString() + " where UserId = " + InitiateUserID; result = Shove.Database.MSSQL.ExecuteNonQuery(ConnectionString, sql); if (result < 0) { new Log("SystemGetLotteryOpenNumber").Write("执行Sql语句失败:" + sql); continue; } new Log("SystemGetLotteryOpenNumber").Write("开奖成功,SchemeID:" + SchemeID); } }
public void ClearanceStatistics_Challenge() { // 查询擂台方案表 DataTable dt1 = new DAL.Tables.T_ChallengeScheme().Open(ConnectionString, "ID, LotteryNumber,SchemeNumber,InitiateUserID,PlayTypeID,1 as Multiple", " not exists(select ID from T_BuyWays where T_ChallengeScheme.ID = T_BuyWays.SchemeID and Type = 2)", ""); 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 = 2; long Result = bw.Insert(ConnectionString); if (Result < 0) { new Log("System").Write("BuyWays数据表插入数据不成功"); } } }
private void BindBet() { long BuyID = Shove._Convert.StrToLong(Shove._Web.Utility.GetRequest("id"), 0); string type = Shove._Web.Utility.GetRequest("type").ToString(); if (BuyID < 1) { Shove._Web.JavaScript.Alert(this.Page, "获取数据失败请重新操作"); return; } if (_User == null) { Shove._Web.JavaScript.Alert(this.Page, "请登陆后执行此操作"); return; } DataTable dt = null; // 通过ID 获取擂台方案表中的相关数据 if (type == "1") { dt = new DAL.Tables.T_ChallengeScheme().Open("ID,[DateTime],InitiateUserId,IsuseID,PlayTypeID,LotteryNumber,IsOpened", " ID = " + BuyID, ""); } else { dt = Shove.Database.MSSQL.Select("select ID,[DateTime],InitiateUserId,IsuseID,PlayTypeID,LotteryNumber,IsOpened from T_ChallengeSaveScheme where ID = " + BuyID); } if (dt == null) { Shove._Web.JavaScript.Alert(this.Page, "对不起获取该方案失败,请重新操作"); return; } if (dt.Rows.Count != 1) { Shove._Web.JavaScript.Alert(this.Page, "对不起获取该方案失败,请重新操作"); return; } // 是否已经开过奖的 if (dt.Rows[0]["IsOpened"].ToString().Equals("1")) { Shove._Web.JavaScript.Alert(this.Page, "对不起该方案内容已截至"); return; } #region string LotteryNumber = ""; int Multiple = 0; double SumMoney = 0; long IsuseID = 0; int Count = 0; int LotID = 0; int PlayID = 0; // 购买ID hidBuyID.Value = BuyID.ToString(); DataRow dr = dt.Rows[0]; string HidIsuseID = dt.Rows[0]["IsuseID"].ToString(); string playType = dt.Rows[0]["PlayTypeID"].ToString(); // Share 总分数 1 string tb_Share = "1"; // 购买分数 为 1 string tb_BuyShare = "1"; // 不保密 string tbSecrecyLevel = "0"; string tb_LotteryNumber = dr["LotteryNumber"].ToString(); // 购买金额等于 总金额 string tb_hide_AssureMoney = "2"; // 没有 string HidLotteryID = "72"; // 倍数1倍 string tb_Multiple = "1"; if (tb_Multiple == "") { tb_Multiple = "1"; } int Share = 0; int BuyShare = 0; double AssureMoney = 0; short SecrecyLevel = 0; try { Share = int.Parse(tb_Share); BuyShare = int.Parse(tb_BuyShare); AssureMoney = double.Parse(tb_hide_AssureMoney); Multiple = int.Parse(tb_Multiple); SecrecyLevel = short.Parse(tbSecrecyLevel); PlayID = int.Parse(playType); LotID = int.Parse(HidLotteryID); IsuseID = long.Parse(HidIsuseID); } catch { } if ((BuyShare == Share) && (AssureMoney == 0)) { Share = 1; BuyShare = 1; } double BuyMoney = BuyShare * (SumMoney / Share) + AssureMoney; LotteryNumber = tb_LotteryNumber; if (!string.IsNullOrEmpty(LotteryNumber) && LotteryNumber[LotteryNumber.Length - 1] == '\n') { LotteryNumber = LotteryNumber.Substring(0, LotteryNumber.Length - 1); } hidLotteryNumber.Value = LotteryNumber; if (string.IsNullOrEmpty(LotteryNumber)) { Shove._Web.JavaScript.Alert(this.Page, "传递的参数错误,请重新发起操作!"); return; } dt = new DAL.Tables.T_PassRate().Open("MatchID, MatchNumber, StopSellTime", "", ""); if (dt == null) { PF.GoError(ErrorNumber.DataReadWrite, "数据库繁忙,请重试", this.GetType().BaseType.FullName); return; } hidMatchID.Value = ""; foreach (DataRow drr in dt.Rows) { hidMatchID.Value += drr["MatchID"].ToString() + ","; } if (hidMatchID.Value.EndsWith(",")) { hidMatchID.Value = hidMatchID.Value.Substring(0, hidMatchID.Value.Length - 1); } StringBuilder sb = new StringBuilder(); sb.Append("<table width=\"100%\" 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[] LotteryNumbers = LotteryNumber.Replace("\r", "").Split('\n'); string Number = ""; int No = 0; string BuyWays = ""; StringBuilder sbMatchIDs = new StringBuilder(); PlayID = Shove._Convert.StrToInt(LotteryNumbers[0].Split(';')[0], 7201); LotID = Shove._Convert.StrToInt(PlayID.ToString().Substring(0, 2), 72); DateTime EndTime = DateTime.Now; foreach (string str in LotteryNumbers) { if (string.IsNullOrEmpty(str)) { continue; } No++; Count++; 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 { } SumMoney += 2 * Multiple; if (No > 10) { 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[] dr2 = dt.Select("MatchID=" + MatchID.ToString()); if (dr2.Length < 1) { continue; } sbMatchIDs.Append(Numbers[i].Substring(0, Numbers[i].IndexOf("(")) + ","); sb.Append(dr2[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(); string MatchIDs = sbMatchIDs.ToString(); if (MatchIDs.EndsWith(",")) { MatchIDs = MatchIDs.Substring(0, MatchIDs.Length - 1); } if (string.IsNullOrEmpty(MatchIDs.Trim())) { Shove._Web.JavaScript.Alert(this.Page, "无法获取信息"); return; } DataRow[] drTime = dt.Select("MatchID in (" + MatchIDs + ")", "StopSellTime"); if (drTime.Length > 0) { EndTime = Shove._Convert.StrToDateTime(drTime[0]["StopSellTime"].ToString(), DateTime.Now.AddHours(1).ToString()); } labEndTime.Text = EndTime.ToString("yyyy-MM-dd HH:mm:ss"); HidIsuseEndTime.Value = EndTime.ToString(); labMultiple.Text = Multiple.ToString(); labSchemeMoney.Text = SumMoney.ToString(); labNum.Text = Count.ToString(); dt = new DAL.Tables.T_Isuses().Open("ID", "LotteryID= " + LotID.ToString(), "EndTime desc"); if (dt == null) { PF.GoError(ErrorNumber.DataReadWrite, "数据库繁忙,请重试", this.GetType().BaseType.FullName); return; } if (dt.Rows.Count < 1) { PF.GoError(ErrorNumber.NoIsuse, "请添加期号", this.GetType().BaseType.FullName); return; } IsuseID = Shove._Convert.StrToLong(dt.Rows[0]["ID"].ToString(), 0); hidSchemeMoney.Value = SumMoney.ToString(); hidMultiple.Value = Multiple.ToString(); hidlotid.Value = LotID.ToString(); hidplayid.Value = PlayID.ToString(); hidSumNum.Value = Count.ToString(); hidisuseid.Value = IsuseID.ToString(); #endregion }