/// <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();
             }
         }
     }
 }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
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);
        }
Ejemplo n.º 6
0
        /// <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);
        }
Ejemplo n.º 7
0
 //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();
     }
 }