Пример #1
0
        public static List <开奖实体> 时时彩500W网站获取(DateTime?查询时间 = null)
        {
            if (查询时间 == null)
            {
                查询时间 = DateTime.Now;
            }
            var         requestUri = String.Format("http://kaijiang.500.com/static/public/ssc/xml/qihaoxml/{0}.xml", 查询时间.Value.ToString("yyyyMMdd"));
            XmlDocument XML文档解析    = new XmlDocument();

            XML文档解析.Load(requestUri);
            var 所有开奖节点 = XML文档解析.SelectNodes("xml/row");

            var 返回数据 = new List <开奖实体>();

            foreach (var 节点明细 in 所有开奖节点)
            {
                var 节点元素 = (XmlElement)节点明细;
                var 开奖实例 = new 开奖实体
                {
                    期号代码 = Convert.ToInt64(节点元素.GetAttribute("expect")),
                    开奖号  = 节点元素.GetAttribute("opencode"),
                };
                返回数据.Add(开奖实例);
            }
            return(返回数据);
        }
Пример #2
0
        public void 修改数据库开奖信息(开奖实体 开奖信息, DateTime?日期 = null, Boolean Notice = true)
        {
            if (!日期.HasValue)
            {
                日期 = DateTime.Today;
            }
            var 开奖数组   = 开奖信息.开奖号.Split(',');
            var 开奖用户信息 = new List <CountUserDTO>();
            var 当前彩种ID = 0;

            using (var 数据库实体 = new LotteryDbContext())
            {
                数据库实体.Transaction(() =>
                {
                    var 彩票类型      = 数据库实体.LotteryTypes.Where(x => x.LotteryTypeGUID.Equals(时时彩客户端标识)).FirstOrDefault();
                    var 玩法        = 数据库实体.PlayTypes.Where(x => x.LotteryTypeID.Equals(彩票类型.LotteryTypeID));
                    var 数据库当前期号实体 = 数据库实体.LotteryInfos.Where(x => x.LotteryInfoCode.Equals(开奖信息.期号代码)).FirstOrDefault();

                    当前彩种ID = 彩票类型.LotteryTypeID;

                    if (数据库当前期号实体 == null)
                    {
                        数据库当前期号实体 = new LotteryInfos
                        {
                            LotteryInfoCode     = 开奖信息.期号代码,
                            LotteryInfoDate     = 日期.Value,
                            LotteryInfoOpenCode = 开奖信息.开奖号,
                            LotteryInfoOpenTime = null,
                            LotteryTypeID       = 彩票类型.LotteryTypeID
                        };
                        数据库实体.LotteryInfos.AddObject(数据库当前期号实体);
                        数据库实体.SaveChanges();
                    }
                    foreach (var 玩法详细 in 玩法)
                    {
                        var 当前玩法开奖号 = new StringBuilder();

                        for (int i = 玩法详细.PlayTypeStartIdx; i <= 玩法详细.PlayTypeEndIdx; i++)
                        {
                            当前玩法开奖号.Append(开奖数组[i]);
                        }
                        当前玩法开奖号.Append("|");
                        var 开奖字符串   = 当前玩法开奖号.ToString();
                        var 猜中的用户ID = 数据库实体.UserLotterys.Where(x =>
                                                               x.UserLotteryExpect.Equals(开奖信息.期号代码) &&
                                                               x.LotteryTypeID.Equals(彩票类型.LotteryTypeID) &&
                                                               x.Content.Contains(开奖字符串) &&
                                                               x.PlayTypeID.Equals(玩法详细.PlayTypeID) &&
                                                               x.IsWin.Equals(0)).Select(x => x.UserId).ToList();

                        if (猜中的用户ID.Count > 0)
                        {
                            数据库实体.UserLotterys.Where(x =>
                                                     x.UserLotteryExpect.Equals(开奖信息.期号代码) &&
                                                     x.LotteryTypeID.Equals(彩票类型.LotteryTypeID) &&
                                                     猜中的用户ID.Contains(x.UserId) &&
                                                     x.PlayTypeID.Equals(玩法详细.PlayTypeID) &&
                                                     x.IsWin.Equals(0)).Update(x => new UserLotterys
                            {
                                IsWin = 1
                            });
                            数据库实体.SaveChanges();
                            foreach (var 用户ID in 猜中的用户ID)
                            {
                                开奖用户信息.Add(new CountUserDTO
                                {
                                    playTypeId   = 玩法详细.PlayTypeID,
                                    playTypeName = 玩法详细.PlayTypeName,
                                    IsWin        = 1,
                                    userId       = 用户ID,
                                });
                                var 用户统计信息 = 数据库实体.UserCounts.Where(x =>
                                                                    x.userId.Equals(用户ID) &&
                                                                    x.LotteryTypeId.Equals(彩票类型.LotteryTypeID) &&
                                                                    x.PlayTypeId.Equals(玩法详细.PlayTypeID)).FirstOrDefault();
                                用户统计信息.WinNum      += 1;
                                用户统计信息.MathHistory += "1";
                            }
                            数据库实体.SaveChanges();
                        }
                        //.UserRules.Where(x => 猜中的用户ID.Contains(x.UserID)).Update(x => new UserRules
                        //{
                        //    UserWinNum = x.UserWinNum + 1
                        //});


                        var 未猜中的用户ID = 数据库实体.UserLotterys.Where(x =>
                                                                x.UserLotteryExpect.Equals(开奖信息.期号代码) &&
                                                                x.IsWin.Equals(0) &&
                                                                x.LotteryTypeID.Equals(彩票类型.LotteryTypeID) &&
                                                                !x.Content.Contains(开奖字符串) &&
                                                                x.PlayTypeID.Equals(玩法详细.PlayTypeID)).Select(x => x.UserId).ToList();

                        if (未猜中的用户ID.Count > 0)
                        {
                            数据库实体.UserLotterys.Where(x =>
                                                     x.UserLotteryExpect.Equals(开奖信息.期号代码) &&
                                                     未猜中的用户ID.Contains(x.UserId) &&
                                                     x.LotteryTypeID.Equals(彩票类型.LotteryTypeID) &&
                                                     x.PlayTypeID.Equals(玩法详细.PlayTypeID) &&
                                                     x.IsWin.Equals(0)).Update(x => new UserLotterys
                            {
                                IsWin = 2
                            });
                            数据库实体.SaveChanges();
                            foreach (var 用户ID in 未猜中的用户ID)
                            {
                                开奖用户信息.Add(new CountUserDTO
                                {
                                    playTypeId   = 玩法详细.PlayTypeID,
                                    playTypeName = 玩法详细.PlayTypeName,
                                    IsWin        = 2,
                                    userId       = 用户ID,
                                });
                                var 用户统计信息 = 数据库实体.UserCounts.Where(x =>
                                                                    x.userId.Equals(用户ID) &&
                                                                    x.LotteryTypeId.Equals(彩票类型.LotteryTypeID) &&
                                                                    x.PlayTypeId.Equals(玩法详细.PlayTypeID)).FirstOrDefault();
                                用户统计信息.MathHistory += "2";
                            }
                            数据库实体.SaveChanges();
                        }
                    }
                });
            }
            if (Notice)
            {
                var 通知开奖实体 = new LotteyInfo
                {
                    Expect   = 开奖信息.期号代码,
                    OpenCode = 开奖信息.开奖号
                };
                var 中奖数据 = from p in 开奖用户信息
                           group p by p.userId into g
                           select new
                {
                    Key   = g.Key,
                    Value = g.Select(x => new CountSendDTO
                    {
                        IsWin        = x.IsWin,
                        playTypeId   = x.playTypeId,
                        playTypeName = x.playTypeName
                    })
                };
                var 输参数 = 中奖数据.ToDictionary(x => x.Key, x => x.Value.ToList());

                MyTcpChannel.OpenLotteyNotic(当前彩种ID, 通知开奖实体, 输参数);
            }
        }