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 TestService { public readonly static TestService Instance = new TestService(); private TestService() { } public void Start() { Thread th = new Thread(ResetTradeRecordUserId); th.IsBackground = true; th.Start(); } public void dosomething() { string check = function.ReadInstance("/tmp/flag.txt"); if (!string.IsNullOrEmpty(check)) { return; } function.WritePage("/tmp/", "flag.txt", DateTime.Now.ToString()); string TradeMonth = "202205"; string TradeDate = "20220511"; List uids = new List(); uids = uids.OrderByDescending(m => m).ToList(); foreach (int uid in uids) { RedisDbconn.Instance.Clear("TotalAmount:" + uid); RedisDbconn.Instance.Clear("TotalAmount:" + uid + ":" + TradeMonth); RedisDbconn.Instance.Clear("TotalCloudPayAmount:" + uid + ":" + TradeMonth); RedisDbconn.Instance.Clear("TotalPosAmount:" + uid + ":" + TradeMonth); RedisDbconn.Instance.Clear("TotalAmount:" + uid + ":*:" + TradeMonth); RedisDbconn.Instance.Clear("TotalAmount:" + uid + ":" + TradeDate); RedisDbconn.Instance.Clear("TotalCloudPayAmount:" + uid + ":" + TradeDate); RedisDbconn.Instance.Clear("TotalPosAmount:" + uid + ":" + TradeDate); RedisDbconn.Instance.Clear("TotalAmount:" + uid + ":*:" + TradeDate); RedisDbconn.Instance.Clear("TeamTotalAmount:" + uid); RedisDbconn.Instance.Clear("TeamTotalAmount:" + uid + ":" + TradeMonth); RedisDbconn.Instance.Clear("TeamTotalCloudPayAmount:" + uid + ":" + TradeMonth); RedisDbconn.Instance.Clear("TeamTotalPosAmount:" + uid + ":" + TradeMonth); RedisDbconn.Instance.Clear("TeamTotalAmount:" + uid + ":*:" + TradeMonth); RedisDbconn.Instance.Clear("TeamTotalAmount:" + uid + ":" + TradeDate); RedisDbconn.Instance.Clear("TeamTotalCloudPayAmount:" + uid + ":" + TradeDate); RedisDbconn.Instance.Clear("TeamTotalPosAmount:" + uid + ":" + TradeDate); RedisDbconn.Instance.Clear("TeamTotalAmount:" + uid + ":*:" + TradeDate); function.WriteLog(uid.ToString(), "清除redis"); Thread.Sleep(200); } } public void ResetTradeRecordUserId() { WebCMSEntities db = new WebCMSEntities(); List posids = new List(); posids.Add(13312); posids.Add(14757); posids.Add(14752); posids.Add(8959); posids.Add(9071); posids.Add(7555); posids.Add(13864); posids.Add(12385); posids.Add(12165); posids.Add(11184); posids.Add(8380); posids.Add(8364); posids.Add(15101); posids.Add(12024); posids.Add(8806); posids.Add(7557); posids.Add(10155); posids.Add(7602); posids.Add(12667); posids.Add(8948); posids.Add(15075); posids.Add(12542); posids.Add(12031); posids.Add(8455); posids.Add(22920); posids.Add(7381); posids.Add(10616); posids.Add(22921); posids.Add(26354); posids.Add(22169); posids.Add(25804); posids.Add(23287); posids.Add(7966); posids.Add(25853); posids.Add(26536); posids.Add(16886); posids.Add(14096); posids.Add(16649); posids.Add(7481); posids.Add(9165); posids.Add(25654); posids.Add(19725); posids.Add(26375); posids.Add(9349); posids.Add(11962); posids.Add(7037); posids.Add(10338); posids.Add(7042); posids.Add(13747); posids.Add(9389); posids.Add(53888); posids.Add(23694); posids.Add(21112); posids.Add(7508); posids.Add(25358); posids.Add(12740); posids.Add(12263); posids.Add(7021); posids.Add(15625); posids.Add(7636); posids.Add(16954); posids.Add(37681); posids.Add(21239); posids.Add(17964); posids.Add(6443); posids.Add(13078); posids.Add(10611); posids.Add(37161); posids.Add(6416); posids.Add(45486); posids.Add(44299); posids.Add(39722); posids.Add(9763); posids.Add(42464); posids.Add(42482); posids.Add(24100); posids.Add(21303); posids.Add(18860); posids.Add(41920); posids.Add(37145); posids.Add(13980); posids.Add(17192); posids.Add(45163); posids.Add(17433); posids.Add(46836); posids.Add(11995); posids.Add(17439); posids.Add(19421); posids.Add(15299); posids.Add(39943); posids.Add(12533); posids.Add(37642); posids.Add(12164); posids.Add(6614); posids.Add(17963); posids.Add(16924); posids.Add(37892); posids.Add(26476); posids.Add(7026); posids.Add(6612); posids.Add(26849); posids.Add(48996); posids.Add(51592); posids.Add(50563); posids.Add(17375); posids.Add(37386); posids.Add(69062); posids.Add(38055); posids.Add(55287); posids.Add(44777); posids.Add(52971); posids.Add(70045); posids.Add(71043); posids.Add(39676); posids.Add(10668); posids.Add(42474); posids.Add(71491); posids.Add(12216); posids.Add(12768); posids.Add(39848); posids.Add(46869); posids.Add(42462); posids.Add(46264); posids.Add(42385); posids.Add(49042); posids.Add(39751); posids.Add(49297); posids.Add(57634); posids.Add(53132); posids.Add(39768); posids.Add(71497); posids.Add(13565); posids.Add(17164); posids.Add(37100); posids.Add(16645); posids.Add(12382); posids.Add(18760); posids.Add(53033); posids.Add(41664); posids.Add(58426); posids.Add(46828); posids.Add(58876); posids.Add(25953); posids.Add(71009); posids.Add(59036); posids.Add(17139); posids.Add(12111); posids.Add(37960); posids.Add(12830); posids.Add(23699); posids.Add(19279); posids.Add(49853); posids.Add(6199); posids.Add(67544); posids.Add(15267); posids.Add(37473); posids.Add(64494); posids.Add(17155); posids.Add(70452); posids.Add(40840); posids.Add(15117); posids.Add(79301); posids.Add(55673); posids.Add(18981); posids.Add(59025); posids.Add(53409); posids.Add(20441); posids.Add(49529); posids.Add(20234); posids.Add(43502); posids.Add(64547); posids.Add(70388); posids.Add(42550); posids.Add(46721); posids.Add(49982); posids.Add(16734); posids.Add(16682); posids.Add(14748); posids.Add(21290); posids.Add(38879); posids.Add(23899); posids.Add(64401); posids.Add(51837); posids.Add(54803); posids.Add(58395); posids.Add(13468); posids.Add(70590); posids.Add(58814); posids.Add(9645); posids.Add(55687); posids.Add(6934); posids.Add(40073); posids.Add(44265); posids.Add(51561); posids.Add(18445); posids.Add(49884); posids.Add(71583); posids.Add(51613); posids.Add(40371); posids.Add(49988); posids.Add(68378); posids.Add(18904); posids.Add(50958); posids.Add(49675); posids.Add(48582); posids.Add(64082); posids.Add(25078); posids.Add(67061); posids.Add(65140); posids.Add(70658); posids.Add(49662); posids.Add(49561); posids.Add(24305); posids.Add(37468); posids.Add(21622); posids.Add(71575); posids.Add(66173); posids.Add(38747); posids.Add(50415); posids.Add(56611); posids.Add(56484); posids.Add(67504); posids.Add(50408); posids.Add(70744); posids.Add(47424); posids.Add(49666); posids.Add(7396); posids.Add(7870); posids.Add(17681); posids.Add(52031); posids.Add(25632); posids.Add(23011); posids.Add(39087); posids.Add(16924); posids.Add(42265); posids.Add(16550); posids.Add(40137); posids.Add(53416); posids.Add(21258); posids.Add(60884); posids.Add(49855); posids.Add(69014); posids.Add(43116); posids.Add(53031); posids.Add(22150); // OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["Pxc1SqlConnStr"].ToString(); foreach (int posid in posids) { PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == posid); if (pos != null) { // OtherMySqlConn.op("update TradeRecord set UserId=" + pos.UserId + " where SnNo='" + pos.PosSn + "'"); // function.WriteLog(DateTime.Now.ToString() + ":" + pos.UserId + "-" + pos.PosSn, "重置非商户型创客交易记录Id"); RedisDbconn.Instance.AddList("TmpResetUserTradeQueue", pos.UserId + "#cut#2022-04-01 00:00:00#cut#2022-05-11 00:00:00#cut#" + pos.BrandId); } } // // OtherMySqlConn.connstr = ; db.Dispose(); } public void StartReset() { Thread th = new Thread(doSomething); th.IsBackground = true; th.Start(); } public void doSomething() { while (true) { string content = RedisDbconn.Instance.RPop("TmpResetUserTradeQueue"); if (!string.IsNullOrEmpty(content)) { try { OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["Pxc1SqlConnStr"].ToString(); WebCMSEntities db = new WebCMSEntities(); string[] datalist = content.Split(new string[] { "#cut#" }, StringSplitOptions.None); int UserId = int.Parse(datalist[0]); DateTime sdate = DateTime.Parse(datalist[1]); DateTime edate = DateTime.Parse(datalist[2]); int BrandId = int.Parse(datalist[3]); function.WriteLog(DateTime.Now.ToString(), "重置创客交易额"); List uids = new List(); DataTable userDt = OtherMySqlConn.dtable("select Id,ParentNav from Users where Id=" + UserId); if (userDt.Rows.Count > 0) { while (sdate <= edate) { string date = sdate.ToString("yyyy-MM-dd"); string TradeDate = date.Replace("-", ""); string TradeMonth = TradeDate.Substring(0, 6); string start = date + " 00:00:00"; string end = DateTime.Parse(date).AddDays(1).ToString("yyyy-MM-dd") + " 00:00:00"; string startId = "0", endId = "9999999999"; DataTable startDt = OtherMySqlConn.dtable("select min(Id) from TradeRecord where CreateDate>='" + start + "'"); if (startDt.Rows.Count > 0) { startId = startDt.Rows[0][0].ToString(); } DataRow userDr = userDt.Rows[0]; string ParentNav = userDr["ParentNav"].ToString(); function.WriteLog(UserId + ":" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "执行昨天交易额日志"); OtherMySqlConn.op("delete from UserTradeDaySummary where UserId=" + UserId + " and BrandId=" + BrandId + " and TradeMonth='" + TradeMonth + "' and TradeDate='" + TradeDate + "' and SeoTitle='self'"); DataTable selfdt = OtherMySqlConn.dtable("select BrandId,BankCardType,QrPayFlag,sum(TradeAmount) from TradeRecord where Id>=" + startId + " and Id<=" + endId + " and CreateDate>='" + start + "' and CreateDate<'" + end + "' and UserId=" + UserId + " and BrandId=" + BrandId + " group by BrandId,BankCardType,QrPayFlag"); function.WriteLog(UserId + ":" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "执行昨天交易额日志"); foreach (DataRow selfDr in selfdt.Rows) { int BankCardType = int.Parse(selfDr["BankCardType"].ToString()); int QrPayFlag = int.Parse(selfDr["QrPayFlag"].ToString()); decimal TradeAmount = decimal.Parse(selfDr[3].ToString()); UserTradeDaySummary selfStat = db.UserTradeDaySummary.FirstOrDefault(m => m.UserId == UserId && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.BrandId == BrandId && m.QueryCount == QrPayFlag && m.SeoTitle == "self"); if (selfStat == null) { selfStat = db.UserTradeDaySummary.Add(new UserTradeDaySummary() { UserId = UserId, TradeMonth = TradeMonth, TradeDate = TradeDate, BrandId = BrandId, QueryCount = QrPayFlag, SeoTitle = "self", }).Entity; db.SaveChanges(); } if (BankCardType == 0) { selfStat.DirectDebitTradeAmt += TradeAmount; } else if (BankCardType != 0) { selfStat.DirectTradeAmt += TradeAmount; } db.SaveChanges(); } // RedisDbconn.Instance.Clear("TotalAmount:" + UserId); // RedisDbconn.Instance.Clear("TotalAmount:" + UserId + ":" + TradeMonth); // RedisDbconn.Instance.Clear("TotalCloudPayAmount:" + UserId + ":" + TradeMonth); // RedisDbconn.Instance.Clear("TotalPosAmount:" + UserId + ":" + TradeMonth); // RedisDbconn.Instance.Clear("TotalAmount:" + UserId + ":*:" + TradeMonth); // RedisDbconn.Instance.Clear("TotalAmount:" + UserId + ":" + TradeDate); // RedisDbconn.Instance.Clear("TotalCloudPayAmount:" + UserId + ":" + TradeDate); // RedisDbconn.Instance.Clear("TotalPosAmount:" + UserId + ":" + TradeDate); // RedisDbconn.Instance.Clear("TotalAmount:" + UserId + ":*:" + TradeDate); if (!string.IsNullOrEmpty(ParentNav)) { ParentNav += "," + UserId + ","; string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(','); foreach (string NavUserIdString in ParentNavList) { if (!uids.Contains(NavUserIdString + start)) { uids.Add(NavUserIdString + start); int NavUserId = int.Parse(NavUserIdString); function.WriteLog(NavUserId + ":" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "执行昨天交易额日志"); OtherMySqlConn.op("delete from UserTradeDaySummary where UserId=" + NavUserId + " and BrandId=" + BrandId + " and TradeMonth='" + TradeMonth + "' and TradeDate='" + TradeDate + "' and SeoTitle='team'"); DataTable teamDt = OtherMySqlConn.dtable("select BrandId,BankCardType,QrPayFlag,sum(TradeAmount) from TradeRecord where Id>=" + startId + " and Id<=" + endId + " and CreateDate>='" + start + "' and CreateDate<'" + end + "' and UserId in (select Id from Users where ParentNav like '%," + NavUserId + ",%' or Id=" + NavUserId + ") and BrandId=" + BrandId + " group by BrandId,BankCardType,QrPayFlag"); function.WriteLog(NavUserId + ":" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "执行昨天交易额日志"); foreach (DataRow teamDr in teamDt.Rows) { int BankCardType = int.Parse(teamDr["BankCardType"].ToString()); int QrPayFlag = int.Parse(teamDr["QrPayFlag"].ToString()); decimal TradeAmount = decimal.Parse(teamDr[3].ToString()); UserTradeDaySummary teamStat = db.UserTradeDaySummary.FirstOrDefault(m => m.UserId == NavUserId && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.BrandId == BrandId && m.QueryCount == QrPayFlag && m.SeoTitle == "team"); if (teamStat == null) { teamStat = db.UserTradeDaySummary.Add(new UserTradeDaySummary() { UserId = NavUserId, TradeMonth = TradeMonth, TradeDate = TradeDate, BrandId = BrandId, QueryCount = QrPayFlag, SeoTitle = "team", }).Entity; db.SaveChanges(); } if (BankCardType == 0) { teamStat.NonDirectDebitTradeAmt += TradeAmount; } else if (BankCardType != 0) { teamStat.NonDirectTradeAmt += TradeAmount; } db.SaveChanges(); } // RedisDbconn.Instance.Clear("TeamTotalAmount:" + NavUserId); // RedisDbconn.Instance.Clear("TeamTotalAmount:" + NavUserId + ":" + TradeMonth); // RedisDbconn.Instance.Clear("TeamTotalCloudPayAmount:" + NavUserId + ":" + TradeMonth); // RedisDbconn.Instance.Clear("TeamTotalPosAmount:" + NavUserId + ":" + TradeMonth); // RedisDbconn.Instance.Clear("TeamTotalAmount:" + NavUserId + ":*:" + TradeMonth); // RedisDbconn.Instance.Clear("TeamTotalAmount:" + NavUserId + ":" + TradeDate); // RedisDbconn.Instance.Clear("TeamTotalCloudPayAmount:" + NavUserId + ":" + TradeDate); // RedisDbconn.Instance.Clear("TeamTotalPosAmount:" + NavUserId + ":" + TradeDate); // RedisDbconn.Instance.Clear("TeamTotalAmount:" + NavUserId + ":*:" + TradeDate); } } } sdate = sdate.AddDays(1); Thread.Sleep(200); } } db.Dispose(); function.WriteLog(DateTime.Now.ToString() + "\r\n\r\n", "重置创客交易额"); } catch (Exception ex) { function.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "重置创客交易额异常"); } } else { Thread.Sleep(5000); } } } } }