/// <summary>
        /// 任四组选
        /// </summary>
        public static void rszx(List <List <int> > b1, List <int> rxdswz, List <int> openCode, List <ZXLB> zxlbList, int zxlb, out int winTimes)
        {
            winTimes = 0;
            foreach (var item in pl_rx(rxdswz, 4))
            {
                var newCode = new List <int>();
                for (int i = 0; i < 4; i++)
                {
                    newCode.Add(openCode[item[i]]);
                }
                var lb = LotteryPlayArithmetic.pd(newCode, out zxlbList);
                if (lb == zxlb)
                {
                    switch (lb)
                    {
                    case 24:
                        winTimes += zxpd(zxlbList, 4, 0, 1, 0, b1[0], null) ? 1 : 0;
                        break;

                    case 12:
                        winTimes += zxpd(zxlbList, 2, 2, 2, 1, b1[0], b1[1]) ? 1 : 0;
                        break;

                    case 6:
                        winTimes += zxpd(zxlbList, 4, 0, 2, 0, b1[0], null) ? 1 : 0;
                        break;

                    case 4:
                        winTimes += zxpd(zxlbList, 3, 1, 3, 1, b1[0], b1[1]) ? 1 : 0;
                        break;
                    }
                }
            }
        }
 /// <summary>
 /// 后三组选包胆
 /// </summary>
 public static void hszxbd(int BetPlayTypeCode, List <List <int> > b1, List <ZXLB> zxlbList, out int winTimes, out decimal BackMoney, List <int> openCode)
 {
     winTimes = 0; BackMoney = 0; var lb = LotteryPlayArithmetic.pd(openCode, out zxlbList);
     if (lb > 0)
     {
         winTimes  = openCode.Contains(b1[0][0]) ? 1 : 0;
         BackMoney = winTimes * LotteryInfo_SSC.LpList()[BetPlayTypeCode - 1].PrizeClass[lb];
     }
 }
 /// <summary>
 /// 后三混合组选
 /// </summary>
 public static void hshhzx(int BetPlayTypeCode, string betNum, List <ZXLB> zxlbList, out int winTimes, out decimal BackMoney, List <int> openCode)
 {
     winTimes = 0; BackMoney = 0; var lb = LotteryPlayArithmetic.pd(openCode, out zxlbList);
     if (lb > 0)
     {
         var str = "";
         foreach (var item in openCode.OrderBy(n => n))
         {
             str += item;
         }
         winTimes  = betNum.Contains(str) ? 1 : 0;
         BackMoney = winTimes * LotteryInfo_SSC.LpList()[BetPlayTypeCode - 1].PrizeClass[lb];
     }
 }
        /// <summary>
        /// 判断当期奖金是否超额
        /// </summary>
        public static bool isOutBetMoney(List <BetInfo> BetList, List <int> openCode, bool isLimit, decimal betTotalMoney, decimal abTotalMoney, decimal Prizepool, out decimal backTotalMoney)
        {
            var         flag     = false;
            List <int>  h4       = openCode.ToList(); h4.RemoveAt(0);                 //四星
            List <int>  h3       = openCode.ToList(); h3.RemoveRange(0, 2);           //后三
            List <int>  z3       = openCode.ToList(); z3.RemoveAt(4); z3.RemoveAt(0); //中三
            List <int>  q3       = openCode.ToList(); q3.RemoveRange(3, 2);           //前三
            List <int>  h2       = openCode.ToList(); h2.RemoveRange(0, 3);           //后二
            List <int>  q2       = openCode.ToList(); q2.RemoveRange(2, 3);           //前二
            int         dan      = openCode.Count(n => n % 2 == 1);                   //单号个数
            int         da       = openCode.Count(n => n > 5);                        //大号个数
            List <ZXLB> zxlbList = null;
            int         bjh      = LotteryPlayArithmetic.pd(openCode, out zxlbList);  //百家号开奖号类别(120,60,30.....)

            backTotalMoney = 0;                                                       //总返奖金额
            foreach (var item in BetList)
            {
                List <int> rxdswz = null; decimal BackMoney = 0;
                if (!string.IsNullOrEmpty(item.ChoicePosition))
                {
                    rxdswz = item.ChoicePosition.Split(',').Select(n => Convert.ToInt32(n)).ToList();                                                     //存在选号位(任选类型)
                }
                item.WinUnit = isWin(item.BetPlayTypeCode, item.BetNum, rxdswz, openCode, h4, h3, z3, q3, h2, q2, dan, da, bjh, zxlbList, out BackMoney); //中奖次数
                if (item.WinUnit > 0)
                {
                    if (!item.IsGetBackPercent)//若不要返点
                    {
                        item.BackMoney = AgentCalculateTool.GetAgentBackMoney_SSC(BackMoney, item.GetBackPercent);
                    }
                    item.BackMoney  = item.BackMoney * (item.BetMoney / item.BetUnit / 2); //(item.BetMoney /item.BetUnit/2)=投注单位(元角分厘)*倍数=中奖金额倍数
                    backTotalMoney += item.BackMoney;
                    if (isLimit)                                                           //是否按限制开奖
                    {
                        flag = backTotalMoney > (betTotalMoney - abTotalMoney) + (Prizepool < new decimal(0.1) * betTotalMoney ? 0 : Prizepool - new decimal(0.1) * betTotalMoney);
                        if (flag)
                        {
                            break;
                        }
                    }
                }
            }
            return(flag);
        }
        /// <summary>
        /// 后三特殊号
        /// </summary>
        public static void hstsh(int BetPlayTypeCode, List <List <int> > b1, List <ZXLB> zxlbList, out int winTimes, out decimal BackMoney, List <int> openCode)
        {
            winTimes = 0; BackMoney = 0; var lb = LotteryPlayArithmetic.pd(openCode, out zxlbList);
            if (lb == 6 && b1[0].Contains(1))
            {
                var list = openCode.OrderBy(n => n).ToList();
                winTimes = 1;
                for (int i = 1; i < list.Count; i++)
                {
                    if (list[i] - list[0] != 1)
                    {
                        winTimes = 0;
                        break;
                    }
                }
            } //顺子1
            else if (lb == 3 && b1[0].Contains(2))//对子2
            {
                winTimes = 1;
            }
            else if (lb == 0 && b1[0].Contains(3))//豹子3
            {
                winTimes = 1;
            }
            switch (lb)
            {
            case 6:
                lb = 1;
                break;

            case 3:
                lb = 2;
                break;

            case 0:
                lb = 3;
                break;
            }
            BackMoney = winTimes * LotteryInfo_SSC.LpList()[BetPlayTypeCode - 1].PrizeClass[lb];
        }
        /// <summary>
        /// 开奖判断
        /// </summary>
        public static int isWin(int BetPlayTypeCode, string betNum, List <int> rxdswz, List <int> openCode, List <int> h2, List <int> q2, int dan, int da, out decimal BackMoney)
        {
            int         winTimes = 0;
            List <ZXLB> zxlbList = null;

            BackMoney = 0;
            var b1 = new List <List <int> >();//投注号

            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();
            }
            switch (BetPlayTypeCode)
            {
                #region 定位胆
            case 1:    //定位胆
                for (int i = 0; i < openCode.Count; i++)
                {
                    winTimes += b1[i].Contains(openCode[i]) ? 1 : 0;
                }
                break;

                #endregion
                #region  星
            case 2:    //三星直选复式
                winTimes = b1[0].Contains(openCode[0]) && b1[1].Contains(openCode[1]) && b1[2].Contains(openCode[2]) ? 1 : 0;
                break;

            case 3:    //三星直选单式
                winTimes = betNum.Contains(string.Format("{0}{1}{2}", openCode[0], openCode[1], openCode[2])) ? 1 : 0;
                break;

            case 4:    //三星直选和值
                winTimes = b1[0].Contains(openCode[0] + openCode[1] + openCode[2]) ? 1 : 0;
                break;

            case 5:    //三星组三复式
                winTimes = LotteryPlayArithmetic.zxfs(b1, zxlbList, 3, 2, openCode);
                break;

            case 6:    //三星组三单式
                winTimes = LotteryPlayArithmetic.zxds(betNum, zxlbList, 3, openCode);
                break;

            case 7:    //三星组六复式
                winTimes = LotteryPlayArithmetic.zxfs(b1, zxlbList, 6, 3, openCode);
                break;

            case 8:    //三星组六单式
                winTimes = LotteryPlayArithmetic.zxds(betNum, zxlbList, 6, openCode);
                break;

            case 9:    //三星混合组选
                LotteryPlayArithmetic.hshhzx(BetPlayTypeCode, betNum, zxlbList, out winTimes, out BackMoney, openCode);
                break;

            case 10:    //三星组选和值
                LotteryPlayArithmetic.hszxhz(BetPlayTypeCode, b1, zxlbList, out winTimes, out BackMoney, openCode);
                break;

                #endregion
                #region 二星
            case 11:    //前二直选复式
                winTimes = b1[0].Contains(openCode[0]) && b1[1].Contains(openCode[1]) ? 1 : 0;
                break;

            case 12:    //前二直选单式
                winTimes = betNum.Contains(string.Format("{0}{1}", openCode[0], openCode[1])) ? 1 : 0;
                break;

            case 13:    //后二直选复式
                winTimes = b1[0].Contains(openCode[0]) && b1[1].Contains(openCode[1]) ? 1 : 0;
                break;

            case 14:    //后二直选单式
                winTimes = betNum.Contains(string.Format("{0}{1}", openCode[0], openCode[1])) ? 1 : 0;
                break;

            case 15:    //前二组选复式
                winTimes = LotteryPlayArithmetic.zxfs(b1, zxlbList, 1, 2, q2);
                break;

            case 16:    //前二组选单式
                winTimes = LotteryPlayArithmetic.zxds(betNum, zxlbList, 1, q2);
                break;

            case 17:    //后二组选复式
                winTimes = LotteryPlayArithmetic.zxfs(b1, zxlbList, 1, 2, h2);
                break;

            case 18:    //后二组选单式
                winTimes = LotteryPlayArithmetic.zxds(betNum, zxlbList, 1, h2);
                break;

                #endregion
                #region  定位
            case 19:    //一码不定位
                winTimes = LotteryPlayArithmetic.bdw(b1, 1, openCode);
                break;

            case 20:    //二码不定位
                winTimes = LotteryPlayArithmetic.bdw(b1, 1, openCode);
                break;

                #endregion
                #region 大(6)小(5)单(1)双(0)
            case 21:    //前二大小单双
                winTimes = LotteryPlayArithmetic.pd_dxds(openCode[0], b1[0]) && LotteryPlayArithmetic.pd_dxds(openCode[1], b1[1]) ? 1 : 0;
                break;

            case 22:    //后二大小单双
                winTimes = LotteryPlayArithmetic.pd_dxds(openCode[1], b1[0]) && LotteryPlayArithmetic.pd_dxds(openCode[2], b1[1]) ? 1 : 0;
                break;
                #endregion
            }
            //不具有奖级玩法类型的中奖金额
            if (LpList()[BetPlayTypeCode - 1].PrizeClass == null)
            {
                BackMoney = winTimes * LpList()[BetPlayTypeCode - 1].PayBack;
            }
            return(winTimes);
        }
        /// <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);
        }