Esempio n. 1
0
        /// <summary>
        /// 最号订单处理
        /// </summary>
        /// <returns></returns>
        public static string WriteChaseOrderToDb()
        {
            //  var logList = new List<string>();
            //  logList.Add("<---------开始写入追号订单数据到数据库 ");
            ////  Console.WriteLine("<---------开始写入追号订单数据到数据库 ");


            var maxDay    = 5;
            var gameTypes = new LotteryGameManager().QueryEnableGameTypes();

            for (int i = 0; i < maxDay; i++)
            {
                var now  = DateTime.Today.AddDays(-i);
                var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "CacheData", "ChaseOrder", now.ToString("yyyy-MM-dd"));
                //   logList.Add(string.Format("查询目录:{0} ", path));

                //  Console.WriteLine(string.Format("查询目录:{0} ", path));
                if (!Directory.Exists(path))
                {
                    continue;
                }

                var sportsManager = new Sports_Manager();
                var schemeManager = new SchemeManager();

                //日期下面只有一级文件
                var fileArray = Directory.GetFiles(path);
                // logList.Add(string.Format("文件数:{0}个 ", fileArray.Length));
                // Console.WriteLine(string.Format("文件数:{0}个 ", fileArray.Length));
                foreach (var item in fileArray)
                {
                    var json         = File.ReadAllText(item, Encoding.UTF8);
                    var chaseOrderId = item.Substring(item.LastIndexOf("\\") + 1).Replace(".json", "");
                    var order        = JsonSerializer.Deserialize <LotteryBettingInfo>(json);

                    order.IssuseNumberList.Sort((x, y) =>
                    {
                        return(x.IssuseNumber.CompareTo(y.IssuseNumber));
                    });

                    // logList.Add(string.Format("开始处理{0} ", chaseOrderId));
                    //  Console.WriteLine(string.Format("开始处理{0} ", chaseOrderId));
                    //一个追号订单,保存到数据库
                    try
                    {
                        var chaseSchemeList = sportsManager.QueryAllLotterySchemeByKeyLine(chaseOrderId);
                        //   Console.WriteLine(string.Format("开始处理1{0} ", chaseOrderId));
                        var schemeIdArray = chaseSchemeList.Select(p => p.SchemeId).ToArray();
                        //   Console.WriteLine(string.Format("开始处理2{0} ", chaseOrderId));
                        //查询三个订单表数据
                        //  string log1 = string.Join(",", schemeIdArray);
                        //   Console.WriteLine(string.Format("订单号****{0} ", log1));
                        var orderDetailList = schemeManager.QueryOrderDetailListBySchemeId(schemeIdArray);
                        //   Console.WriteLine(string.Format("开始处理3{0} ", chaseOrderId));
                        var orderRunningList = sportsManager.QueryOrderRunningBySchemeIdArray(schemeIdArray);
                        //  Console.WriteLine(string.Format("开始处理4{0} ", chaseOrderId));
                        var orderComplateList = sportsManager.QueryOrderComplateBySchemeIdArray(schemeIdArray);
                        //  Console.WriteLine(string.Format("开始处理5{0} ", chaseOrderId));
                        if (chaseSchemeList.Count == orderDetailList.Count && chaseSchemeList.Count == orderRunningList.Count + orderComplateList.Count)
                        {
                            //订单数据正常,删除订单文件
                            //logList.Add("订单数据正常,删除订单文件 ");
                            //   Console.WriteLine("订单数据正常,删除订单文件 ");
                            File.Delete(item);
                            continue;
                        }

                        var gameTypeList = new List <GameTypeInfo>();
                        foreach (var code in order.AnteCodeList)
                        {
                            var t = gameTypes.FirstOrDefault(a => a.Game.GameCode == order.GameCode && a.GameType == code.GameType.ToUpper());
                            if (t != null && !gameTypeList.Contains(t))
                            {
                                gameTypeList.Add(t);
                            }
                        }
                        var gameType = string.Join(",", (from g in gameTypeList group g by g.GameType into g select g.Key).ToArray());

                        //计算OrderDetail表没有的数据并写入
                        foreach (var scheme in chaseSchemeList)
                        {
                            var orderDetail = orderDetailList.FirstOrDefault(p => p.SchemeId == scheme.SchemeId);
                            if (orderDetail == null)
                            {
                                // logList.Add("写入orderDetail ");
                                // Console.WriteLine("写入orderDetail ");
                                var currentIssuse = order.IssuseNumberList.FirstOrDefault(p => p.IssuseNumber == scheme.IssuseNumber);

                                schemeManager.AddOrderDetail(new C_OrderDetail
                                {
                                    SchemeId              = scheme.SchemeId,
                                    AddMoney              = 0M,
                                    AfterTaxBonusMoney    = 0M,
                                    AgentId               = string.Empty,
                                    Amount                = currentIssuse == null ? 1 : currentIssuse.Amount,
                                    BetTime               = DateTime.Now,
                                    BonusAwardsMoney      = 0M,
                                    BonusStatus           = (int)BonusStatus.Waitting,
                                    ComplateTime          = null,
                                    CreateTime            = DateTime.Now,
                                    CurrentBettingMoney   = 0M,
                                    CurrentIssuseNumber   = currentIssuse == null ? string.Empty : currentIssuse.IssuseNumber,
                                    GameCode              = order.GameCode,
                                    GameType              = gameType,
                                    GameTypeName          = BettingHelper.FormatGameType(order.GameCode, gameType), //FormatGameType(order.GameCode, gameType),
                                    IsAppend              = order.IsAppend,
                                    IsVirtualOrder        = false,
                                    PlayType              = string.Empty,
                                    PreTaxBonusMoney      = 0M,
                                    ProgressStatus        = (int)ProgressStatus.Waitting,
                                    RealPayRebateMoney    = 0M,
                                    RedBagAwardsMoney     = 0M,
                                    RedBagMoney           = 0M,
                                    SchemeBettingCategory = (int)SchemeBettingCategory.GeneralBetting,
                                    SchemeSource          = (int)order.SchemeSource,
                                    SchemeType            = (int)SchemeType.ChaseBetting,
                                    StartIssuseNumber     = string.Empty,
                                    StopAfterBonus        = order.StopAfterBonus,
                                    TicketStatus          = (int)TicketStatus.Waitting,
                                    TicketTime            = null,
                                    TotalIssuseCount      = order.IssuseNumberList.Count,
                                    TotalMoney            = currentIssuse.IssuseTotalMoney,
                                    TotalPayRebateMoney   = 0M,
                                    UserId                = order.UserId,
                                });
                            }
                        }

                        //计算OrderRunning表没有的数据并写入
                        foreach (var scheme in chaseSchemeList)
                        {
                            var runningOrder = orderRunningList.FirstOrDefault(p => p.SchemeId == scheme.SchemeId);
                            var comlateOrder = orderComplateList.FirstOrDefault(p => p.SchemeId == scheme.SchemeId);
                            if (runningOrder == null && comlateOrder == null)
                            {
                                //  logList.Add("写入runningOrder ");
                                // Console.WriteLine("写入runningOrder ");
                                var currentIssuse = order.IssuseNumberList.FirstOrDefault(p => p.IssuseNumber == scheme.IssuseNumber);
                                sportsManager.AddSports_Order_Running(new C_Sports_Order_Running
                                {
                                    AfterTaxBonusMoney = 0M,
                                    AgentId            = string.Empty,
                                    Amount             = currentIssuse == null ? 1 : currentIssuse.Amount,
                                    Attach             = string.Empty,

                                    BonusStatus           = (int)BonusStatus.Waitting,
                                    CanChase              = false,
                                    IsVirtualOrder        = false,
                                    IsPayRebate           = false,
                                    RealPayRebateMoney    = 0M,
                                    TotalPayRebateMoney   = 0M,
                                    CreateTime            = DateTime.Now,
                                    GameCode              = order.GameCode,
                                    GameType              = gameType,
                                    IssuseNumber          = currentIssuse == null ? string.Empty : currentIssuse.IssuseNumber,
                                    PlayType              = string.Empty,
                                    PreTaxBonusMoney      = 0M,
                                    ProgressStatus        = (int)ProgressStatus.Waitting,
                                    SchemeId              = scheme.SchemeId,
                                    SchemeType            = (int)SchemeType.ChaseBetting,
                                    SchemeBettingCategory = (int)SchemeBettingCategory.GeneralBetting,
                                    TicketId              = string.Empty,
                                    TicketLog             = string.Empty,
                                    TicketStatus          = (int)TicketStatus.Waitting,
                                    TotalMatchCount       = 0,
                                    TotalMoney            = currentIssuse.IssuseTotalMoney,
                                    SuccessMoney          = 0M,
                                    UserId              = order.UserId,
                                    StopTime            = DateTime.Now,
                                    SchemeSource        = (int)SchemeSource.Web,
                                    BetCount            = 0,
                                    BonusCount          = 0,
                                    HitMatchCount       = 0,
                                    RightCount          = 0,
                                    Error1Count         = 0,
                                    Error2Count         = 0,
                                    MaxBonusMoney       = 0,
                                    MinBonusMoney       = 0,
                                    Security            = (int)TogetherSchemeSecurity.Public,
                                    TicketGateway       = string.Empty,
                                    TicketProgress      = 1M,
                                    BetTime             = DateTime.Now,
                                    ExtensionOne        = string.Format("{0}{1}", "3X1_", (int)order.ActivityType),
                                    QueryTicketStopTime = DateTime.Now.AddMinutes(1).ToString("yyyyMMddHHmm"),
                                    IsAppend            = false,
                                    RedBagMoney         = 0,
                                    IsSplitTickets      = false,
                                    TicketTime          = null,
                                });
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        //  logList.Add(string.Format("保存追号订单数据失败:{0}", ex.ToString()));
                        // Console.WriteLine(string.Format("保存追号订单数据失败:{0}", ex.ToString()));
                    }
                }
            }
            //写入日志
            // logList.Add("本次处理全部完成----------> ");
            // Console.WriteLine("本次处理全部完成----------> ");

            //   string log= string.Join(Environment.NewLine, logList.ToArray());
            //  // Console.WriteLine(log);
            ////   string log = Common.JSON.JsonHelper.Serialize(logList);
            //   Log4Log.Info( "追号消息***", new Exception(log));

            return("");
        }
Esempio n. 2
0
        public C_Sports_Order_Running AddRunningOrderAndOrderDetail(string schemeId, SchemeBettingCategory category,
                                                                    string gameCode, string gameType, string playType, bool stopAfterBonus,
                                                                    string issuseNumber, int amount, int betCount, int totalMatchCount, decimal totalMoney, DateTime stopTime,
                                                                    SchemeSource schemeSource, TogetherSchemeSecurity security, SchemeType schemeType, bool canChase, bool isVirtualOrder,
                                                                    string userId, string userAgent, DateTime betTime, ActivityType activityType, string attach, bool isAppend, decimal redBagMoney, ProgressStatus progressStatus, TicketStatus ticketStatus)
        {
            //if (DateTime.Now >= stopTime)
            if (betTime >= stopTime)
            {
                throw new LogicException(string.Format("订单结束时间是{0},订单不能投注。", stopTime.ToString("yyyy-MM-dd HH:mm")));
            }
            var sportsManager = new Sports_Manager();

            if (new string[] { "JCZQ", "JCLQ" }.Contains(gameCode))
            {
                issuseNumber = DateTime.Now.ToString("yyyy-MM-dd");
            }

            DateTime?ticketTime = null;

            if (ticketStatus == TicketStatus.Ticketed)
            {
                ticketTime = DateTime.Now;
            }
            DateTime createtime = DateTime.Now;

            if (betTime != null && betTime.ToString() != "0001/1/1 0:00:00")
            {
                createtime = betTime;
            }
            else
            {
                betTime = DateTime.Now;
            }
            betTime = createtime;
            var order = new C_Sports_Order_Running
            {
                AfterTaxBonusMoney    = 0M,
                AgentId               = userAgent,
                Amount                = amount,
                BonusStatus           = (int)BonusStatus.Waitting,
                CanChase              = canChase,
                IsVirtualOrder        = isVirtualOrder,
                IsPayRebate           = false,
                RealPayRebateMoney    = 0M,
                TotalPayRebateMoney   = 0M,
                CreateTime            = createtime,
                GameCode              = gameCode,
                GameType              = gameType,
                IssuseNumber          = issuseNumber,
                PlayType              = playType,
                PreTaxBonusMoney      = 0M,
                ProgressStatus        = (int)progressStatus,
                SchemeId              = schemeId,
                SchemeType            = (int)schemeType,
                SchemeBettingCategory = (int)category,
                TicketId              = string.Empty,
                TicketLog             = string.Empty,
                TicketStatus          = (int)ticketStatus,
                TotalMatchCount       = totalMatchCount,
                TotalMoney            = totalMoney,
                SuccessMoney          = totalMoney,
                UserId                = userId,
                StopTime              = stopTime,
                SchemeSource          = (int)schemeSource,
                BetCount              = betCount,
                BonusCount            = 0,
                HitMatchCount         = 0,
                RightCount            = 0,
                Error1Count           = 0,
                Error2Count           = 0,
                MaxBonusMoney         = 0,
                MinBonusMoney         = 0,
                Security              = (int)security,
                TicketGateway         = string.Empty,
                TicketProgress        = 1M,
                BetTime               = betTime,
                ExtensionOne          = string.Format("{0}{1}", "3X1_", (int)activityType),
                Attach                = string.IsNullOrEmpty(attach) ? string.Empty : attach.ToUpper(),
                QueryTicketStopTime   = stopTime.AddMinutes(1).ToString("yyyyMMddHHmm"),
                IsAppend              = isAppend,
                RedBagMoney           = redBagMoney,
                IsSplitTickets        = ticketStatus == TicketStatus.Ticketed,
                TicketTime            = ticketTime,
            };

            sportsManager.AddSports_Order_Running(order);

            //订单总表信息
            var orderDetail = new C_OrderDetail
            {
                AfterTaxBonusMoney = 0M,
                AgentId            = userAgent,
                BonusStatus        = (int)BonusStatus.Waitting,
                //  ComplateTime = null,
                CreateTime            = createtime,
                CurrentBettingMoney   = ticketStatus == TicketStatus.Ticketed ? totalMoney : 0M,
                GameCode              = gameCode,
                GameType              = gameType,
                GameTypeName          = BettingHelper.FormatGameType(gameCode, gameType),
                PreTaxBonusMoney      = 0M,
                ProgressStatus        = (int)progressStatus,
                SchemeId              = schemeId,
                SchemeSource          = (int)schemeSource,
                SchemeType            = (int)schemeType,
                SchemeBettingCategory = (int)category,
                StartIssuseNumber     = issuseNumber,
                StopAfterBonus        = stopAfterBonus,
                TicketStatus          = (int)ticketStatus,
                TotalIssuseCount      = 1,
                TotalMoney            = totalMoney,
                UserId = userId,
                CurrentIssuseNumber = issuseNumber,
                IsVirtualOrder      = isVirtualOrder,
                PlayType            = playType,
                Amount              = amount,
                AddMoney            = 0M,
                BetTime             = betTime,
                IsAppend            = isAppend,
                RedBagMoney         = redBagMoney,
                BonusAwardsMoney    = 0M,
                RealPayRebateMoney  = 0M,
                RedBagAwardsMoney   = 0M,
                TotalPayRebateMoney = 0M,
                TicketTime          = ticketTime,
            };

            new SchemeManager().AddOrderDetail(orderDetail);
            return(order);
        }