public string Json_GetLotteryPlayInfo(int LotteryId) { var l = EntitiesTool.GetLotteryDic().Values.FirstOrDefault(n => n.Id == LotteryId); if (l == null) { return("无该彩种信息"); } var list = new List <LotteryPlay>(); switch (l.LotteryType) { case "ssc": list = LotteryInfo_SSC.LpList(); break; case "11x5": list = LotteryOpenTool_11x5.LpList(); break; case "dpc": list = LotteryOpenTool_3D.LpList(); break; } return(ObjectToJson(list)); }
private void FrmLogin_Load(object sender, EventArgs e) { //decimal b=0; //List<int> b2=new List<int>(); //b2.Add(1); //b2.Add(2); //b2.Add(3); //b2.Add(4); //b2.Add(5); //LotteryOpenTool_SSC.isWin(3,"55211 54484 12345",null,b2,b2,b2,b2,b2,b2,b2,0,0,120,out b); var a = LotteryOpenTool_3D.LpList(); var b = LotteryInfo_SSC.LpList(); }
public string SendBetInfo_ZH(string Guid, int LotteryId, bool isWinCancel, List <WS_ZHInfo> ZHInfo) { if (!isLogin(Guid)) { return(null); } var l = EntitiesTool.GetLotteryDic().Values.FirstOrDefault(n => n.Id == LotteryId); if (l == null) { return("无该彩种信息"); } try { var t = new List <WS_BetInfo>(); var accId = GetLoginId(Guid); var acc = AccountDAL.GetAccount(accId); var list = ZHInfo; #region 验证下注信息 var minDec = new decimal(0.2); if (list.Exists(n => n.BetMoney < minDec)) { return("每种玩法的下注金额不能少于" + minDec + "元"); } if (list.Sum(n => n.BetMoney) > acc.AccountBalance) { return("余额不足"); } var returnStr = LotteryOpenInfoDAL.IsExistsExpect(LotteryId, ZHInfo[0].Except, EntitiesTool.GetLotteryDic().Values.FirstOrDefault(n => n.Id == LotteryId).IsPrivate); if (returnStr != "") { return(returnStr); } var wBetList = new List <BetInfo>(); var addNumNo = "ZH" + DateTime.Now.Ticks + random.Next(1000, 10000); foreach (var item in list) { var betU = Tools.Calculate(l.LotteryType, item.BetPlayTypeCode, item.BetNum, item.ChoicePosition, item.BetUnit); if (betU != item.BetUnit) { return("下单注数验证失败"); } if (betU <= 0) { return("下单注数应大于0"); } decimal mm = 0; switch (item.BetMoneyMode) { case "元": mm = 2; break; case "角": mm = new decimal(0.2); break; case "分": mm = new decimal(0.02); break; case "厘": mm = new decimal(0.002); break; } if (betU * mm * item.BetTimes != item.BetMoney) { return("下单金额有误"); } var betInfo = new BetInfo { AccountId = acc.Id, ResultType = (int)Enum_ResultType.Wait, BetNum = item.BetNum, BetPlayTypeCode = item.BetPlayTypeCode, BetTimes = item.BetTimes, BetUnit = item.BetUnit, BetMoney = item.BetMoney, ChoicePosition = item.ChoicePosition, IsGetBackPercent = item.IsGetBackPercent, LotteryId = LotteryId, LotteryExcept = item.Except, IsWinCancel = isWinCancel,//中奖后停止追号 //追号单号 AddNumNo = addNumNo, }; switch (l.LotteryType) { case "ssc": betInfo.GetBackPercent = acc.AgentPercentSSC; betInfo.MaxBackMoney = (betInfo.IsGetBackPercent ? LotteryInfo_SSC.LpList()[item.BetPlayTypeCode - 1].PayBack : AgentCalculateTool.GetAgentBackMoney_SSC(LotteryInfo_SSC.LpList()[item.BetPlayTypeCode - 1].PayBack, betInfo.GetBackPercent)) * (betInfo.BetMoney / betInfo.BetUnit / 2); break; case "11x5": betInfo.GetBackPercent = acc.AgentPercent11X5; betInfo.MaxBackMoney = (betInfo.IsGetBackPercent ? LotteryOpenTool_11x5.LpList()[item.BetPlayTypeCode - 1].PayBack : AgentCalculateTool.GetAgentBackMoney_SSC(LotteryOpenTool_11x5.LpList()[item.BetPlayTypeCode - 1].PayBack, betInfo.GetBackPercent)) * (betInfo.BetMoney / betInfo.BetUnit / 2); break; case "dpc": betInfo.GetBackPercent = acc.AgentPercentDPC; betInfo.MaxBackMoney = (betInfo.IsGetBackPercent ? LotteryOpenTool_3D.LpList()[item.BetPlayTypeCode - 1].PayBack : AgentCalculateTool.GetAgentBackMoney_SSC(LotteryOpenTool_3D.LpList()[item.BetPlayTypeCode - 1].PayBack, betInfo.GetBackPercent)) * (betInfo.BetMoney / betInfo.BetUnit / 2); break; } wBetList.Add(betInfo); } #endregion if (wBetList.Count == 0) { return("无有效下注信息"); } var dt = EntitiesTool.GetDateTimeNow(new LotteryAPPEntities()); wBetList.ForEach(n => n.CreateTime = dt); var account = AccountDAL.BalanceChange(acc.Id, wBetList); return(account.AccountBalance + "(元)"); } catch (Exception ex) { return("错误的下注信息" + ex.Message); } }
public string SendBetInfo(string Guid, int LotteryId, string Except, List <WS_BetInfo> BetInfo) { if (!isLogin(Guid)) { return(null); } var l = EntitiesTool.GetLotteryDic().Values.FirstOrDefault(n => n.Id == LotteryId); if (l == null) { return("无该彩种信息"); } //if (l.LotteryType == "ssc") //{ // t.Add(new WS_BetInfo // { // BetMoney = 2, // BetMoneyMode = "元", // BetNum = "0|0|0|0|0", // BetPlayTypeCode = 2, // BetTimes = 1, // BetUnit = 1, // ChoicePosition = "", // IsGetBackPercent = true, // }); // t.Add(new WS_BetInfo // { // BetMoney = 6, // BetMoneyMode = "角", // BetNum = "0 1 2|0 1 2", // BetPlayTypeCode = 116, // BetTimes = 1, // BetUnit = 30, // ChoicePosition = "0,1,2,3,4", // IsGetBackPercent = true, // }); //} //if (l.LotteryType == "11x5") //{ // t.Add(new WS_BetInfo // { // BetMoney = 2, // BetMoneyMode = "元", // BetNum = "04|05|06", // BetPlayTypeCode = 1, // BetTimes = 1, // BetUnit = 1, // ChoicePosition = "", // IsGetBackPercent = false, // }); //} //BetInfo = ObjectToJson(t);//示例[{"BetNum":"0","BetPlayTypeCode":1,"BetUnit":1,"BetTimes":1,"BetMoneyMode":"元","BetMoney":0.0,"ChoicePosition":"","IsGetBackPercent":true}] try { var t = new List <WS_BetInfo>(); var accId = GetLoginId(Guid); var acc = AccountDAL.GetAccount(accId); //var acc = AccountDAL.GetAccount(2);//jix008 var list = BetInfo; //JsonToObject(BetInfo, new List<WS_BetInfo>()) as List<WS_BetInfo>; #region 验证下注信息 var returnStr = LotteryOpenInfoDAL.IsExistsExpect(LotteryId, Except, EntitiesTool.GetLotteryDic().Values.FirstOrDefault(n => n.Id == LotteryId).IsPrivate); if (returnStr != "") { return(returnStr); } var minDec = new decimal(0.2); if (list.Exists(n => n.BetMoney < minDec)) { return("每种玩法的下注金额不能少于" + minDec + "元"); } if (list.Sum(n => n.BetMoney) > acc.AccountBalance) { return("余额不足"); } var wBetList = new List <BetInfo>(); foreach (var item in list) { var betU = Tools.Calculate(l.LotteryType, item.BetPlayTypeCode, item.BetNum, item.ChoicePosition, item.BetUnit); if (betU != item.BetUnit) { return("下单注数验证失败"); } if (betU <= 0) { return("下单注数应大于0"); } decimal mm = 0; switch (item.BetMoneyMode) { case "元": mm = 2; break; case "角": mm = new decimal(0.2); break; case "分": mm = new decimal(0.02); break; case "厘": mm = new decimal(0.002); break; } if (betU * mm * item.BetTimes != item.BetMoney) { return("下单金额有误"); } var betInfo = new BetInfo { AccountId = acc.Id, ResultType = (int)Enum_ResultType.Wait, BetNum = item.BetNum, BetPlayTypeCode = item.BetPlayTypeCode, BetTimes = item.BetTimes, BetUnit = item.BetUnit, BetMoney = item.BetMoney, ChoicePosition = item.ChoicePosition, IsGetBackPercent = item.IsGetBackPercent, LotteryId = LotteryId, LotteryExcept = Except, }; switch (l.LotteryType) { case "ssc": betInfo.GetBackPercent = acc.AgentPercentSSC; betInfo.MaxBackMoney = (betInfo.IsGetBackPercent ? LotteryInfo_SSC.LpList()[item.BetPlayTypeCode - 1].PayBack : AgentCalculateTool.GetAgentBackMoney_SSC(LotteryInfo_SSC.LpList()[item.BetPlayTypeCode - 1].PayBack, betInfo.GetBackPercent)) * (betInfo.BetMoney / betInfo.BetUnit / 2); break; case "11x5": betInfo.GetBackPercent = acc.AgentPercent11X5; betInfo.MaxBackMoney = (betInfo.IsGetBackPercent ? LotteryOpenTool_11x5.LpList()[item.BetPlayTypeCode - 1].PayBack : AgentCalculateTool.GetAgentBackMoney_SSC(LotteryOpenTool_11x5.LpList()[item.BetPlayTypeCode - 1].PayBack, betInfo.GetBackPercent)) * (betInfo.BetMoney / betInfo.BetUnit / 2); break; case "dpc": betInfo.GetBackPercent = acc.AgentPercentDPC; betInfo.MaxBackMoney = (betInfo.IsGetBackPercent ? LotteryOpenTool_3D.LpList()[item.BetPlayTypeCode - 1].PayBack : AgentCalculateTool.GetAgentBackMoney_SSC(LotteryOpenTool_3D.LpList()[item.BetPlayTypeCode - 1].PayBack, betInfo.GetBackPercent)) * (betInfo.BetMoney / betInfo.BetUnit / 2); break; } wBetList.Add(betInfo); } #endregion if (wBetList.Count == 0) { return("无有效下注信息"); } var dt = EntitiesTool.GetDateTimeNow(new LotteryAPPEntities()); wBetList.ForEach(n => n.CreateTime = dt); var account = AccountDAL.BalanceChange(acc.Id, wBetList); return(account.AccountBalance + "(元)"); } catch (Exception ex) { return("错误的下注信息" + ex.Message); } }
/// <summary> /// 计算注数和金额 /// </summary> public static int Calculate(string lotteryType, int playId, string betNum, string wz, int betUnit) { var tList = new List <List <string> >();//投注号 var wzList = new List <int>(); var bet = 0; switch (lotteryType) { #region 时时彩 case "ssc": if (LotteryInfo_SSC.LpList().FirstOrDefault(i => i.BetPlayTypeCode == playId).LotteryPlayName.Contains("单式")) { //betUnit = betNum.Trim().Split('|').Count(); return(betUnit); } if (betNum.IndexOf('|') > -1) { tList = betNum.Split('|').Select( i => i.Split(' ').ToList() ).ToList(); } else { tList.Add(betNum.Split(' ').ToList()); } if (!string.IsNullOrEmpty(wz)) { wzList = wz.Split(',').Select(w => Convert.ToInt32(w)).ToList(); } var n = tList.Count > 0 ? tList[0].Count : 0; var m = tList.Count > 1 ? tList[1].Count : 0; var x = tList.Count > 1 ? tList[1].Count(w => tList[0].Contains(w)) : 0; var a = tList[0].Count(w => w.Length > 0); var b = tList.Count > 1 ? tList[1].Count(w => w.Length > 0) : 0; var c = tList.Count > 2 ? tList[2].Count(w => w.Length > 0) : 0; var d = tList.Count > 3 ? tList[3].Count(w => w.Length > 0) : 0; var e = tList.Count > 4 ? tList[4].Count(w => w.Length > 0) : 0; switch (playId) { #region 定位胆 case 1: //定位胆 bet = BetCalculateTool.CalculateN(tList); break; #endregion #region 五星 case 2: //五星直选复式 bet = a * b * c * d * e; break; case 4: //五星直选组合 bet = a * b * c * d * e * 5; break; case 5: //五星组选120(全不同号) bet = MyTool.CalculateCombination(5, tList.Sum(w => w.Count)); break; case 6: //五星组选60(一对) bet = (n - x) * MyTool.CalculateCombination(3, m) + x * MyTool.CalculateCombination(3, m - 1); break; case 7: //五星组选30(两对) bet = (m - x) * MyTool.CalculateCombination(2, n) + x * MyTool.CalculateCombination(2, n - 1); break; case 8: //五星组选20(三条) bet = (n - x) * MyTool.CalculateCombination(2, m) + x * MyTool.CalculateCombination(2, m - 1); break; case 9: //五星组选10(三带二) //bet = (n-x)*c(1,m)+x*C(1,m-1) //break; case 10: //五星组选5(四条) bet = (n - x) * MyTool.CalculateCombination(1, m) + x * MyTool.CalculateCombination(1, m - 1); break; case 11: //五星一帆风顺 case 12: //五星好事成双 case 13: //五星三星报喜 case 14: //五星四季发财 bet = BetCalculateTool.CalculateN(tList); break; #endregion #region 四星 case 15: //四星直选复式 bet = a * b * c * d; break; case 17: //四星直选组合 bet = a * b * c * d * 4; break; case 18: //四星组选24(全不同号) bet = MyTool.CalculateCombination(4, tList.Sum(w => w.Count)); break; case 19: //四星组选12(一对) bet = (n - x) * MyTool.CalculateCombination(2, m) + x * MyTool.CalculateCombination(2, m - 1); break; case 20: //四星组选6(两对) bet = MyTool.CalculateCombination(2, tList.Sum(w => w.Count)); break; case 21: //四星组选4(三条) bet = (n - x) * MyTool.CalculateCombination(1, m) + x * MyTool.CalculateCombination(1, m - 1); break; #endregion #region 百家 case 22: //百家重复号 case 23: //百家顺子号 case 24: //百家单双号 case 25: //百家大小号 bet = BetCalculateTool.CalculateN(tList); break; #endregion #region 后三 case 26: //后三直选复式 bet = a * b * c; break; case 28: //后三直选组合 bet = a * b * c * 3; break; case 29: //后三直选和值 foreach (var item in tList[0]) { bet += bet_zxhz(3, Convert.ToInt32(item)); } break; case 30: //后三直选跨度 foreach (var item in tList[0]) { bet += bet_zxkd(3, Convert.ToInt32(item)); } break; case 31: //后三组三复式 bet = a * (a - 1); break; case 33: //后三组六复式 bet = MyTool.CalculateCombination(3, a); break; case 36: //后三组选和值 foreach (var item in tList[0]) { bet += bet_zuxhz(3, Convert.ToInt32(item)); } break; case 37: //后三组选包胆 bet = 54; break; case 38: //后三和值尾数 case 39: //后三特殊号 bet = BetCalculateTool.CalculateN(tList); break; #endregion #region 中三 case 40: //中三直选复式 bet = a * b * c; break; case 42: //中三直选组合 bet = a * b * c * 3; break; case 43: //中三直选和值 foreach (var item in tList[0]) { bet += bet_zxhz(3, Convert.ToInt32(item)); } break; case 44: //中三直选跨度 foreach (var item in tList[0]) { bet += bet_zxkd(3, Convert.ToInt32(item)); } break; case 45: //中三组三复式 bet = a * (a - 1); break; case 47: //中三组六复式 bet = MyTool.CalculateCombination(3, a); break; case 50: //中三组选和值 foreach (var item in tList[0]) { bet += bet_zuxhz(3, Convert.ToInt32(item)); } break; case 51: //中三组选包胆 bet = 54; break; case 52: //中三和值尾数 case 53: //中三特殊号 bet = BetCalculateTool.CalculateN(tList); break; #endregion #region 前三 case 54: //前三直选复式 bet = a * b * c; break; case 56: //前三直选组合 bet = a * b * c * 3; break; case 57: //前三直选和值 foreach (var item in tList[0]) { bet += bet_zxhz(3, Convert.ToInt32(item)); } break; case 58: //前三直选跨度 foreach (var item in tList[0]) { bet += bet_zxkd(3, Convert.ToInt32(item)); } break; case 59: //前三组三复式 bet = a * (a - 1); break; case 61: //前三组六复式 bet = MyTool.CalculateCombination(3, a); break; case 64: //前三组选和值 foreach (var item in tList[0]) { bet += bet_zuxhz(3, Convert.ToInt32(item)); } break; case 65: //前三组选包胆 bet = 54; break; case 66: //前三和值尾数 case 67: //前三特殊号 bet = BetCalculateTool.CalculateN(tList); break; #endregion #region 后二 case 68: //后二直选复式 bet = a * b; break; case 69: //后二直选单式 break; case 70: //后二直选和值 foreach (var item in tList[0]) { bet += bet_zxhz(2, Convert.ToInt32(item)); } break; case 71: //后二直选跨度 foreach (var item in tList[0]) { bet += bet_zxkd(2, Convert.ToInt32(item)); } break; case 72: //后二组选复式 bet = MyTool.CalculateCombination(2, a); break; case 73: //后二组选单式 break; case 74: //后二组选和值 foreach (var item in tList[0]) { bet += bet_zuxhz(2, Convert.ToInt32(item)); } break; case 75: //后二组选包胆 bet = 9; break; #endregion #region 前二 case 76: //前二直选复式 bet = a * b; break; case 77: //前二直选单式 break; case 78: //前二直选和值 foreach (var item in tList[0]) { bet += bet_zxhz(2, Convert.ToInt32(item)); } break; case 79: //前二直选跨度 foreach (var item in tList[0]) { bet += bet_zxkd(2, Convert.ToInt32(item)); } break; case 80: //前二组选复式 bet = MyTool.CalculateCombination(2, a); break; case 81: //前二组选单式 break; case 82: //前二组选和值 foreach (var item in tList[0]) { bet += bet_zuxhz(2, Convert.ToInt32(item)); } break; case 83: //前二组选包胆 bet = 9; break; #endregion #region 定位 case 84: //后三一码 case 85: //前三一码 bet = BetCalculateTool.CalculateN(tList); break; case 86: //后三二码 case 87: //前三二码 bet = MyTool.CalculateCombination(2, a); break; case 88: //四星一码 bet = BetCalculateTool.CalculateN(tList); break; case 89: //四星二码 case 90: //五星二码 bet = MyTool.CalculateCombination(2, a); break; case 91: //五星三码 bet = MyTool.CalculateCombination(3, a); break; #endregion #region 大(6)小(5)单(1)双(0) case 92: //前二大小单双 case 93: //后二大小单双 bet = a * b; break; case 94: //前三大小单双 case 95: //后三大小单双 bet = a * b * c; break; #endregion #region 任选二 case 96: //任选二直选复式 bet = a * (b + c + d + e) + b * (c + d + e) + c * (d + e) + d * e; break; case 97: //任选二直选单式 break; case 98: //任选二直选和值 foreach (var item in tList[0]) { bet += bet_zxhz(2, Convert.ToInt32(item)); } bet *= MyTool.CalculateCombination(2, wzList.Count); //乘以c(2,勾选项数) break; case 99: //任选二组选复式 bet = MyTool.CalculateCombination(2, tList[0].Count) * MyTool.CalculateCombination(2, wzList.Count); break; case 100: //任选二组选单式 break; case 101: //任选二组选和值 foreach (var item in tList[0]) { bet += bet_zuxhz(2, Convert.ToInt32(item)); } bet *= MyTool.CalculateCombination(2, wzList.Count); break; #endregion #region 任选三 case 102: //任选三直选复式 bet = a * b * (c + d + e) + a * c * (d + e) + a * d * e + b * c * (d + e) + b * d * e + c * d * e; break; case 103: //任选三直选单式 break; case 104: //任选三直选和值 foreach (var item in tList[0]) { bet += bet_zxhz(3, Convert.ToInt32(item)); } bet *= MyTool.CalculateCombination(3, wzList.Count); break; case 105: //任选三组三复式 bet = a * (a - 1) * MyTool.CalculateCombination(3, wzList.Count); break; case 106: //任选三组三单式 break; case 107: //任选三组六复式 bet = MyTool.CalculateCombination(3, tList[0].Count) * MyTool.CalculateCombination(3, wzList.Count); break; case 108: //任选三组六单式 break; case 109: //任选三混合组选 break; case 110: //任选三组选和值 foreach (var item in tList[0]) { bet += bet_zuxhz(3, Convert.ToInt32(item)); } bet *= MyTool.CalculateCombination(3, wzList.Count); break; #endregion #region 任选四 case 111: //任选四直选复式 bet = a * b * c * (d + e) + a * d * e * (b + c) + b * c * d * e; break; case 112: //任选四直选单式 break; case 113: //任选四组选24 bet = MyTool.CalculateCombination(4, tList.Sum(w => w.Count)); bet *= MyTool.CalculateCombination(4, wzList.Count); break; case 114: //任选四组选12 bet = (n - x) * MyTool.CalculateCombination(2, m) + x * MyTool.CalculateCombination(2, m - 1); bet *= MyTool.CalculateCombination(4, wzList.Count); break; case 115: //任选四组选6 bet = MyTool.CalculateCombination(2, tList.Sum(w => w.Count)); bet *= MyTool.CalculateCombination(4, wzList.Count); break; case 116: //任选四组选4 bet = (n - x) * MyTool.CalculateCombination(1, m) + x * MyTool.CalculateCombination(1, m - 1); bet *= MyTool.CalculateCombination(4, wzList.Count); break; #endregion } break; #endregion #region 11X5 case "11x5": if (LotteryOpenTool_11x5.LpList().FirstOrDefault(i => i.BetPlayTypeCode == playId).LotteryPlayName.Contains("单式")) { betUnit = betNum.Trim().Split('|').Count(); return(betUnit); } if (betNum.IndexOf('|') > -1) { tList = betNum.Split('|').Select( i => i.Split(' ').ToList() ).ToList(); } else { tList.Add(betNum.Split(' ').ToList()); } switch (LotteryOpenTool_11x5.LpList().FirstOrDefault(q => q.BetPlayTypeCode == playId).LotteryPlayName) { case "前三直选复式": case "前二直选复式": bet = BetCalculateTool.CalculateNoRepeatBet(tList); break; case "前三直选单式": break; case "前三组选复式": bet = MyTool.CalculateCombination(3, tList[0].Count); break; case "前三组选单式": break; case "前三组选胆拖": bet = getDT(3, tList);; break; case "前二组选复式": bet = MyTool.CalculateCombination(2, tList[0].Count); break; case "前二组选胆拖": bet = getDT(2, tList);; break; case "不定位": case "定位胆": case "趣味定_单双": case "趣味猜_中位": bet = BetCalculateTool.CalculateN(tList); break; case "胆拖任选二中二": bet = getDT(2, tList); break; case "胆拖任选三中三": bet = getDT(3, tList); break; case "胆拖任选四中四": bet = getDT(4, tList); break; case "胆拖任选五中五": bet = getDT(5, tList); break; case "胆拖任选六中五": bet = getDT(6, tList); break; case "胆拖任选七中五": bet = getDT(7, tList); break; case "胆拖任选八中五": bet = getDT(8, tList); break; case "任选一中一": bet = MyTool.CalculateCombination(1, tList[0].Count); break; case "任选二中二": bet = MyTool.CalculateCombination(2, tList[0].Count); break; case "任选三中三": bet = MyTool.CalculateCombination(3, tList[0].Count); break; case "任选四中四": bet = MyTool.CalculateCombination(4, tList[0].Count); break; case "任选五中五": bet = MyTool.CalculateCombination(5, tList[0].Count); break; case "任选六中五": bet = MyTool.CalculateCombination(6, tList[0].Count); break; case "任选七中五": bet = MyTool.CalculateCombination(7, tList[0].Count); break; case "任选八中五": bet = MyTool.CalculateCombination(8, tList[0].Count); break; } break; #endregion case "dpc": break; } return(bet); }