/// <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(""); }