using System; using System.Collections.Generic; using Library; using LitJson; using System.Linq; using System.Data; using MySystem.PxcModels; namespace MySystem { public class StatService { public readonly static StatService Instance = new StatService(); private StatService() { } public void Start(JobMqMsg jobInfo) { string content = ""; try { string doDate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"); string flag = function.ReadInstance("/Stat/" + doDate + ".txt"); if (string.IsNullOrEmpty(flag)) { function.WritePage("/Stat/", doDate + ".txt", DateTime.Now.ToString("HH:mm:ss")); dosomething(doDate); } string Msg = "success"; jobInfo.Status = Msg == "success" ? 1 : 0; jobInfo.Msg = Msg == "success" ? "执行完成" : Msg; RabbitMQClient.Instance.SendMsg(Newtonsoft.Json.JsonConvert.SerializeObject(jobInfo), "PublicBack"); } catch (Exception ex) { if (!string.IsNullOrEmpty(content)) { Dictionary data = new Dictionary(); data.Add("ErrTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); data.Add("ErrMsg", ex.ToString()); function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(data), "public_err"); } else { function.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "public_service"); } } } public void clear() { RedisDbconn.Instance.Clear("TotalAmount*"); RedisDbconn.Instance.Clear("TotalCloudPayAmount*"); RedisDbconn.Instance.Clear("TotalPosAmount*"); RedisDbconn.Instance.Clear("TeamTotalAmount*"); RedisDbconn.Instance.Clear("TeamTotalCloudPayAmount*"); RedisDbconn.Instance.Clear("TeamTotalPosAmount*"); RedisDbconn.Instance.Clear("TotalUser*"); RedisDbconn.Instance.Clear("TeamTotalUser*"); RedisDbconn.Instance.Clear("AddUser*"); RedisDbconn.Instance.Clear("TeamAddUser*"); RedisDbconn.Instance.Clear("TotalPosMerchant*"); RedisDbconn.Instance.Clear("TeamTotalPosMerchant*"); RedisDbconn.Instance.Clear("MerTotalAmount*"); } public void dosomething(string date) { WebCMSEntities db = new WebCMSEntities(); string yesterday = date + " 00:00:00"; string today = DateTime.Parse(date).AddDays(1).ToString("yyyy-MM-dd") + " 00:00:00"; string TradeMonth = DateTime.Parse(date).ToString("yyyyMM"); string TradeDate = DateTime.Parse(date).ToString("yyyyMMdd"); DataTable dt = dbconn.dtable("select UserId,BrandId,MerchantId,QrPayFlag,sum(TradeAmount) from TradeRecord where CreateDate>='" + yesterday + "' and CreateDate<'" + today + "' group by UserId,BrandId,MerchantId,QrPayFlag"); foreach (DataRow dr in dt.Rows) { int UserId = int.Parse(dr["UserId"].ToString()); //创客ID int BrandId = int.Parse(dr["BrandId"].ToString()); //品牌 int MerchantId = int.Parse(dr["MerchantId"].ToString()); //商户Id int QrPayFlag = int.Parse(dr["QrPayFlag"].ToString()); //云闪付 decimal TradeAmount = decimal.Parse(dr[4].ToString()); //当日交易额 RedisDbconn.Instance.AddNumber("MerTotalAmount:" + MerchantId, TradeAmount); RedisDbconn.Instance.AddNumber("MerTotalAmount:" + MerchantId + ":" + TradeMonth, TradeAmount); //商户当月交易 RedisDbconn.Instance.AddNumber("MerTotalAmount:" + MerchantId + ":" + TradeDate, TradeAmount); //商户当日交易 int Level = 0; while (UserId > 0) { Level += 1; Users user = db.Users.FirstOrDefault(m => m.Id == UserId); if (user != null) { if (user.AuthFlag == 1) { if (Level == 1) { RedisDbconn.Instance.AddNumber("TotalAmount:" + UserId, TradeAmount); //总交易 RedisDbconn.Instance.AddNumber("TotalAmount:" + UserId + ":" + TradeDate, TradeAmount); //总交易 RedisDbconn.Instance.AddNumber("TotalAmount:" + UserId + ":" + TradeMonth, TradeAmount); //总交易 RedisDbconn.Instance.AddNumber("TotalAmount:" + UserId + ":" + BrandId + ":" + TradeDate, TradeAmount); //总交易 RedisDbconn.Instance.AddNumber("TotalAmount:" + UserId + ":" + BrandId + ":" + TradeMonth, TradeAmount); //总交易 if (QrPayFlag == 1) { RedisDbconn.Instance.AddNumber("TotalCloudPayAmount:" + UserId + ":" + TradeDate, TradeAmount); //云闪付小额交易额 RedisDbconn.Instance.AddNumber("TotalCloudPayAmount:" + UserId + ":" + TradeMonth, TradeAmount); //云闪付小额交易额 } else { RedisDbconn.Instance.AddNumber("TotalPosAmount:" + UserId + ":" + TradeDate, TradeAmount); //POS机刷卡交易额 RedisDbconn.Instance.AddNumber("TotalPosAmount:" + UserId + ":" + TradeMonth, TradeAmount); //POS机刷卡交易额 } } RedisDbconn.Instance.AddNumber("TeamTotalAmount:" + UserId, TradeAmount); //总交易 RedisDbconn.Instance.AddNumber("TeamTotalAmount:" + UserId + ":" + TradeDate, TradeAmount); //总交易 RedisDbconn.Instance.AddNumber("TeamTotalAmount:" + UserId + ":" + TradeMonth, TradeAmount); //总交易 RedisDbconn.Instance.AddNumber("TeamTotalAmount:" + UserId + ":" + BrandId + ":" + TradeDate, TradeAmount); //总交易 RedisDbconn.Instance.AddNumber("TeamTotalAmount:" + UserId + ":" + BrandId + ":" + TradeMonth, TradeAmount); //总交易 if (QrPayFlag == 1) { RedisDbconn.Instance.AddNumber("TeamTotalCloudPayAmount:" + UserId + ":" + TradeDate, TradeAmount); //云闪付小额交易额 RedisDbconn.Instance.AddNumber("TeamTotalCloudPayAmount:" + UserId + ":" + TradeMonth, TradeAmount); //云闪付小额交易额 } else { RedisDbconn.Instance.AddNumber("TeamTotalPosAmount:" + UserId + ":" + TradeDate, TradeAmount); //POS机刷卡交易额 RedisDbconn.Instance.AddNumber("TeamTotalPosAmount:" + UserId + ":" + TradeMonth, TradeAmount); //POS机刷卡交易额 } } UserId = user.ParentUserId; } } } db.Dispose(); } } }