/// <summary> /// 初始化开奖信息(一期) /// </summary> public void InitialTodayInfo(Lotterys Lottery, DateTime dt) { using (e = new LotteryAPPEntities()) { var dtS = dt.Date.AddHours((double)Lottery.TimeStart.Value); var dtE = dtS;//dtS.AddHours(Lottery..Value); var query = e.LotteryOpen.Count(n => n.LotteryId == Lottery.Id && (n.ScheduleOpenTime > dtS && n.ScheduleOpenTime <= dtE)); if (query == 0) { //int AddZero = Lottery.BetweenMinute == 1 ? 4 : 3; using (tran = new TransactionScope()) { for (int i = 1; true; i++) { var ot = dtS.AddMinutes(i * (int)Lottery.BetweenMinute.Value); if (ot > dtE)//超期退出循环 { break; } var code = GetAllCodeList()[random.Next(0, GetAllCodeList().Count)]; var open = new LotteryOpen { LotteryId = Lottery.Id, OpenStatus = (int)Enum_LotteryOpenStatus.Schedule, ScheduleOpenCode = code, //预先开出随机号 ScheduleOpenTime = ot, //间隔多少时间一期 Expect = ot.Date.ToString("yyyyMMdd") + MyTool.AddZeroStr(i, Lottery.ExceptLength.HasValue? Lottery.ExceptLength.Value:0), ExpectDate = ot.Date.ToString("yyyyMMdd"), RerollCount = 0, }; e.LotteryOpen.Add(open); var info = new LotteryOpenInfo { Expect = open.Expect, LotteryId = open.LotteryId, OpenCode = "", OpenDate = open.ScheduleOpenTime.Date, OpenTime = open.ScheduleOpenTime, }; e.LotteryOpenInfo.Add(info); } e.SaveChanges(); tran.Complete(); } } } }
/// <summary> /// 任选算法复式 /// </summary> /// <param name="b1">下注号</param> /// <param name="b2">开奖号</param> /// <param name="need">中几个号才算中</param> /// <returns></returns> static int rxPlay(List <int> b1, List <int> b2, int need, int choice) { int zhong = (from a in b1//匹配中奖号码 from b in b2 where a == b select a).Count(); if (zhong >= need) { if (choice > need) { return(MyTool.CalculateCombination(choice - need, b1.Count - need)); } return(MyTool.CalculateCombination(need, zhong)); } return(0); }
/// <summary> /// 胆拖玩法 /// </summary> /// <param name="b1">下注号</param> /// <param name="b2">开奖号</param> /// <param name="need">中几个号才算中</param> /// <returns></returns> static int dtPlay(List <List <int> > b1, List <int> b2, int need, int choice) { var dt = (from a in b1[0]//匹配胆码 from b in b2 where a == b select a).Count(); if (choice > need)//玩法任选X>中Y时 { if (dt == 5) { return(MyTool.CalculateCombination(choice - b1[0].Count, b1[1].Count)); //胆码全中 } return(rxPlay(b1[1], b2, need - dt, choice - b1[0].Count)); //胆码未全中 } //玩法任选X中X时 if (dt == b1[0].Count) //胆码全中则匹配拖码 { return(rxPlay(b1[1], b2, need - dt, choice - b1[0].Count)); //胆码全中后相当于任选X中X } return(0); }
//public object GetBetHistory(int AccountId,int count) //{ // using (e = new LotteryAPPEntities()) // { // var query = e.BetInfo.Where(n => n.AccountId == AccountId).OrderByDescending(n => n.Id).ToList().Select(n => new // { // n.BackMoney, // n.BetMoney, // BetNum = MyTool.GetBet_danshuang(n.BetNum, n.BetPlayTypeCode), // BetPlayTypeCode = LotteryOpenTool.LpList().FirstOrDefault(w => w.BetPlayTypeCode == n.BetPlayTypeCode).LotteryPlayName, // n.BetTimes, // n.BetUnit, // n.CreateTime, // n.WinMoney, // n.WinUnit, // OpenNo = MyTool.AddZeroStr(n.LotteryOpenInfo.Expect, 3), // OpenNum = n.ResultType > 1 ? "" : MyTool.AddZeroStr(n.LotteryOpenInfo.OpenCode), // Enum_ResultType = MyTool.GetBetResultType(n.ResultType), // }); // if(count>=0) // { // query = query.Take(count); // } // return query.ToList(); // } //} public object GetBetHistory(int AccountId, Lotterys lottery, DateTime DtLoad) { using (e = new LotteryAPPEntities()) { var query = e.BetInfo.Where(n => n.AccountId == AccountId && n.LotteryOpenInfo.LotteryId == lottery.Id && n.CreateTime >= DtLoad).OrderByDescending(n => n.Id).ToList().Select(n => new { n.BackMoney, n.BetMoney, BetNum = lottery.LotteryType == "11x5" ? MyTool.GetBet_ZH_11X5(n.BetNum, n.BetPlayTypeCode) : n.BetNum, BetPlayTypeCode = MyTool.GetLotteryPlayList(lottery.LotteryType)[n.BetPlayTypeCode - 1].LotteryPlayName, n.BetTimes, n.BetUnit, n.CreateTime, n.WinMoney, n.WinUnit, OpenNo = MyTool.AddZeroStr(n.LotteryOpenInfo.Expect, 3), //OpenNum = n.ResultType==2 ? "" : n.LotteryOpenInfo.OpenCode, OpenNum = n.LotteryOpenInfo.OpenCode, Enum_ResultType = EnumTool.GetBetResultType(n.ResultType), }); return(query.ToList()); } }
/// <summary> /// 开奖判断 /// </summary> /// <param name="rxdswz">任选单式位置</param> /// <returns></returns> public static int isWin(int BetPlayTypeCode, string betNum, List <int> rxdswz, List <int> openCode, List <int> h4, List <int> h3, List <int> z3, List <int> q3, List <int> h2, List <int> q2, int dan, int da, int bjh, List <ZXLB> zxlbList, out decimal BackMoney) { if (TSHPlayId.Contains(BetPlayTypeCode)) { betNum = MyTool.ChangeBetNumTSH(betNum); } int winTimes = 0; BackMoney = 0; var b1 = new List <List <int> >();//投注号 //if (BetPlayTypeCode == 1) //{ //} //else if (!LotteryInfo_SSC.LpList().FirstOrDefault(n => n.BetPlayTypeCode == BetPlayTypeCode).LotteryPlayName.Contains("单式")) { //b1 = betNum.Split('|').Select( // n => n.Split(' ').Select(w => Convert.ToInt32(w)).ToList() // ).ToList(); if (betNum.IndexOf('|') > -1) { foreach (var item in betNum.Split('|')) { if (item.Length > 0) { b1.Add(item.Split(' ').Select(w => Convert.ToInt32(w)).ToList()); } else { b1.Add(null); } } } else { b1.Add(betNum.Split(' ').Select(w => Convert.ToInt32(w)).ToList()); } } switch (BetPlayTypeCode) { #region 定位胆 case 1: //定位胆 rxzxfs(b1, out winTimes, openCode, 1); //任选1中1 break; #endregion #region 五星 case 2: //五星直选复式 winTimes = b1[0].Contains(openCode[0]) && b1[1].Contains(openCode[1]) && b1[2].Contains(openCode[2]) && b1[3].Contains(openCode[3]) && b1[4].Contains(openCode[4]) ? 1 : 0; break; case 3: //五星直选单式 winTimes = betNum.Contains(string.Format("{0}{1}{2}{3}{4}", openCode[0], openCode[1], openCode[2], openCode[3], openCode[4])) ? 1 : 0; break; case 4: //五星直选组合 Zxzh(BetPlayTypeCode, b1, out winTimes, out BackMoney, openCode); break; case 5: //五星组选120(全不同号) if (bjh == 120) { winTimes = zxpd(zxlbList, 5, 0, 1, 0, b1[0], null) ? 1 : 0; } break; case 6: //五星组选60(一对) if (bjh == 60) { winTimes = zxpd(zxlbList, 2, 3, 2, 1, b1[0], b1[1]) ? 1 : 0; } break; case 7: //五星组选30(两对) if (bjh == 30) { winTimes = zxpd(zxlbList, 4, 1, 2, 1, b1[0], b1[1]) ? 1 : 0; } break; case 8: //五星组选20(三条) if (bjh == 20) { winTimes = zxpd(zxlbList, 3, 2, 3, 1, b1[0], b1[1]) ? 1 : 0; } break; case 9: //五星组选10(三带二) if (bjh == 10) { winTimes = zxpd(zxlbList, 3, 2, 3, 2, b1[0], b1[1]) ? 1 : 0; } break; case 10: //五星组选5(四条) if (bjh == 5) { winTimes = zxpd(zxlbList, 4, 1, 4, 1, b1[0], b1[1]) ? 1 : 0; } break; case 11: //五星一帆风顺 case 12: //五星好事成双 case 13: //五星三星报喜 case 14: //五星四季发财 winTimes = wxts(b1, zxlbList, BetPlayTypeCode - 10); break; #endregion #region 四星 case 15: //四星直选复式 winTimes = b1[0].Contains(openCode[1]) && b1[1].Contains(openCode[2]) && b1[2].Contains(openCode[3]) && b1[3].Contains(openCode[4]) ? 1 : 0; break; case 16: //四星直选单式 winTimes = betNum.Contains(string.Format("{0}{1}{2}{3}", openCode[1], openCode[2], openCode[3], openCode[4])) ? 1 : 0; break; case 17: //四星直选组合 Zxzh(BetPlayTypeCode, b1, out winTimes, out BackMoney, h4); break; case 18: //四星组选24(全不同号) if (LotteryPlayArithmetic.pd(h4, out zxlbList) == 24) { winTimes = zxpd(zxlbList, 4, 0, 1, 0, b1[0], null) ? 1 : 0; } break; case 19: //四星组选12(一对) if (LotteryPlayArithmetic.pd(h4, out zxlbList) == 12) { winTimes = zxpd(zxlbList, 2, 2, 2, 1, b1[0], b1[1]) ? 1 : 0; } break; case 20: //四星组选6(两对) if (LotteryPlayArithmetic.pd(h4, out zxlbList) == 6) { winTimes = zxpd(zxlbList, 4, 0, 2, 0, b1[0], null) ? 1 : 0; } break; case 21: //四星组选4(三条) if (LotteryPlayArithmetic.pd(h4, out zxlbList) == 4) { winTimes = zxpd(zxlbList, 3, 1, 3, 1, b1[0], b1[1]) ? 1 : 0; } break; #endregion #region 百家 case 22: //百家重复号 foreach (var item in b1[0]) { if (bjh >= 0) { switch (item) { case 120: //单号 if (bjh == item) { winTimes++; } BackMoney += LotteryInfo_SSC.LpList()[BetPlayTypeCode - 1].PrizeClass[item]; break; case 60: //一对 if (bjh <= item) { winTimes++; } BackMoney += LotteryInfo_SSC.LpList()[BetPlayTypeCode - 1].PrizeClass[item]; break; case 30: //两对 if (bjh <= item && bjh != 20) { winTimes++; } BackMoney += LotteryInfo_SSC.LpList()[BetPlayTypeCode - 1].PrizeClass[item]; break; case 20: //三条 if (bjh <= item) { winTimes++; } BackMoney += LotteryInfo_SSC.LpList()[BetPlayTypeCode - 1].PrizeClass[item]; break; case 10: //三带二 if (bjh <= item && bjh != 5) { winTimes++; } BackMoney += LotteryInfo_SSC.LpList()[BetPlayTypeCode - 1].PrizeClass[item]; break; case 5: //四条 if (bjh <= item) { winTimes++; } BackMoney += LotteryInfo_SSC.LpList()[BetPlayTypeCode - 1].PrizeClass[item]; break; } } } break; case 23: //百家顺子号 if (bjh == 120) { winTimes = 1; openCode = openCode.OrderBy(n => n).ToList(); for (int i = 1; i < openCode.Count; i++) { if (openCode[i] - openCode[i - 1] != 1) { winTimes = 0; break; } } } break; case 24: //百家单双号 if (b1[0].Contains(dan)) { winTimes = 1; BackMoney = LotteryInfo_SSC.LpList()[BetPlayTypeCode - 1].PrizeClass[dan]; } break; case 25: //百家大小号 if (b1[0].Contains(da)) { winTimes = 1; BackMoney = LotteryInfo_SSC.LpList()[BetPlayTypeCode - 1].PrizeClass[da]; } break; #endregion #region 后三 case 26: //后三直选复式 winTimes = b1[0].Contains(openCode[2]) && b1[1].Contains(openCode[3]) && b1[2].Contains(openCode[4]) ? 1 : 0; break; case 27: //后三直选单式 winTimes = betNum.Contains(string.Format("{0}{1}{2}", openCode[2], openCode[3], openCode[4])) ? 1 : 0; break; case 28: //后三直选组合 Zxzh(BetPlayTypeCode, b1, out winTimes, out BackMoney, h3); break; case 29: //后三直选和值 winTimes = b1[0].Contains(openCode[2] + openCode[3] + openCode[4]) ? 1 : 0; break; case 30: //后三直选跨度 winTimes = b1[0].Contains(h3.Max() - h3.Min()) ? 1 : 0; break; case 31: //后三组三复式 winTimes = LotteryPlayArithmetic.zxfs(b1, zxlbList, 3, 2, h3); break; case 32: //后三组三单式 winTimes = LotteryPlayArithmetic.zxds(betNum, zxlbList, 3, h3); break; case 33: //后三组六复式 winTimes = LotteryPlayArithmetic.zxfs(b1, zxlbList, 6, 3, h3); break; case 34: //后三组六单式 winTimes = LotteryPlayArithmetic.zxds(betNum, zxlbList, 6, h3); break; case 35: //后三混合组选 LotteryPlayArithmetic.hshhzx(BetPlayTypeCode, betNum, zxlbList, out winTimes, out BackMoney, h3); break; case 36: //后三组选和值 LotteryPlayArithmetic.hszxhz(BetPlayTypeCode, b1, zxlbList, out winTimes, out BackMoney, h3); break; case 37: //后三组选包胆 hszxbd(BetPlayTypeCode, b1, zxlbList, out winTimes, out BackMoney, h3); break; case 38: //后三和值尾数 winTimes = b1[0].Contains((openCode[2] + openCode[3] + openCode[4]) % 10) ? 1 : 0; break; case 39: //后三特殊号 hstsh(BetPlayTypeCode, b1, zxlbList, out winTimes, out BackMoney, h3); break; #endregion #region 中三 case 40: //中三直选复式 winTimes = b1[0].Contains(openCode[1]) && b1[1].Contains(openCode[2]) && b1[2].Contains(openCode[3]) ? 1 : 0; break; case 41: //中三直选单式 winTimes = betNum.Contains(string.Format("{0}{1}{2}", openCode[1], openCode[2], openCode[3])) ? 1 : 0; break; case 42: //中三直选组合 Zxzh(BetPlayTypeCode, b1, out winTimes, out BackMoney, z3); break; case 43: //中三直选和值 winTimes = b1[0].Contains(openCode[1] + openCode[2] + openCode[3]) ? 1 : 0; break; case 44: //中三直选跨度 winTimes = b1[0].Contains(z3.Max() - z3.Min()) ? 1 : 0; break; case 45: //中三组三复式 winTimes = LotteryPlayArithmetic.zxfs(b1, zxlbList, 3, 2, z3); break; case 46: //中三组三单式 winTimes = LotteryPlayArithmetic.zxds(betNum, zxlbList, 3, z3); break; case 47: //中三组六复式 winTimes = LotteryPlayArithmetic.zxfs(b1, zxlbList, 6, 3, z3); break; case 48: //中三组六单式 winTimes = LotteryPlayArithmetic.zxds(betNum, zxlbList, 6, z3); break; case 49: //中三混合组选 LotteryPlayArithmetic.hshhzx(BetPlayTypeCode, betNum, zxlbList, out winTimes, out BackMoney, z3); break; case 50: //中三组选和值 LotteryPlayArithmetic.hszxhz(BetPlayTypeCode, b1, zxlbList, out winTimes, out BackMoney, z3); break; case 51: //中三组选包胆 hszxbd(BetPlayTypeCode, b1, zxlbList, out winTimes, out BackMoney, z3); break; case 52: //中三和值尾数 winTimes = b1[0].Contains((openCode[1] + openCode[2] + openCode[3]) % 10) ? 1 : 0; break; case 53: //中三特殊号 hstsh(BetPlayTypeCode, b1, zxlbList, out winTimes, out BackMoney, z3); break; #endregion #region 前三 case 54: //前三直选复式 winTimes = b1[0].Contains(openCode[0]) && b1[1].Contains(openCode[1]) && b1[2].Contains(openCode[2]) ? 1 : 0; break; case 55: //前三直选单式 winTimes = betNum.Contains(string.Format("{0}{1}{2}", openCode[0], openCode[1], openCode[2])) ? 1 : 0; break; case 56: //前三直选组合 Zxzh(BetPlayTypeCode, b1, out winTimes, out BackMoney, q3); break; case 57: //前三直选和值 winTimes = b1[0].Contains(openCode[0] + openCode[1] + openCode[2]) ? 1 : 0; break; case 58: //前三直选跨度 winTimes = b1[0].Contains(q3.Max() - q3.Min()) ? 1 : 0; break; case 59: //前三组三复式 winTimes = LotteryPlayArithmetic.zxfs(b1, zxlbList, 3, 2, q3); break; case 60: //前三组三单式 winTimes = LotteryPlayArithmetic.zxds(betNum, zxlbList, 3, q3); break; case 61: //前三组六复式 winTimes = LotteryPlayArithmetic.zxfs(b1, zxlbList, 6, 3, q3); break; case 62: //前三组六单式 winTimes = LotteryPlayArithmetic.zxds(betNum, zxlbList, 6, q3); break; case 63: //前三混合组选 LotteryPlayArithmetic.hshhzx(BetPlayTypeCode, betNum, zxlbList, out winTimes, out BackMoney, q3); break; case 64: //前三组选和值 LotteryPlayArithmetic.hszxhz(BetPlayTypeCode, b1, zxlbList, out winTimes, out BackMoney, q3); break; case 65: //前三组选包胆 hszxbd(BetPlayTypeCode, b1, zxlbList, out winTimes, out BackMoney, q3); break; case 66: //前三和值尾数 winTimes = b1[0].Contains((openCode[0] + openCode[1] + openCode[2]) % 10) ? 1 : 0; break; case 67: //前三特殊号 hstsh(BetPlayTypeCode, b1, zxlbList, out winTimes, out BackMoney, q3); break; #endregion #region 后二 case 68: //后二直选复式 winTimes = b1[0].Contains(openCode[3]) && b1[1].Contains(openCode[4]) ? 1 : 0; break; case 69: //后二直选单式 winTimes = betNum.Contains(string.Format("{0}{1}", openCode[3], openCode[4])) ? 1 : 0; break; case 70: //后二直选和值 winTimes = b1[0].Contains(openCode[3] + openCode[4]) ? 1 : 0; break; case 71: //后二直选跨度 winTimes = b1[0].Contains(Math.Abs(openCode[3] - openCode[4])) ? 1 : 0; break; case 72: //后二组选复式 winTimes = LotteryPlayArithmetic.zxfs(b1, zxlbList, 1, 2, h2); break; case 73: //后二组选单式 winTimes = LotteryPlayArithmetic.zxds(betNum, zxlbList, 1, h2); break; case 74: //后二组选和值 h2zxhz(b1, out winTimes, h2); break; case 75: //后二组选包胆 h2zxbd(b1, out winTimes, h2); break; #endregion #region 前二 case 76: //前二直选复式 winTimes = b1[0].Contains(openCode[0]) && b1[1].Contains(openCode[1]) ? 1 : 0; break; case 77: //前二直选单式 winTimes = betNum.Contains(string.Format("{0}{1}", openCode[0], openCode[1])) ? 1 : 0; break; case 78: //前二直选和值 winTimes = b1[0].Contains(openCode[0] + openCode[1]) ? 1 : 0; break; case 79: //前二直选跨度 winTimes = b1[0].Contains(Math.Abs(openCode[0] - openCode[1])) ? 1 : 0; break; case 80: //前二组选复式 winTimes = LotteryPlayArithmetic.zxfs(b1, zxlbList, 1, 2, q2); break; case 81: //前二组选单式 winTimes = LotteryPlayArithmetic.zxds(betNum, zxlbList, 1, q2); break; case 82: //前二组选和值 h2zxhz(b1, out winTimes, q2); break; case 83: //前二组选包胆 h2zxbd(b1, out winTimes, q2); break; #endregion #region 定位 case 84: //后三一码 winTimes = LotteryPlayArithmetic.bdw(b1, 1, h3); break; case 85: //前三一码 winTimes = LotteryPlayArithmetic.bdw(b1, 1, q3); break; case 86: //后三二码 winTimes = LotteryPlayArithmetic.bdw(b1, 2, h3); break; case 87: //前三二码 winTimes = LotteryPlayArithmetic.bdw(b1, 2, q3); break; case 88: //四星一码 winTimes = LotteryPlayArithmetic.bdw(b1, 1, h4); break; case 89: //四星二码 winTimes = LotteryPlayArithmetic.bdw(b1, 2, h4); break; case 90: //五星二码 winTimes = LotteryPlayArithmetic.bdw(b1, 2, openCode); break; case 91: //五星三码 winTimes = LotteryPlayArithmetic.bdw(b1, 3, openCode); break; #endregion #region 大(6)小(5)单(1)双(0) case 92: //前二大小单双 winTimes = LotteryPlayArithmetic.pd_dxds(openCode[0], b1[0]) && LotteryPlayArithmetic.pd_dxds(openCode[1], b1[1]) ? 1 : 0; break; case 93: //后二大小单双 winTimes = LotteryPlayArithmetic.pd_dxds(openCode[3], b1[0]) && LotteryPlayArithmetic.pd_dxds(openCode[4], b1[1]) ? 1 : 0; break; case 94: //前三大小单双 winTimes = LotteryPlayArithmetic.pd_dxds(openCode[0], b1[0]) && LotteryPlayArithmetic.pd_dxds(openCode[1], b1[1]) && LotteryPlayArithmetic.pd_dxds(openCode[2], b1[2]) ? 1 : 0; break; case 95: //后三大小单双 winTimes = LotteryPlayArithmetic.pd_dxds(openCode[2], b1[0]) && LotteryPlayArithmetic.pd_dxds(openCode[3], b1[1]) && LotteryPlayArithmetic.pd_dxds(openCode[4], b1[2]) ? 1 : 0; break; #endregion #region 任选二 case 96: //任选二直选复式 rxzxfs(b1, out winTimes, openCode, 2); break; case 97: //任选二直选单式 rxzxds(betNum, rxdswz, out winTimes, openCode, 2); break; case 98: //任选二直选和值 foreach (var item in pl_rx(rxdswz, 2)) { winTimes += b1[0].Contains(openCode[item[0]] + openCode[item[1]]) ? 1 : 0; } break; case 99: //任选二组选复式 foreach (var item in pl_rx(rxdswz, 2)) { winTimes += (openCode[item[0]] != openCode[item[1]]) && b1[0].Contains(openCode[item[0]]) && b1[0].Contains(openCode[item[1]]) ? 1 : 0; } break; case 100: //任选二组选单式 foreach (var item in pl_rx(rxdswz, 2)) { var rxzhCode = ""; winTimes += (pd_rxzh(rxzhCode, openCode[item[0]], openCode[item[1]]) == 1) && betNum.Contains(rxzhCode) ? 1 : 0; } break; case 101: //任选二组选和值 foreach (var item in pl_rx(rxdswz, 2)) { winTimes += (openCode[item[0]] != openCode[item[1]]) && b1[0].Contains(openCode[item[0]] + openCode[item[1]]) ? 1 : 0; } break; #endregion #region 任选三 case 102: //任选三直选复式 rxzxfs(b1, out winTimes, openCode, 3); break; case 103: //任选三直选单式 rxzxds(betNum, rxdswz, out winTimes, openCode, 3); break; case 104: //任选三直选和值 foreach (var item in pl_rx(rxdswz, 3)) { winTimes += b1[0].Contains(openCode[item[0]] + openCode[item[1]] + openCode[item[2]]) ? 1 : 0; } break; case 105: //任选三组三复式 foreach (var item in pl_rx(rxdswz, 3)) { winTimes += (pd_rxzh("", openCode[item[0]], openCode[item[1]], openCode[item[2]]) == 3) && b1[0].Contains(openCode[item[0]]) && b1[0].Contains(openCode[item[1]]) && b1[0].Contains(openCode[item[2]]) ? 1 : 0; } break; case 106: //任选三组三单式 foreach (var item in pl_rx(rxdswz, 3)) { var rxzhCode = ""; winTimes += (pd_rxzh(rxzhCode, openCode[item[0]], openCode[item[1]], openCode[item[2]]) == 3) && betNum.Contains(rxzhCode) ? 1 : 0; } break; case 107: //任选三组六复式 foreach (var item in pl_rx(rxdswz, 3)) { winTimes += (pd_rxzh("", openCode[item[0]], openCode[item[1]], openCode[item[2]]) == 6) && b1[0].Contains(openCode[item[0]]) && b1[0].Contains(openCode[item[1]]) && b1[0].Contains(openCode[item[2]]) ? 1 : 0; } break; case 108: //任选三组六单式 foreach (var item in pl_rx(rxdswz, 3)) { var rxzhCode = ""; winTimes += (pd_rxzh(rxzhCode, openCode[item[0]], openCode[item[1]], openCode[item[2]]) == 6) && betNum.Contains(rxzhCode) ? 1 : 0; } break; case 109: //任选三混合组选 foreach (var item in pl_rx(rxdswz, 3)) { var rxzhCode = ""; var lb1 = pd_rxzh(rxzhCode, openCode[item[0]], openCode[item[1]], openCode[item[2]]); if (lb1 > 0) { winTimes += betNum.Contains(rxzhCode) ? 1 : 0; BackMoney += LotteryInfo_SSC.LpList()[BetPlayTypeCode - 1].PrizeClass[lb1]; } } break; case 110: //任选三组选和值 foreach (var item in pl_rx(rxdswz, 3)) { var lb1 = pd_rxzh("", openCode[item[0]], openCode[item[1]], openCode[item[2]]); if (lb1 > 0) { winTimes += b1[0].Contains(openCode[item[0]] + openCode[item[1]] + openCode[item[2]]) ? 1 : 0; BackMoney += LotteryInfo_SSC.LpList()[BetPlayTypeCode - 1].PrizeClass[lb1]; } } break; #endregion #region 任选四 case 111: //任选四直选复式 rxzxfs(b1, out winTimes, openCode, 4); break; case 112: //任选四直选单式 rxzxds(betNum, rxdswz, out winTimes, openCode, 4); break; case 113: //任选四组选24 rszx(b1, rxdswz, openCode, zxlbList, 24, out winTimes); break; case 114: //任选四组选12 rszx(b1, rxdswz, openCode, zxlbList, 12, out winTimes); break; case 115: //任选四组选6 rszx(b1, rxdswz, openCode, zxlbList, 6, out winTimes); break; case 116: //任选四组选4 rszx(b1, rxdswz, openCode, zxlbList, 4, out winTimes); break; #endregion } //不具有奖级玩法类型的中奖金额 if (LotteryInfo_SSC.LpList()[BetPlayTypeCode - 1].PrizeClass == null) { BackMoney = winTimes * LotteryInfo_SSC.LpList()[BetPlayTypeCode - 1].PayBack; } return(winTimes); }
/// <summary> /// 开奖判断 /// </summary> /// <param name="LotteryPlayName"></param> /// <param name="betNo"></param> /// <param name="openNo"></param> /// <returns></returns> public static int isWin(int BetPlayTypeCode, string betNum, List <int> openCode, List <int> f3, List <int> f2, int dan, int zhongwei, out decimal BackMoney) { int winTimes = 0; BackMoney = 0; var b1 = new List <List <int> >();//投注号 if (BetPlayTypeCode == 13) { betNum = MyTool.ChangeBetNumTSH(betNum); } //if (BetPlayTypeCode == 12) //{ // var str = betNum.Split('|'); // foreach (var item in str) // { // if (item.Length > 1) // { // b1.Add(item.Split(' ').Select(w => Convert.ToInt32(w)).ToList()); // } // else // { // b1.Add(null); // } // } //} //else if (betNum.IndexOf('|') > -1)//() //{ // b1 = betNum.Split('|').Select( // n => n.Split(' ').Select(w => Convert.ToInt32(w)).ToList() // ).ToList(); //} //else //{ // b1.Add(betNum.Split(' ').Select(w => Convert.ToInt32(w)).ToList()); //} ////else ////{ //// foreach (var item in betNum.Split('|')) //// { //// if (string.IsNullOrEmpty(item)) //// { //// b1.Add(new List<int>()); //// } //// else //// { //// b1.Add(item.Split(' ').Select(w => Convert.ToInt32(w)).ToList()); //// } //// } ////} if (betNum.IndexOf('|') > -1) { foreach (var item in betNum.Split('|')) { if (item.Length > 0) { b1.Add(item.Split(' ').Select(w => Convert.ToInt32(w)).ToList()); } else { b1.Add(null); } } } else { b1.Add(betNum.Split(' ').Select(w => Convert.ToInt32(w)).ToList()); } switch (BetPlayTypeCode) { #region 前三 case 1: //"前三直选复式" winTimes = b1[0].Contains(openCode[0]) && b1[1].Contains(openCode[1]) && b1[2].Contains(openCode[2]) ? 1 : 0; break; case 2: //"前三直选单式": winTimes = b1.Exists(n => n[0] == openCode[0] && n[1] == openCode[1] && n[2] == openCode[2]) ? 1 : 0; //前3个号顺序数值一致 break; case 3: //"前三组选复式": winTimes = b1[0].Contains(openCode[0]) && b1[0].Contains(openCode[1]) && b1[0].Contains(openCode[2]) ? 1 : 0; break; case 4: //"前三组选单式": winTimes = b1.Exists(n => n.Contains(openCode[0]) && n.Contains(openCode[1]) && n.Contains(openCode[2])) ? 1 : 0; break; case 5: //"前三组选胆拖": winTimes = dtPlay(b1, f3, 3, 3); break; #endregion #region 前二 case 6: //"前二直选复式": winTimes = b1[0].Contains(openCode[0]) && b1[1].Contains(openCode[1]) ? 1 : 0; break; case 7: //"前二直选单式": winTimes = b1.Exists(n => n[0] == openCode[0] && n[1] == openCode[1]) ? 1 : 0; //前2个号顺序数值一致 break; case 8: //"前二组选复式": winTimes = b1[0].Contains(openCode[0]) && b1[0].Contains(openCode[1]) ? 1 : 0; break; case 9: //"前二组选单式": winTimes = b1.Exists(n => n.Contains(openCode[0]) && n.Contains(openCode[1]))? 1 : 0; break; case 10: //"前二组选胆拖": winTimes = dtPlay(b1, f2, 2, 2); break; #endregion #region 定位,定位胆,趣味型 case 11: //"不定位"://前三位 winTimes = (from a in b1[0] from b in f3 where a == b select a).Count(); break; case 12: //"定位胆"://前三位 for (int i = 0; i < b1.Count; i++) //投选几位判断几位,b1.Length取值(1-3) { if (b1[i] != null) { winTimes += b1[i].Contains(openCode[i]) ? 1 : 0; } } break; //"趣味定_单双": case 13: if (b1[0].Contains(dan)) { winTimes = 1; BackMoney = winTimes * LpList()[BetPlayTypeCode - 1].PrizeClass[dan]; } break; //"趣味猜_中位": case 14: if (b1[0].Contains(zhongwei)) { winTimes = 1; BackMoney = winTimes * LpList()[BetPlayTypeCode - 1].PrizeClass[zhongwei]; } break; #endregion #region 任选X中X case 15: //"任选一中一": case 16: //"任选二中二": case 17: //"任选三中三": case 18: //"任选四中四": winTimes = rxPlay(b1[0], openCode, BetPlayTypeCode - 14, BetPlayTypeCode - 14); break; case 19: //"任选五中五": case 20: //"任选六中五": case 21: //"任选七中五": case 22: //"任选八中五": winTimes = rxPlay(b1[0], openCode, 5, BetPlayTypeCode - 14); break; #endregion #region 单式任选X中X case 23: //"单式任选一中一": case 24: //"单式任选二中二": case 25: //"单式任选三中三": case 26: //"单式任选四中四": winTimes = rxPlay_ds(b1, openCode, BetPlayTypeCode - 22); break; case 27: //"单式任选五中五": case 28: //"单式任选六中五": case 29: //"单式任选七中五": case 30: //"单式任选八中五": winTimes = rxPlay_ds(b1, openCode, 5); break; #endregion #region 任选胆拖X中X case 31: //"胆拖任选二中二": case 32: //"胆拖任选三中三": case 33: //"胆拖任选四中四": winTimes = dtPlay(b1, openCode, BetPlayTypeCode - 29, BetPlayTypeCode - 29); break; case 34: //"胆拖任选五中五": case 35: //"胆拖任选六中五": case 36: //"胆拖任选七中五": case 37: //"胆拖任选八中五": winTimes = dtPlay(b1, openCode, 5, BetPlayTypeCode - 29); break; #endregion } //不具有奖金的玩法奖金计算 if (LpList()[BetPlayTypeCode - 1].PrizeClass == null) { BackMoney = winTimes * LpList()[BetPlayTypeCode - 1].PayBack; } return(winTimes); }
//TransactionScope tran; /// <summary> /// 初始化开奖信息 /// </summary> public void InitialTodayInfo(Lotterys Lottery) { using (e = new LotteryAPPEntities()) { var dt = EntitiesTool.GetDateTimeNow(e); var dtDel = dt.AddDays(-1); e.LotteryOffcialSchedule.RemoveRange(e.LotteryOffcialSchedule.Where(n => n.LotteryId == Lottery.Id && n.ScheduleOpenTime <= dtDel));//删除前一天的时刻表 var sp = Lottery.TimeStart.Value.ToString().Split('.'); var dtS = dt.Date.AddHours(Convert.ToInt32(sp[0])); if (sp.Length > 1) { dtS = dtS.AddMinutes(Convert.ToInt32(sp[1])); } var dtE = dtS.AddDays(3); var query = e.LotteryOffcialSchedule.Where(n => n.LotteryId == Lottery.Id && n.ScheduleOpenTime >= dtS && n.ScheduleOpenTime < dtE).ToList(); if (query.Count >= Lottery.ExceptOneDay * 2) { return;//至少保留两天预设期 } int j = -1; var sdt = dtS; var openList = new List <LotteryOffcialSchedule>(); if (Lottery.LotteryCode == "cqssc") { for (int i = 0; i < Lottery.ExceptOneDay * 3; i++) { if (i > 0 && i % Lottery.ExceptOneDay.Value == 0) { dtS = dtS.AddDays(1); sdt = dtS; j = -1; } j++; var ex = j + 24 > 120 ? j + 24 - 120 : j + 24; if (ex == 1) { dt = dt.AddDays(1); } var expect = dt.Date.ToString("yyyyMMdd") + MyTool.AddZeroStr(ex, Lottery.ExceptLength.Value); if (query.Exists(n => n.Expect == expect)) { continue; } if (ex >= 97 || ex <= 23) { sdt = sdt.AddMinutes(5); } else if (ex > 24) { sdt = sdt.AddMinutes((int)Lottery.BetweenMinute.Value); } var open = new LotteryOffcialSchedule { LotteryId = Lottery.Id, ScheduleOpenTime = sdt,//间隔多少时间一期 Expect = expect, }; openList.Add(open); } } else { for (int i = 0; i < Lottery.ExceptOneDay * 3; i++) { if (i > 0 && i % Lottery.ExceptOneDay.Value == 0) { dt = dt.AddDays(1); dtS = dtS.AddDays(1); j = -1; } j++; var expect = dt.Date.ToString("yyyyMMdd") + MyTool.AddZeroStr(j + 1, Lottery.ExceptLength.Value); if (query.Exists(n => n.Expect == expect)) { continue; } var open = new LotteryOffcialSchedule { LotteryId = Lottery.Id, ScheduleOpenTime = dtS.AddSeconds(Convert.ToDouble(j * Lottery.BetweenMinute.Value * 60)),//间隔多少时间一期 Expect = expect, }; if (Lottery.IsPrivate) { open.ScheduleOpenCode = CreateOpenCode(Lottery.LotteryType);//TODO } openList.Add(open); } } e.LotteryOffcialSchedule.AddRange(openList); e.SaveChanges(); } }