Example #1
0
 public void 期号补遗()
 {
     当天补遗();
     遗漏开奖();
     new 历史比赛记录().重新计算();
     #region 历史补遗
     var 数据库实体 = new LotteryDbContext();
     var 彩票类型  = 数据库实体.LotteryTypes.Where(x => x.LotteryTypeGUID.Equals(时时彩客户端标识)).Select(x => new { x.LotteryTypeID, x.LotteryMaxNum }).FirstOrDefault();
     var 查询结果  = from 开奖信息 in 数据库实体.LotteryInfos
                 group 开奖信息 by 开奖信息.LotteryInfoDate into 新集合
                 where 新集合.Count() < 100 &&
                 新集合.Key != DateTime.Today
                 select new
     {
         日期 = 新集合.Key
     };
     foreach (var 当天日期 in 查询结果)
     {
         var 开奖查询结果    = 开奖获取.时时彩500W网站获取(当天日期.日期);
         var 数据库当前期号实体 = 数据库实体.LotteryInfos.Where(x => x.LotteryInfoDate == 当天日期.日期 && x.LotteryTypeID.Equals(彩票类型.LotteryTypeID)).Select(x => x.LotteryInfoCode).ToList();
         开奖查询结果 = 开奖查询结果.Where(x => !数据库当前期号实体.Contains(x.期号代码)).ToList();
         foreach (var 开奖信息 in 开奖查询结果)
         {
             修改数据库开奖信息(开奖信息, 当天日期.日期, false);
         }
     }
     #endregion 历史补遗
 }
Example #2
0
        public void 当天补遗()
        {
            var 当天日期      = DateTime.Today;
            var 开奖查询结果    = 开奖获取.时时彩500W网站获取(当天日期);
            var 数据库实体     = new LotteryDbContext();
            var 彩票类型      = 数据库实体.LotteryTypes.Where(x => x.LotteryTypeGUID.Equals(时时彩客户端标识)).Select(x => new { x.LotteryTypeID, x.LotteryMaxNum }).FirstOrDefault();
            var 数据库当前期号实体 = 数据库实体.LotteryInfos.Where(x => x.LotteryInfoDate == 当天日期 && x.LotteryTypeID.Equals(彩票类型.LotteryTypeID)).Select(x => x.LotteryInfoCode).ToList();

            开奖查询结果 = 开奖查询结果.Where(x => !数据库当前期号实体.Contains(x.期号代码)).ToList();
            foreach (var 开奖信息 in 开奖查询结果)
            {
                修改数据库开奖信息(开奖信息, 当天日期, false);
            }
        }
Example #3
0
        public async Task <Ticket> GetTicket(string lotteryNumber, string ticketNumber)
        {
            try
            {
                using (var db = new LotteryDbContext(_dbContextOptions))
                {
                    var ticket = await db.Tickets.AsNoTracking()
                                 .Where(t => t.Number == ticketNumber && t.Lottery.Number == lotteryNumber)
                                 .FirstOrDefaultAsync();

                    return(ticket);
                }
            }
            catch (Exception)
            {
                throw new Exception("Ошибка получения билета по номеру");
            }
        }
Example #4
0
        public void 遗漏开奖()
        {
            var 数据库实体 = new LotteryDbContext();
            var 彩票类型  = 数据库实体.LotteryTypes.Where(x => x.LotteryTypeGUID.Equals(时时彩客户端标识)).Select(x => new { x.LotteryTypeID, x.LotteryMaxNum }).FirstOrDefault();
            var 查询期号  = from p in 数据库实体.UserLotterys.Where(x => x.LotteryTypeID.Equals(彩票类型.LotteryTypeID) &&
                                                           x.IsWin == 0)
                        group p by p.UserLotteryExpect into 新集合
                        select 新集合.Key;

            foreach (var 期号 in 查询期号)
            {
                var 开奖信息 = 开奖获取.读取开奖信息(期号);
                if (开奖信息 != null)
                {
                    var 查询时间 = DateTime.ParseExact(期号.ToString().Substring(0, 8), "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture);
                    修改数据库开奖信息(开奖信息, 查询时间, false);
                }
            }
        }
Example #5
0
        public static List <配置文件实体> 读取配置文件生产日期(DateTime?要生产的日期 = null)
        {
            var 当天开奖列表 = new List <配置文件实体>();
            var 生产日期   = DateTime.Today;

            if (要生产的日期.HasValue)
            {
                生产日期 = 要生产的日期.Value;
            }
            var 数据库实体 = new LotteryDbContext();
            var 彩票类型  = 数据库实体.LotteryTypes.Where(x => x.LotteryTypeGUID.Equals(时时彩客户端标识)).FirstOrDefault();

            using (var 文件流 = new StreamReader(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "OTConfig/CQSSC.txt")))
            {
                var 一行数据 = 文件流.ReadLine();
                while (!String.IsNullOrEmpty(一行数据))
                {
                    var 临时变量数组 = 一行数据.Split('|');

                    if (临时变量数组[0] == "120")
                    {
                        当天开奖列表.Add(new 配置文件实体
                        {
                            期号代码 = Convert.ToInt64(生产日期.AddDays(-1).ToString(彩票类型.LotteryCodeFormat) + 临时变量数组[0]),
                            开奖日期 = Convert.ToDateTime(String.Format("{0} {1}:00", 生产日期.ToString("yyyy-MM-dd"), 临时变量数组[1]))
                        });
                    }
                    else
                    {
                        当天开奖列表.Add(new 配置文件实体
                        {
                            期号代码 = Convert.ToInt64(生产日期.ToString(彩票类型.LotteryCodeFormat) + 临时变量数组[0]),
                            开奖日期 = Convert.ToDateTime(String.Format("{0} {1}:00", 生产日期.ToString("yyyy-MM-dd"), 临时变量数组[1]))
                        });
                    }
                    一行数据 = 文件流.ReadLine();
                }
            }
            当天开奖列表 = 当天开奖列表.Where(x => x.开奖日期 >= DateTime.Now).ToList();
            return(当天开奖列表);
        }
Example #6
0
 public BaseRepository(LotteryDbContext context) => _context = context;
Example #7
0
 public WinnerRepository(LotteryDbContext context) : base(context)
 {
 }
Example #8
0
 public SessionRepository(LotteryDbContext context) : base(context)
 {
 }
Example #9
0
 public DrawRepository(LotteryDbContext context) : base(context)
 {
 }
Example #10
0
 public TicketRepository(LotteryDbContext context) : base(context)
 {
 }
Example #11
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, 通知开奖实体, 输参数);
            }
        }
Example #12
0
 public PrizeRepository(LotteryDbContext context) : base(context)
 {
 }