using System; using System.Collections.Generic; using Library; using LitJson; using System.Linq; using System.Data; using System.Threading; using MySystem.PxcModels; namespace MySystem { public class TradeChangeService { public readonly static TradeChangeService Instance = new TradeChangeService(); private TradeChangeService() { } public void Start() { Thread th = new Thread(dosomething); th.IsBackground = true; th.Start(); } public void dosomething() { while (true) { string data = RedisDbconn.Instance.RPop("TradeChangeQueue"); if (!string.IsNullOrEmpty(data)) { try { JsonData jsonOj = JsonMapper.ToObject(data); int Id = int.Parse(function.CheckInt(jsonOj["Id"].ToString())); int OldType = int.Parse(function.CheckInt(jsonOj["OldType"].ToString())); int NewType = int.Parse(function.CheckInt(jsonOj["NewType"].ToString())); StatTradeAmount(Id, OldType, NewType); } catch (Exception ex) { function.WriteLog(DateTime.Now.ToString() + "\r\n" + ex.ToString(), "设置激活奖励异常"); } } else { Thread.Sleep(500); } } } public void StatTradeAmount(int Id, int OldType, int NewType) { function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "交易额类型变更"); WebCMSEntities db = new WebCMSEntities(); try { DataTable selfDt = CustomerSqlConn.dtable("select UserId,ParentNav,BrandId,BankCardType,QrPayFlag,MerHelpFlag,Version,CapFlag,VipFlag,PayType,DATE_FORMAT(CreateDate,'%Y%m%d'),TradeAmount from TradeRecord where Id=" + Id + "", MysqlConn.SqlConnStr); if (selfDt.Rows.Count > 0) { function.WriteLog("统计人数:" + selfDt.Rows.Count + "\n\n", "交易额类型变更"); foreach (DataRow selfDr in selfDt.Rows) { int UserId = int.Parse(selfDr["UserId"].ToString()); Users user = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users(); string ParentNav = user.ParentNav; //selfDr["ParentNav"].ToString(); int BrandId = int.Parse(selfDr["BrandId"].ToString()); int BankCardType = int.Parse(selfDr["BankCardType"].ToString()); int QrPayFlag = int.Parse(selfDr["QrPayFlag"].ToString()); int MerHelpFlag = int.Parse(selfDr["MerHelpFlag"].ToString()); int Version = int.Parse(selfDr["Version"].ToString()); int CapFlag = int.Parse(selfDr["CapFlag"].ToString()); int VipFlag = int.Parse(selfDr["VipFlag"].ToString()); int PayType = int.Parse(selfDr["PayType"].ToString()); string TradeDate = selfDr[10].ToString(); decimal TradeAmount = decimal.Parse(selfDr["TradeAmount"].ToString()); string TradeMonth = TradeDate.Substring(0, 6); TradeDaySummary selfStat = db.TradeDaySummary.FirstOrDefault(m => m.UserId == UserId && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.BrandId == BrandId && m.QueryCount == QrPayFlag && m.VipFlag == VipFlag && m.PayType == PayType && m.SeoTitle == "self"); if (selfStat != null) { if (BankCardType == 0) { if(OldType == 2) { if(selfStat.NotHelpDirectDebitTradeAmt >= TradeAmount) { selfStat.NotHelpDirectDebitTradeAmt -= TradeAmount; if(NewType == 1) { selfStat.HelpDirectDebitTradeAmt += TradeAmount; } } if (CapFlag == 1) { if(selfStat.NotHelpDirectDebitCapTradeAmt >= TradeAmount) { selfStat.NotHelpDirectDebitCapTradeAmt -= TradeAmount; if(NewType == 1) { selfStat.HelpDirectDebitCapTradeAmt += TradeAmount; } } } } } else if (BankCardType != 0) { if(OldType == 2) { if(selfStat.NotHelpDirectTradeAmt >= TradeAmount) { selfStat.NotHelpDirectTradeAmt -= TradeAmount; if(NewType == 1) { selfStat.HelpDirectTradeAmt += TradeAmount; } } } } ParentNav += "," + UserId + ","; if (!string.IsNullOrEmpty(ParentNav)) { string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(','); foreach (string NavUserIdString in ParentNavList) { int NavUserId = int.Parse(NavUserIdString); TradeDaySummary teamStat = db.TradeDaySummary.FirstOrDefault(m => m.UserId == NavUserId && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.BrandId == BrandId && m.QueryCount == QrPayFlag && m.VipFlag == VipFlag && m.PayType == PayType && m.SeoTitle == "team"); if (teamStat != null) { if (BankCardType == 0) { if(OldType == 2) { if(teamStat.NotHelpNonDirectDebitTradeAmt >= TradeAmount) { teamStat.NotHelpNonDirectDebitTradeAmt -= TradeAmount; if(NewType == 1) { teamStat.HelpNonDirectDebitTradeAmt += TradeAmount; } } if (CapFlag == 1) { if(teamStat.NotHelpDirectDebitCapTradeAmt >= TradeAmount) { teamStat.NotHelpDirectDebitCapTradeAmt -= TradeAmount; if(NewType == 1) { teamStat.HelpDirectDebitCapTradeAmt += TradeAmount; } } } } } else if (BankCardType != 0) { if(OldType == 2) { if(teamStat.NotHelpNonDirectTradeAmt >= TradeAmount) { teamStat.NotHelpNonDirectTradeAmt -= TradeAmount; if(NewType == 1) { teamStat.HelpNonDirectTradeAmt += TradeAmount; } } } } } } } } } } db.SaveChanges(); } catch (Exception ex) { function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "交易额类型变更异常"); } db.Dispose(); function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "交易额类型变更"); } } }