Exemplo n.º 1
0
        /// <summary>
        /// 修复未开奖数字彩订单无法加入redis
        /// </summary>
        /// <returns></returns>
        //public static async Task Repair_SZCAddToRedis()
        //{
        //    while (true)
        //    {
        //        try
        //        {
        //            //1.DLT|SSQ|FC3D|PL3|CQSSC|GD11X5|SD11X5|JX11X5
        //            var GameCodes = "DLT|SSQ|FC3D|PL3|CQSSC|GD11X5|SD11X5|JX11X5";
        //            var orderService = new Sports_Manager();
        //            var list = orderService.QueryAllRunningOrder();
        //            CSRedis.CSRedisClient db = null;
        //            foreach (var item in GameCodes.Split('|', StringSplitOptions.None))
        //            {
        //                if (item == "CTZQ")
        //                    db = RedisHelperEx.DB_Running_Order_CTZQ;
        //                if (new string[] { "SSQ", "DLT", "FC3D", "PL3", "OZB" }.Contains(item))
        //                    db = RedisHelperEx.DB_Running_Order_SCZ_DP;
        //                if (new string[] { "CQSSC", "JX11X5", "SD11X5", "GD11X5", "GDKLSF", "JSKS", "SDKLPK3" }.Contains(item))
        //                    db = RedisHelperEx.DB_Running_Order_SCZ_GP;
        //                //if (db == null)
        //                //    throw new Exception(string.Format("找不到{0}对应的库", item));
        //                var gameList = list.Where(p => p.GameCode == item).ToList();
        //                foreach (var issuseNumber in gameList.GroupBy(p => p.IssuseNumber))
        //                {
        //                    var issuseNumberList = list.Where(p => p.IssuseNumber == issuseNumber.Key).ToList();
        //                    Dictionary<string, List<RedisOrderInfo>> redisIList = new Dictionary<string, List<RedisOrderInfo>>();
        //                    foreach (var runningItem in issuseNumberList)
        //                    {
        //                        var fullKey = (item.ToUpper() == "CTZQ" || item.ToUpper() == "OZB") ? string.Format("{0}_{1}_{2}_{3}", runningItem.GameCode, runningItem.GameType, RedisKeys.Key_Running_Order_List, runningItem.IssuseNumber) :
        //                                            string.Format("{0}_{1}_{2}", runningItem.GameCode, RedisKeys.Key_Running_Order_List, runningItem.IssuseNumber);
        //                        //var keycount = db.LLen(fullKey);
        //                        List<RedisOrderInfo> redisFullList = new List<RedisOrderInfo>();
        //                        if (!redisIList.Keys.Contains(fullKey))
        //                        {
        //                            var redisList = db.LRang(fullKey, 0, -1);
        //                            if (redisList != null)
        //                            {
        //                                foreach (var redisListItem in redisList)
        //                                {
        //                                    var jsonItem = JsonHelper.Deserialize<RedisOrderInfo>(redisListItem);
        //                                    redisFullList.Add(jsonItem);
        //                                }
        //                                //redisFullList = redisList;
        //                                redisIList.Add(fullKey, redisFullList);
        //                            }
        //                        }
        //                        else
        //                        {
        //                            redisFullList = redisIList[fullKey];
        //                        }
        //                        //判断redis中是否存在
        //                        if (redisFullList.Count > 0)
        //                        {
        //                            var oldRedisItem = redisFullList.FirstOrDefault(p => p.SchemeId == runningItem.SchemeId);
        //                            //不存在,则需要加入redis
        //                            if (oldRedisItem == null)
        //                            {
        //                                BusinessHelper.AddToRunningOrder(runningItem.SchemeId);
        //                            }
        //                        }
        //                        else
        //                        {
        //                            BusinessHelper.AddToRunningOrder(runningItem.SchemeId);
        //                        }
        //                    }
        //                }
        //            }
        //            //2.竞彩与北单的加入redis
        //            #region 北单与竞彩
        //            var bdList = list.Where(p => p.GameCode == "BJDC").ToList();
        //            var beiDb = RedisHelperEx.DB_Running_Order_BJDC;
        //            foreach (var bdItem in bdList.GroupBy(p => p.IssuseNumber))
        //            {
        //                var fullKey = string.Format("{0}_{1}_{2}", "BJDC", RedisKeys.Key_Running_Order_List, bdItem.Key);
        //                var redisFullList = beiDb.LRang(fullKey, 0, -1);
        //                //判断北单是否存在于redis
        //                foreach (var bItem in bdList)
        //                {
        //                    if (redisFullList != null)
        //                    {
        //                        var hasOldModel = redisFullList.FirstOrDefault(p => p.EndsWith(bItem.SchemeId));
        //                        if (hasOldModel == null) BusinessHelper.AddToRunningOrder(bItem.SchemeId);
        //                    }
        //                    else
        //                    {
        //                        BusinessHelper.AddToRunningOrder(bItem.SchemeId);
        //                    }
        //                }
        //            }
        //            //JCZQ
        //            var Max_PrizeListCount = RedisOrderBusiness.Max_PrizeListCount;
        //            var jcDb = RedisHelperEx.DB_Running_Order_JC;
        //            var allJCZQKeys = new List<string>();
        //            for (int i = 0; i < Max_PrizeListCount; i++)
        //            {
        //                var fullKeyNew = string.Format("{0}_{1}_{2}", "JCZQ", RedisKeys.Key_Running_Order_List, i);
        //                allJCZQKeys.Add(fullKeyNew);
        //            }
        //            var allRedisJCZQList = new List<string>();
        //            foreach (var item in allJCZQKeys)
        //            {
        //                var jclist = jcDb.LRang(item, 0, -1);
        //                if (jclist != null)
        //                {
        //                    allRedisJCZQList.AddRange(jclist);
        //                }
        //            }

        //            var jczqList = list.Where(p => p.GameCode == "JCZQ").ToList();
        //            //判断JCZQ数据是否在redis存在
        //            foreach (var item in jczqList)
        //            {
        //                if (allRedisJCZQList.Count > 0)
        //                {
        //                    var oldmodel = allJCZQKeys.FirstOrDefault(p => p.EndsWith(item.SchemeId));
        //                    if (oldmodel == null) BusinessHelper.AddToRunningOrder(item.SchemeId);
        //                }
        //                else
        //                {
        //                    BusinessHelper.AddToRunningOrder(item.SchemeId);
        //                }
        //            }
        //            //JCLQ
        //            var allJCLQKeys = new List<string>();
        //            for (int i = 0; i < Max_PrizeListCount; i++)
        //            {
        //                var fullKeyNew = string.Format("{0}_{1}_{2}", "JCLQ", RedisKeys.Key_Running_Order_List, i);
        //                allJCLQKeys.Add(fullKeyNew);
        //            }
        //            var allRedisJCLQList = new List<string>();
        //            foreach (var item in allJCLQKeys)
        //            {
        //                var jclist = jcDb.LRang(item, 0, -1);
        //                if (jclist != null)
        //                {
        //                    allRedisJCLQList.AddRange(jclist);
        //                }
        //            }
        //            var jclqList = list.Where(p => p.GameCode == "JCLQ").ToList();
        //            //判断JCLQ数据是否在redis存在
        //            foreach (var item in jclqList)
        //            {
        //                if (allRedisJCLQList.Count > 0)
        //                {
        //                    var oldmodel = allJCLQKeys.FirstOrDefault(p => p.EndsWith(item.SchemeId));
        //                    if (oldmodel == null) BusinessHelper.AddToRunningOrder(item.SchemeId);
        //                }
        //                else
        //                {
        //                    BusinessHelper.AddToRunningOrder(item.SchemeId);
        //                }
        //            }
        //            #endregion
        //        }
        //        catch (Exception ex)
        //        {

        //        }
        //        await Task.Delay(10 * 60 * 1000);
        //    }
        //}



        public static async Task Repair_SZCAddToRedis_dp()
        {
            while (true)
            {
                try
                {
                    List <string> listRange    = new List <string>();
                    var           orderService = new Sports_Manager();
                    var           list         = orderService.QueryAllRunningOrder_dp();
                    if (list.Count > 0)
                    {
                        var max = RedisOrderBusiness.Max_PrizeListCount;
                        //var ctzqlist = from p in list
                        //               where p.GameCode == "CTZQ" || p.GameCode == "OZB" || p.GameCode == "SJB"
                        //               group p by new { p.GameCode, p.IssuseNumber, p.GameType } into g
                        //               select new
                        //               {
                        //                   g.Key
                        //               };
                        var ctzqlist = list.Where(p => p.GameCode == "CTZQ").GroupBy(p => new { p.GameCode, p.IssuseNumber, p.GameType }).Select(a => a.Key).ToList();
                        foreach (var item in ctzqlist)
                        {
                            var ctzq = GetRedisList_dp(item.GameCode, item.IssuseNumber, max, item.GameType);
                            if (ctzq != null)
                            {
                                listRange.AddRange(ctzq);
                            }
                        }
                        var ssqlist = list.Where(p => p.GameCode == "SSQ").GroupBy(p => new { p.GameCode, p.IssuseNumber }).Select(a => a.Key).ToList();
                        foreach (var item in ssqlist)
                        {
                            var ssq = GetRedisList_dp(item.GameCode, item.IssuseNumber, max);
                            if (ssq != null)
                            {
                                listRange.AddRange(ssq);
                            }
                        }
                        var dltlist = list.Where(p => p.GameCode == "DLT").GroupBy(p => new { p.GameCode, p.IssuseNumber }).Select(a => a.Key).ToList();
                        foreach (var item in dltlist)
                        {
                            var dlt = GetRedisList_dp(item.GameCode, item.IssuseNumber, max);
                            if (dlt != null)
                            {
                                listRange.AddRange(dlt);
                            }
                        }
                        var fc3dlist = list.Where(p => p.GameCode == "FC3D").GroupBy(p => new { p.GameCode, p.IssuseNumber }).Select(a => a.Key).ToList();
                        foreach (var item in fc3dlist)
                        {
                            var fc3d = GetRedisList_dp(item.GameCode, item.IssuseNumber, max);
                            if (fc3d != null)
                            {
                                listRange.AddRange(fc3d);
                            }
                        }
                        var PL3list = list.Where(p => p.GameCode == "PL3").GroupBy(p => new { p.GameCode, p.IssuseNumber }).Select(a => a.Key).ToList();
                        foreach (var item in fc3dlist)
                        {
                            var PL3 = GetRedisList_dp(item.GameCode, item.IssuseNumber, max);
                            if (PL3 != null)
                            {
                                listRange.AddRange(PL3);
                            }
                        }
                        foreach (var order in list)
                        {
                            if (listRange.Count(a => a.Contains(order.SchemeId)) == 0)
                            {
                                BusinessHelper.AddToRunningOrder(order);
                            }
                            //var flag = GetRedisOrKey(order, Max_PrizeListCount);
                            //if (flag)
                            //{
                            //    var count = orderInfoList.Count(a => a.SchemeId == order.SchemeId);
                            //    if (count == 0)
                            //        flag = true;
                            //    BusinessHelper.AddToRunningOrder(order);
                            //}
                        }
                    }
                }
                catch (Exception ex)
                {
                }
                await Task.Delay(1 * 60 * 60 * 1000);
            }
        }