/// <summary>
        /// 创建新一期彩票,要求上一期必须完成
        /// </summary>
        /// <param name="issueName"></param>
        /// <param name="beginTime"></param>
        /// <param name="stopTime"></param>
        /// <returns></returns>
        public bool ConstructNewIssue(string issueName, DateTime beginTime, DateTime stopTime)
        {
            int poolCmd   = 0;
            var lastIssue = _issueRepository.Table.OrderBy(i => i.CreatedOn).LastOrDefault();

            if (lastIssue != null)
            {
                if (lastIssue.PoolCmd == 0)
                {
                    poolCmd = 1;
                }
                if (lastIssue.Stat != (int)IssueStat.Accomplish)
                {
                    throw new Exception("上一期没有完成,不能创建新一期。");
                }
            }
            DateTime now      = DateTime.Now;
            var      newIssue = new LotteryIssue()
            {
                IssueName     = issueName,
                BeginOn       = beginTime,
                StopOn        = stopTime,
                OrderQuantity = 0,
                Result        = "",
                CreatedOn     = now,
                PoolCmd       = poolCmd,
                Stat          = (int)IssueStat.Establish
            };

            _issueRepository.Insert(newIssue);
            ConstructPool(poolCmd);
            return(true);
        }
Esempio n. 2
0
        //private DateTime mIssueDate;

        ///// <summary>
        ///// 生成
        ///// </summary>
        //public List<LotteryIssue> Generate(DateTime issueDate)
        //{

        //    this.mIssueDate = issueDate;
        //    List<LotteryIssue> result = new List<LotteryIssue>();
        //    DateTime beginDate = Convert.ToDateTime(issueDate.AddDays(-1).ToString("yyyy/MM/dd") + " 23:55:00");
        //    result.AddRange(Builder(beginDate, 5 * 60, 1, 288));

        //    return result;
        //}

        //protected override string BuilderIssueCode(DateTime endDate, string code)
        //{
        //    return this.mIssueDate.ToString("yyyyMMdd") + code;
        //}

        ///// <summary>
        ///// 结束推迟时间
        ///// </summary>
        //protected override int IssueEndTimeAppend
        //{
        //    get
        //    {
        //        return 1;
        //    }
        //}

        //protected override int LotteryId
        //{
        //    get { return 25; }
        //}

        //protected override int EndSaleMinutes
        //{
        //    get
        //    {
        //        return -(ConfigHelper.GetEndSaleMinutes_wufencs-59);
        //    }
        //}


        /****************************new******************************************/
        /// <summary>
        /// 生成
        /// </summary>
        public List <LotteryIssue> Generate(DateTime issueDate)
        {
            string spers = System.Configuration.ConfigurationManager.AppSettings["tw_bg_Builder_sper"];//构建台湾宾果

            if (string.IsNullOrEmpty(spers))
            {
                return(new List <LotteryIssue>());
            }

            DateTime beginDate = DateTime.Now;

            issueDate = Convert.ToDateTime(issueDate.ToString("yyyy/MM/dd") + " 07:05:00");


            int startIssueValue = 0;

            if (!DateTime.TryParse(spers.Split(',')[0], out beginDate))
            {
                return(new List <LotteryIssue>());
            }
            if (!int.TryParse(spers.Split(',')[1], out startIssueValue))
            {
                return(new List <LotteryIssue>());
            }
            //计算其实日期与当天相差天数
            var days = issueDate.Subtract(beginDate).Days;

            startIssueValue = startIssueValue + 202 * days + days; //今天开始期数

            int seconds = 60 * 5;                                  //300秒一期  03:59秒结束, 07:00 继续开始

            issueDate = Convert.ToDateTime(issueDate.ToString("yyyy/MM/dd") + " 07:05:00");
            List <LotteryIssue> source = new List <LotteryIssue>();

            for (var i = 1; i <= 202; i++)
            {
                DateTime     endTime     = issueDate.AddSeconds(seconds).AddSeconds(IssueEndTimeAppend);
                DateTime     endSaleTime = endTime.AddSeconds(EndSaleMinutes);
                string       issueCode   = startIssueValue.ToString();
                LotteryIssue issue       = new LotteryIssue()
                {
                    LotteryId   = LotteryId,
                    EndSaleTime = endSaleTime,
                    EndTime     = endTime,
                    IssueCode   = issueCode,

                    LotteryTime   = endTime,
                    StartSaleTime = (i == 1 ? (Convert.ToDateTime(issueDate.AddDays(-1).ToString("yyyy/MM/dd") + " 23:55:00")) : issueDate.AddSeconds(-seconds)),
                    StartTime     = issueDate.AddSeconds(-seconds),
                };

                source.Add(issue);
                issueDate = endTime.AddSeconds(-IssueEndTimeAppend);

                startIssueValue++;
            }


            return(source);
        }
        /// <summary>
        /// 创建task ITrigger
        /// </summary>
        /// <param name="issue"></param>
        private ITrigger CreateTriggerDay(LotteryIssue issue)
        {
            string taskNum   = issue.IssueCode + "," + issue.StartTime.ToString("yyyy/MM/dd");
            string groupName = LotteryIssuesData.GetAllLotterys().Where(l => l.Id == issue.LotteryId).FirstOrDefault().LotteryCode;

            ITrigger trigger = new CronTriggerImpl(taskNum, groupName, issue.EndTime.Value.ToString("ss mm HH dd") + " * ?");

            return(trigger);
        }
 /// <summary>
 /// 生成期数
 /// </summary>
 /// <param name="item"></param>
 /// <returns></returns>
 public void AddLotteryIssueCode(LotteryIssue item)
 {
     //var fs = this.mLotteryIssueService.GetAll().Where(i => i.IssueCode == item.IssueCode && i.LotteryId==item.LotteryId).FirstOrDefault();
     //if (fs == null)
     //{
     //    this.mLotteryIssueService.Create(item);
     //    this.mLotteryIssueService.Save();
     //}
     this.mLotteryIssueService.AddLotteryIssueCode(item);
 }
        /// <summary>
        /// 生成
        /// </summary>
        public List <LotteryIssue> Generate(DateTime issueDate)
        {
            string spers = System.Configuration.ConfigurationManager.AppSettings["hlgBuilder_sper"];//构建黑龙江时时彩期数生成规则

            if (string.IsNullOrEmpty(spers))
            {
                return(new List <LotteryIssue>());
            }

            DateTime beginDate       = DateTime.Now;
            string   beginStr        = "02";//通过02开头
            int      startIssueValue = 0;

            if (!DateTime.TryParse(spers.Split(',')[0], out beginDate))
            {
                return(new List <LotteryIssue>());
            }
            if (!int.TryParse(spers.Split(',')[1], out startIssueValue))
            {
                return(new List <LotteryIssue>());
            }
            //计算其实日期与当天相差天数
            var days = DateTime.Now.Subtract(beginDate).Days;

            startIssueValue = startIssueValue + 84 * days; //今天开始期数
            //9.30分开始,一天84期
            int seconds = 10 * 60;                         //十分钟一起

            List <LotteryIssue> source = new List <LotteryIssue>();

            for (var i = 1; i <= 84; i++)
            {
                DateTime     endTime     = beginDate.AddSeconds(seconds).AddSeconds(IssueEndTimeAppend);
                DateTime     endSaleTime = endTime.AddSeconds(EndSaleMinutes);
                string       issueCode   = beginStr + startIssueValue.ToString("d5");
                LotteryIssue issue       = new LotteryIssue()
                {
                    LotteryId   = LotteryId,
                    EndSaleTime = endSaleTime,
                    EndTime     = endTime,
                    IssueCode   = issueCode,

                    LotteryTime   = endTime,
                    StartSaleTime = beginDate,
                    StartTime     = beginDate,
                };

                source.Add(issue);
                beginDate = endTime.AddSeconds(-IssueEndTimeAppend);
                startIssueValue++;
            }


            return(source);
        }
 public void Put(LotteryIssue result, int lotteryid)
 {
     lock (lockObj)
     {
         if (mCatch.Count > 10000)
         {
             mCatch = new Dictionary <string, LotteryIssue>();
         }
         mCatch.Add(lotteryid + result.IssueCode, result);
     }
 }
        private LotteryTicketModel SendLotteryTicket(BuyerIssue buyerIssue, LotteryIssue lotteryIssue, int sellType)
        {
            if (lotteryIssue.Stat != (int)IssueStat.Establish)
            {
                throw new Exception("当期已经结束,不再接受订单。");
            }
            Random rd0 = new Random();
            int    a0  = rd0.Next(100) % 52;
            int    b0  = rd0.Next(100) % 52;
            int    c0  = rd0.Next(100) % 52;
            int    d0  = rd0.Next(100) % 52;

            if (lotteryIssue.PoolCmd == 0)
            {
                var lp0 = GetTicketInLotteryPool0(a0, b0, c0, d0, buyerIssue.BuyerId, sellType);
                LotteryTicketModel model = new LotteryTicketModel()
                {
                    A       = lp0.A,
                    B       = lp0.B,
                    C       = lp0.C,
                    D       = lp0.D,
                    BuyerId = lp0.BuyerId,
                    PoolCmd = 0,
                    Stat    = lp0.Stat,
                    Type    = lp0.Type,
                    OrderOn = DateTime.Now
                };
                return(model);
            }
            else if (lotteryIssue.PoolCmd == 1)
            {
                var lp1 = GetTicketInLotteryPool1(a0, b0, c0, d0, buyerIssue.BuyerId, sellType);
                LotteryTicketModel model = new LotteryTicketModel()
                {
                    A       = lp1.A,
                    B       = lp1.B,
                    C       = lp1.C,
                    D       = lp1.D,
                    BuyerId = lp1.BuyerId,
                    PoolCmd = 1,
                    Stat    = lp1.Stat,
                    Type    = lp1.Type,
                    OrderOn = DateTime.Now
                };
                return(model);
            }
            throw new Exception("数据命令不匹配500244,不接受订单。");
        }
Esempio n. 8
0
        protected List <LotteryIssue> Builder(DateTime beginDate, int seconds, int beginCode, int count)
        {
            List <LotteryIssue> source = new List <LotteryIssue>();

            for (var i = 1; i <= count; i++)
            {
                DateTime endTime     = beginDate.AddSeconds(seconds).AddSeconds(IssueEndTimeAppend);
                DateTime endSaleTime = endTime.AddSeconds(EndSaleMinutes);
                string   code        = beginCode.ToString();
                while (i != 0)
                {
                    if (code.Length < FormartCount)
                    {
                        code = "0" + code;
                    }
                    else
                    {
                        break;
                    }
                }

                string issueCode = BuilderIssueCode(endTime, code);


                LotteryIssue issue = new LotteryIssue()
                {
                    LotteryId   = LotteryId,
                    EndSaleTime = endSaleTime,
                    EndTime     = endTime,
                    IssueCode   = issueCode,

                    LotteryTime   = endTime,
                    StartSaleTime = beginDate,
                    StartTime     = beginDate,
                };

                source.Add(issue);
                beginDate = endTime.AddSeconds(-IssueEndTimeAppend);
                beginCode++;
            }

            return(source);
        }
        /// <summary>
        /// 生成福彩3d
        /// </summary>
        /// <param name="issueDate"></param>
        /// <returns></returns>
        public List <LotteryIssue> Generate()
        {
            var                 array  = Convert.ToInt32(StopDays);//对应期号
            string              dd     = Convert.ToDateTime(OpenTime).ToString("HH:mm:ss");
            string              start  = Convert.ToDateTime(OpenTime).AddMinutes(1).ToString("HH:mm:ss");
            DateTime            date   = Convert.ToDateTime(OpenTime);
            int                 year   = date.Year;
            List <LotteryIssue> result = new List <LotteryIssue>();

            //按照一天一期的逻辑进行生成
            while (true)
            {
                //
                DateTime endTime     = Convert.ToDateTime(date.ToString("yyyy/MM/dd ") + dd);    //开奖时间
                DateTime beginTime   = Convert.ToDateTime(date.ToString("yyyy/MM/dd ") + start); //开奖时间
                DateTime endSaleTime = endTime.AddSeconds(EndSaleMinutes);

                string       code  = array.ToString();
                LotteryIssue issue = new LotteryIssue()
                {
                    LotteryId     = LotteryId,
                    EndSaleTime   = endSaleTime,
                    EndTime       = endTime,
                    IssueCode     = code,
                    LotteryTime   = endTime,
                    StartSaleTime = beginTime,
                    StartTime     = beginTime,
                };
                result.Add(issue);
                array++;

                date = endTime.AddDays(1);
                if (year != date.Year)
                {
                    break;
                }
            }

            return(result);
        }
Esempio n. 10
0
        private int maxIssueCount = 880;//总期数
        /// <summary>
        /// 生成
        /// </summary>
        public List <LotteryIssue> Generate(DateTime issueDate)
        {
            string spers = System.Configuration.ConfigurationManager.AppSettings["hg1_5Builder_sper"];//构建韩国1.5分彩

            if (string.IsNullOrEmpty(spers))
            {
                return(new List <LotteryIssue>());
            }

            DateTime beginDate = DateTime.Now;

            issueDate = Convert.ToDateTime(issueDate.ToString("yyyy/MM/dd") + " 00:00:00");


            int startIssueValue = 0;

            if (!DateTime.TryParse(spers.Split(',')[0], out beginDate))
            {
                return(new List <LotteryIssue>());
            }
            if (!int.TryParse(spers.Split(',')[1], out startIssueValue))
            {
                return(new List <LotteryIssue>());
            }
            //计算其实日期与当天相差天数
            var days = issueDate.Subtract(beginDate).Days;

            startIssueValue = (startIssueValue + maxIssueCount * days); //今天开始期数
            //00:00:00
            int seconds = 90;                                           //90秒一期  04:59秒结束, 07:00 继续开始

            List <LotteryIssue> source = new List <LotteryIssue>();

            for (var i = 1; i <= maxIssueCount; i++)
            {
                DateTime     endTime     = issueDate.AddSeconds(seconds).AddSeconds(IssueEndTimeAppend);
                DateTime     endSaleTime = endTime.AddSeconds(EndSaleMinutes);
                string       issueCode   = startIssueValue.ToString();
                LotteryIssue issue       = new LotteryIssue()
                {
                    LotteryId   = LotteryId,
                    EndSaleTime = endSaleTime,
                    EndTime     = endTime,
                    IssueCode   = issueCode,

                    LotteryTime   = endTime,
                    StartSaleTime = issueDate,
                    StartTime     = issueDate,
                };

                source.Add(issue);
                issueDate = endTime.AddSeconds(-IssueEndTimeAppend);
                if (issueDate.Hour == 5)
                {
                    issueDate = Convert.ToDateTime(issueDate.ToString("yyyy/MM/dd 07:00:00"));
                }
                startIssueValue++;
            }


            return(source);
        }
Esempio n. 11
0
        /// <summary>
        /// 活的用户所有的彩票
        /// </summary>
        /// <param name="lotteryBuyer"></param>
        /// <param name="Backtrack"></param>
        /// <returns></returns>
        public IList <LotteryTicketModel> GetLotteysByBuyer(LotteryBuyer lotteryBuyer, int Backtrack = 0)
        {
            var          issues = _issueRepository.Table.OrderByDescending(i => i.CreatedOn).Take(Backtrack + 1);
            LotteryIssue issue  = null;

            if (issues.Count() == Backtrack + 1)
            {
                throw new Exception("索引已经越界");
            }
            else
            {
                issue = issues.Last();
            }
            if (issue.Stat == (int)IssueStat.Accomplish)
            {
                throw new Exception("当前期没有生成。");
            }
            List <LotteryTicketModel> models = new List <LotteryTicketModel>();

            if (issue.PoolCmd == 0)
            {
                var lp0s = _pool0Repository.Table.Where(pl0 => pl0.BuyerId == lotteryBuyer.Id).ToList();
                foreach (var lp0 in lp0s)
                {
                    LotteryTicketModel model = new LotteryTicketModel()
                    {
                        A       = lp0.A,
                        B       = lp0.B,
                        C       = lp0.C,
                        D       = lp0.D,
                        BuyerId = lp0.BuyerId,
                        Id      = lp0.Id,
                        IssueId = issue.Id,
                        OrderOn = lp0.OrderTime,
                        PoolCmd = issue.PoolCmd,
                        Stat    = lp0.Stat,
                        Type    = lp0.Type
                    };
                    models.Add(model);
                }
            }
            else if (issue.PoolCmd == 1)
            {
                var lp1s = _pool1Repository.Table.Where(pl1 => pl1.BuyerId == lotteryBuyer.Id).ToList();
                foreach (var lp1 in lp1s)
                {
                    LotteryTicketModel model = new LotteryTicketModel()
                    {
                        A       = lp1.A,
                        B       = lp1.B,
                        C       = lp1.C,
                        D       = lp1.D,
                        BuyerId = lp1.BuyerId,
                        Id      = lp1.Id,
                        IssueId = issue.Id,
                        OrderOn = lp1.OrderTime,
                        PoolCmd = issue.PoolCmd,
                        Stat    = lp1.Stat,
                        Type    = lp1.Type
                    };
                    models.Add(model);
                }
            }
            else
            {
                throw new Exception("奖池命令错误!");
            }
            return(models);
        }
Esempio n. 12
0
 public void PreLotteryDraws(LotteryIssue lotteryIssue, string LotteryParameters)
 {
     throw new NotImplementedException();
 }