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 StatHelpProfitService { public readonly static StatHelpProfitService Instance = new StatHelpProfitService(); private StatHelpProfitService() { } // 统计交易额V2 public void StartEverDayV2() { Thread th = new Thread(StartEverDayV2Do); th.IsBackground = true; th.Start(); } public void StartEverDayV2Do() { while (true) { if(DateTime.Now.Hour >= 3) { StatTradeAmountEverDayV2(); } Thread.Sleep(30000); } } public void StatTradeAmountEverDayV2() { OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString(); function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "实时执行助利宝交易额日志"); WebCMSEntities db = new WebCMSEntities(); using (var tran = db.Database.BeginTransaction()) { try { string startId = function.ReadInstance("/TradeRecord/Id3.txt"); if(string.IsNullOrEmpty(startId)) { startId = "2750000"; } DataTable idsDt = OtherMySqlConn.dtable("select Id from TradeRecord where Id>=" + startId + " and CreateDate>='2022-09-05 00:00:00' and MerchantId in (select MerchantId from HelpProfitMerIds) and SeoTitle='HelpProfit' and QueryCount>0 and QueryCount<3 order by Id limit 50"); if(idsDt.Rows.Count > 0) { string ids = ""; foreach (DataRow idsDr in idsDt.Rows) { ids += idsDr["Id"].ToString() + ","; startId = idsDr["Id"].ToString(); } DataTable selfDt = OtherMySqlConn.dtable("select MerchantId,DATE_FORMAT(CreateDate,'%Y%m%d'),sum(TradeAmount) from TradeRecord where Id in (" + ids.TrimEnd(',') + ") group by MerchantId,DATE_FORMAT(CreateDate,'%Y%m%d')"); if (selfDt.Rows.Count > 0) { function.WriteLog("统计人数:" + selfDt.Rows.Count + "\n\n", "实时执行助利宝交易额日志"); foreach (DataRow selfDr in selfDt.Rows) { int MerchantId = int.Parse(selfDr["MerchantId"].ToString()); string TradeDate = selfDr[1].ToString(); decimal TradeAmount = decimal.Parse(selfDr[2].ToString()); string TradeMonth = TradeDate.Substring(0, 6); HelpProfitMerTradeSummay selfStat = db.HelpProfitMerTradeSummay.FirstOrDefault(m => m.MerchantId == MerchantId && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate); if (selfStat == null) { selfStat = db.HelpProfitMerTradeSummay.Add(new HelpProfitMerTradeSummay() { TradeMonth = TradeMonth, TradeDate = TradeDate, MerchantId = MerchantId, }).Entity; db.SaveChanges(); } selfStat.TradeAmount += TradeAmount * 1.01M; } OtherMySqlConn.op("update TradeRecord set QueryCount=3 where Id in (" + ids.TrimEnd(',') + ")"); function.WritePage("/TradeRecord/", "Id3.txt", startId); } db.SaveChanges(); } tran.Commit(); } catch (Exception ex) { tran.Rollback(); function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "实时执行助利宝交易额异常"); } } db.Dispose(); function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "实时执行助利宝交易额日志"); } } }