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 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")); // dosomething1(doDate); // dosomething11(doDate); // dosomething2(doDate); StartEverDay(doDate); // StartEverDayV2(doDate); StatMerchantTrade(doDate); dosomething4(doDate); ListenFluxRecord(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 ActiveReward(JobMqMsg jobInfo) { string content = ""; try { dosomething3(); activePrizeWithoutDeposit(); string Msg = "success"; jobInfo.Status = Msg == "success" ? 1 : 0; jobInfo.Msg = Msg == "success" ? "执行完成" : Msg; RabbitMQClient.Instance.SendMsg(Newtonsoft.Json.JsonConvert.SerializeObject(jobInfo), "PublicBack"); function.WritePage("/static/", "act.txt", DateTime.Now.ToString()); } 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*"); } // 1. 前一天的绑定记录和创客信息匹配,设置商户型创客 public void dosomething1(string date) { // TODO: 每天扫描非商户型创客的持有机具数量 SpModels.WebCMSEntities spdb = new SpModels.WebCMSEntities(); WebCMSEntities db = new WebCMSEntities(); DateTime yesterday = DateTime.Parse(date + " 00:00:00"); DateTime today = DateTime.Parse(DateTime.Parse(date).AddDays(1).ToString("yyyy-MM-dd") + " 00:00:00"); List binds = spdb.BindRecord.Where(m => m.CreateTime >= yesterday && m.CreateTime < today).ToList(); foreach (SpModels.BindRecord bind in binds) { string Mobile = bind.MerNewSnNo; string MerNo = bind.MerNo; string BeforeNum = ""; string AfterNum = ""; if (Mobile.Contains("****") && Mobile.Length == 11) { BeforeNum = Mobile.Substring(0, 3); AfterNum = Mobile.Substring(7); } string Name = bind.MerName; if (bind.ProductType == "2") { if (Name.Contains("-")) { Name = Name.Split('-')[1]; } else if (Name.Contains("_")) { Name = Name.Split('_')[1]; } } else if (bind.ProductType == "4") { Name = bind.SeoTitle; } PxcModels.Users user = db.Users.FirstOrDefault(m => m.Mobile.StartsWith(BeforeNum) && m.Mobile.EndsWith(AfterNum) && m.RealName == Name && m.AuthFlag == 1 && m.MerchantType == 0); if (user != null) { bool checkPos = db.PosMachinesTwo.Any(m => m.UserId == user.Id); if (!checkPos) { PxcModels.MachineForSnNo forSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == bind.MerSnNo) ?? new PxcModels.MachineForSnNo(); PxcModels.PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == forSnNo.SnId && m.UserId != user.Id); if (pos != null) { pos.UserId = user.Id; user.MerchantType = 1; PxcModels.PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.KqMerNo == MerNo) ?? new PxcModels.PosMerchantInfo(); merchant.UserId = user.Id; merchant.MerUserType = 1; pos.SeoTitle = user.Id.ToString(); // 记录商户型创客的Id RedisDbconn.Instance.Set("PosMachinesTwo:" + pos.Id, pos); db.SaveChanges(); RedisDbconn.Instance.Set("Users:" + user.Id, user); RedisDbconn.Instance.Set("PosMerchantInfo:" + merchant.Id, merchant); } } } } spdb.Dispose(); db.Dispose(); } // 1. 前一天的商户型创客,判断名下是否3台激活机器,是则变为非商户型创客 public void dosomething11(string date) { WebCMSEntities db = new WebCMSEntities(); DateTime yesterday = DateTime.Parse(date + " 00:00:00"); DateTime today = DateTime.Parse(DateTime.Parse(date).AddDays(1).ToString("yyyy-MM-dd") + " 00:00:00"); var users = db.Users.Select(m => new { m.Id, m.MerchantType }).Where(m => m.MerchantType == 1).ToList(); foreach (var user in users) { int machineCount = db.PosMachinesTwo.Count(m => m.UserId == user.Id && m.PosSnType == 0); int couponCount = db.PosCoupons.Count(m => m.UserId == user.Id && m.IsUse == 0); //判断是否拥有3张券 if (machineCount + couponCount >= 3) { Users edit = db.Users.FirstOrDefault(m => m.Id == user.Id); if (edit != null) { edit.MerchantType = 0; db.SaveChanges(); RedisDbconn.Instance.Set("Users:" + user.Id, edit); } } } db.Dispose(); } public void testStatTrade(string date) { 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,BankCardType,QrPayFlag,sum(TradeAmount) from TradeRecord where CreateDate>='" + yesterday + "' and CreateDate<'" + today + "' group by UserId,BrandId,MerchantId,BankCardType,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 BankCardType = int.Parse(dr["BankCardType"].ToString()); //卡类型 int QrPayFlag = int.Parse(dr["QrPayFlag"].ToString()); //云闪付 decimal TradeAmount = decimal.Parse(dr[5].ToString()); //当日交易额 string content = "{"; content += "\"DateString\":\"" + date + "\","; content += "\"UserId\":\"" + UserId + "\","; content += "\"BrandId\":\"" + BrandId + "\","; content += "\"MerchantId\":\"" + MerchantId + "\","; content += "\"BankCardType\":\"" + BankCardType + "\","; content += "\"QrPayFlag\":\"" + QrPayFlag + "\","; content += "\"TradeAmount\":\"" + TradeAmount + "\""; content += "}"; RedisDbconn.Instance.AddList("TradeStatQueueTest", content); } } // 3. 前一天的激活记录,根据创客类型,如果是商户型创客,则激活奖励的起始人从此人上级计算。如果不是,则从此人开始计算 public void dosomething3(int posid = 0) { WebCMSEntities db = new WebCMSEntities(); DateTime yesterday = DateTime.Now.AddDays(-1); DateTime today = DateTime.Now; IQueryable posList = db.PosMachinesTwo.Where(m => m.ActivationState == 1 && !string.IsNullOrEmpty(m.SeoKeyword)); if (posid > 0) { posList = posList.Where(m => m.Id == posid); } else { posList = posList.Where(m => m.ActivationTime >= yesterday && m.ActivationTime < today); } foreach (PosMachinesTwo pos in posList.ToList()) { // PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId && !string.IsNullOrEmpty(m.MerIdcardNo)); // PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId && m.Sort == 1); PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId); if (merchant != null) { // PosMerchantOtherInfo otherInfo = db.PosMerchantOtherInfo.FirstOrDefault(m => m.CertId == merchant.MerIdcardNo && m.PrizeFlag1 == 0); // if (otherInfo != null) // { // otherInfo.PrizeFlag1 = 1; // db.SaveChanges(); string ParentNav = ""; Users user = db.Users.FirstOrDefault(m => m.Id == pos.BuyUserId); if (user != null) { int GetUserId = user.Id; ParentNav = user.ParentNav; int TopUserId = 0; if (!string.IsNullOrEmpty(ParentNav)) { TopUserId = int.Parse(ParentNav.Trim(',').Replace(",,", ",").Split(',')[0]); } decimal ActPrize = decimal.Parse(function.CheckNum(pos.SeoKeyword)); if (pos.BrandId == 1 || pos.BrandId == 3 || pos.BrandId == 4 || pos.BrandId == 5 || pos.BrandId == 6 || pos.BrandId == 8 || pos.BrandId == 9) { ActPrize = ActPrize / 100; } if (ActPrize > 0) { if (ActPrize == 99) { ActPrize = 100; } else if (ActPrize == 199) { ActPrize = 200; } else if (ActPrize == 299) { ActPrize = 300; } else if (ActPrize == 249) { ActPrize = 260; } if (GetUserId > 0) { doActiveReward(db, merchant, pos, GetUserId, ParentNav, TopUserId, ActPrize); } } else if(pos.BrandId == 6 && ActPrize == 0) { doActiveReward(db, merchant, pos, GetUserId, ParentNav, TopUserId, 50); } } // } } } db.Dispose(); } public void activePrizeWithoutDeposit(int posid = 0) { WebCMSEntities db = new WebCMSEntities(); DateTime yesterday = DateTime.Now.AddDays(-1); DateTime today = DateTime.Now; IQueryable posList = db.PosMachinesTwo.Where(m => m.ActivationState == 1 && string.IsNullOrEmpty(m.SeoKeyword)); if (posid > 0) { posList = posList.Where(m => m.Id == posid); } else { posList = posList.Where(m => m.ActivationTime >= yesterday && m.ActivationTime < today); } foreach (PosMachinesTwo pos in posList.ToList()) { PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId); if (merchant != null) { string ParentNav = ""; Users user = db.Users.FirstOrDefault(m => m.Id == pos.BuyUserId); if (user != null) { int GetUserId = user.Id; ParentNav = user.ParentNav; int TopUserId = 0; if (!string.IsNullOrEmpty(ParentNav)) { TopUserId = int.Parse(ParentNav.Trim(',').Replace(",,", ",").Split(',')[0]); } if(pos.BrandId == 6) { doActiveReward(db, merchant, pos, GetUserId, ParentNav, TopUserId, 50); } } } } db.Dispose(); } public void doActiveReward(WebCMSEntities db, PosMerchantInfo merchant, PosMachinesTwo pos, int GetUserId, string ParentNav, int TopUserId, decimal ActPrize, int ChangeType = 0) { bool check = db.ActiveReward.Any(m => m.KqMerNo == merchant.KqMerNo && m.RewardAmount == ActPrize); if (!check) { Users machineUser = db.Users.FirstOrDefault(m => m.Id == pos.BuyUserId) ?? new Users(); db.ActiveReward.Add(new ActiveReward() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, UserId = GetUserId, //创客 MerchantId = pos.BindMerchantId, //商户 StandardDate = pos.ActivationTime, //达标日期 RewardAmount = ActPrize, //奖励金额 BrandId = pos.BrandId, //品牌 UserNav = ParentNav, //创客父级 DirectBuddyNo = merchant.UserId, //商户直属创客 KqMerNo = merchant.KqMerNo, //渠道商户编号 KqSnNo = pos.PosSn, //渠道SN号 SnType = pos.PosSnType, //机具类型 SnApplyUserId = pos.BuyUserId, //机具申请创客 ActType = 0, //激活类型 SnStoreId = pos.StoreId, //SN仓库 RewardTips = "激活奖励", //奖励描述 Remark = "激活奖励", //备注 ActDate = pos.ActivationTime, //激活时间 TopUserId = TopUserId, //顶级创客 SeoTitle = machineUser.RealName, }); db.SaveChanges(); string IdBrand = GetUserId + "_" + pos.BrandId; UserMachineData userData = db.UserMachineData.FirstOrDefault(m => m.IdBrand == IdBrand); if (userData == null) { userData = db.UserMachineData.Add(new UserMachineData() { IdBrand = IdBrand, }).Entity; db.SaveChanges(); } userData.ActProfit += ActPrize; db.SaveChanges(); RedisDbconn.Instance.Set("UserMachineData:" + IdBrand, userData); UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == GetUserId); if (account == null) { account = db.UserAccount.Add(new UserAccount() { Id = GetUserId, UserId = GetUserId, }).Entity; db.SaveChanges(); } decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额 decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额 decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额 account.BalanceAmount += ActPrize; account.TotalAmount += ActPrize; decimal AfterTotalAmount = account.TotalAmount; //变更后总金额 decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额 decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额 UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, UserId = GetUserId, //创客 ChangeType = ChangeType, //变动类型 ProductType = pos.BrandId, //产品类型 ChangeAmount = ActPrize, //变更金额 BeforeTotalAmount = BeforeTotalAmount, //变更前总金额 AfterTotalAmount = AfterTotalAmount, //变更后总金额 BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额 AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额 BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额 AfterBalanceAmount = AfterBalanceAmount, //变更后余额 }).Entity; db.SaveChanges(); RedisDbconn.Instance.Set("UserAccount:" + GetUserId, account); string dateString = pos.ActivationTime.Value.ToString("yyyyMMdd"); string monthString = pos.ActivationTime.Value.ToString("yyyyMM"); // 激活奖励列表 List dates = RedisDbconn.Instance.GetList("ActiveRewardDay:" + GetUserId + ":" + pos.BrandId); if (!dates.Contains(dateString)) { RedisDbconn.Instance.AddList("ActiveRewardDay:" + GetUserId + ":" + pos.BrandId, dateString); } RedisDbconn.Instance.AddNumber("ActiveRewardAmt:" + GetUserId + ":" + pos.BrandId + ":" + dateString, ActPrize); List months = RedisDbconn.Instance.GetList("ActiveRewardMonth:" + GetUserId + ":" + pos.BrandId); if (!months.Contains(monthString)) { RedisDbconn.Instance.AddList("ActiveRewardMonth:" + GetUserId + ":" + pos.BrandId, monthString); } RedisDbconn.Instance.AddNumber("ActiveRewardAmt:" + GetUserId + ":" + pos.BrandId + ":" + monthString, ActPrize); // 激活奖励详情 List actPrizeList = RedisDbconn.Instance.GetList("ActiveRewardDetail:" + GetUserId + ":" + pos.BrandId + ":" + dateString); if (!actPrizeList.Contains(pos.BindMerchantId)) { RedisDbconn.Instance.AddList("ActiveRewardDetail:" + GetUserId + ":" + pos.BrandId + ":" + dateString, pos.BindMerchantId); } RedisDbconn.Instance.AddNumber("ActiveRewardAmt:mer:" + pos.BindMerchantId + ":" + pos.BrandId + ":" + dateString, ActPrize); //收支明细 RedisDbconn.Instance.AddList("UserAccountRecord:" + GetUserId + ":1:" + monthString, userAccountRecord); RedisDbconn.Instance.AddNumber("UserAccount:" + GetUserId + ":1:" + monthString, ActPrize); RedisDbconn.Instance.Clear("UserAccount:Income:" + GetUserId + ":" + monthString); } } //根据商户信息发放激活奖励 public void dosomething32(int merid = 0) { WebCMSEntities db = new WebCMSEntities(); DateTime yesterday = DateTime.Now.AddHours(-3); DateTime today = DateTime.Now; IQueryable merList = db.PosMerchantInfo.Where(m => m.ActiveStatus == 1 && !string.IsNullOrEmpty(m.SeoKeyword)); if (merid > 0) { merList = merList.Where(m => m.Id == merid); } else { merList = merList.Where(m => m.MerStandardDate >= yesterday && m.MerStandardDate < today); } foreach (PosMerchantInfo merchant in merList.ToList()) { // PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId && !string.IsNullOrEmpty(m.MerIdcardNo)); // PosMerchantOtherInfo otherInfo = db.PosMerchantOtherInfo.FirstOrDefault(m => m.CertId == merchant.MerIdcardNo && m.PrizeFlag1 == 0); // if (otherInfo != null) // { // otherInfo.PrizeFlag1 = 1; // db.SaveChanges(); MachineForMerNo forMerNo = db.MachineForMerNo.FirstOrDefault(m => m.MerNo == merchant.MerchantNo) ?? new MachineForMerNo(); PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == forMerNo.SnId) ?? new PosMachinesTwo(); string ParentNav = ""; Users user = db.Users.FirstOrDefault(m => m.Id == pos.BuyUserId); if (user != null) { int GetUserId = user.Id; ParentNav = user.ParentNav; int TopUserId = 0; if (!string.IsNullOrEmpty(ParentNav)) { TopUserId = int.Parse(ParentNav.Trim(',').Replace(",,", ",").Split(',')[0]); } decimal ActPrize = decimal.Parse(function.CheckNum(merchant.SeoKeyword)); if (pos.BrandId == 1 || pos.BrandId == 3 || pos.BrandId == 4 || pos.BrandId == 5 || pos.BrandId == 6 || pos.BrandId == 8 || pos.BrandId == 9) { ActPrize = ActPrize / 100; } if (ActPrize > 0) { bool check = db.ActiveReward.Any(m => m.KqSnNo == pos.PosSn); if (!check) { if (ActPrize == 99) { ActPrize = 100; } else if (ActPrize == 199) { ActPrize = 200; } else if (ActPrize == 299) { ActPrize = 300; } Users machineUser = db.Users.FirstOrDefault(m => m.Id == pos.BuyUserId) ?? new Users(); db.ActiveReward.Add(new ActiveReward() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, UserId = GetUserId, //创客 MerchantId = pos.BindMerchantId, //商户 StandardDate = pos.ActivationTime, //达标日期 RewardAmount = ActPrize, //奖励金额 BrandId = pos.BrandId, //品牌 UserNav = ParentNav, //创客父级 DirectBuddyNo = merchant.UserId, //商户直属创客 KqMerNo = merchant.KqMerNo, //渠道商户编号 KqSnNo = pos.PosSn, //渠道SN号 SnType = pos.PosSnType, //机具类型 SnApplyUserId = pos.BuyUserId, //机具申请创客 ActType = 0, //激活类型 SnStoreId = pos.StoreId, //SN仓库 RewardTips = "激活奖励", //奖励描述 Remark = "激活奖励", //备注 ActDate = pos.ActivationTime, //激活时间 TopUserId = TopUserId, //顶级创客 SeoTitle = machineUser.RealName, }); db.SaveChanges(); string IdBrand = GetUserId + "_" + pos.BrandId; UserMachineData userData = db.UserMachineData.FirstOrDefault(m => m.IdBrand == IdBrand); if (userData == null) { userData = db.UserMachineData.Add(new UserMachineData() { IdBrand = IdBrand, }).Entity; db.SaveChanges(); } userData.ActProfit += ActPrize; db.SaveChanges(); RedisDbconn.Instance.Set("UserMachineData:" + IdBrand, userData); UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == GetUserId); if (account == null) { account = db.UserAccount.Add(new UserAccount() { Id = GetUserId, UserId = GetUserId, }).Entity; db.SaveChanges(); } decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额 decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额 decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额 account.BalanceAmount += ActPrize; account.TotalAmount += ActPrize; decimal AfterTotalAmount = account.TotalAmount; //变更后总金额 decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额 decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额 UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, UserId = GetUserId, //创客 ChangeType = 0, //变动类型 ProductType = pos.BrandId, //产品类型 ChangeAmount = ActPrize, //变更金额 BeforeTotalAmount = BeforeTotalAmount, //变更前总金额 AfterTotalAmount = AfterTotalAmount, //变更后总金额 BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额 AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额 BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额 AfterBalanceAmount = AfterBalanceAmount, //变更后余额 }).Entity; db.SaveChanges(); RedisDbconn.Instance.Set("UserAccount:" + GetUserId, account); string dateString = pos.ActivationTime.Value.ToString("yyyyMMdd"); string monthString = pos.ActivationTime.Value.ToString("yyyyMM"); // 激活奖励列表 List dates = RedisDbconn.Instance.GetList("ActiveRewardDay:" + GetUserId + ":" + pos.BrandId); if (!dates.Contains(dateString)) { RedisDbconn.Instance.AddList("ActiveRewardDay:" + GetUserId + ":" + pos.BrandId, dateString); } RedisDbconn.Instance.AddNumber("ActiveRewardAmt:" + GetUserId + ":" + pos.BrandId + ":" + dateString, ActPrize); List months = RedisDbconn.Instance.GetList("ActiveRewardMonth:" + GetUserId + ":" + pos.BrandId); if (!months.Contains(monthString)) { RedisDbconn.Instance.AddList("ActiveRewardMonth:" + GetUserId + ":" + pos.BrandId, monthString); } RedisDbconn.Instance.AddNumber("ActiveRewardAmt:" + GetUserId + ":" + pos.BrandId + ":" + monthString, ActPrize); // 激活奖励详情 List actPrizeList = RedisDbconn.Instance.GetList("ActiveRewardDetail:" + GetUserId + ":" + pos.BrandId + ":" + dateString); if (!actPrizeList.Contains(pos.BindMerchantId)) { RedisDbconn.Instance.AddList("ActiveRewardDetail:" + GetUserId + ":" + pos.BrandId + ":" + dateString, pos.BindMerchantId); } RedisDbconn.Instance.AddNumber("ActiveRewardAmt:mer:" + pos.BindMerchantId + ":" + pos.BrandId + ":" + dateString, ActPrize); //收支明细 RedisDbconn.Instance.AddList("UserAccountRecord:" + GetUserId + ":1:" + monthString, userAccountRecord); RedisDbconn.Instance.AddNumber("UserAccount:" + GetUserId + ":1:" + monthString, ActPrize); } } } // } } db.Dispose(); } //3. 前一天的激活记录,根据创客类型,如果是商户型创客,则开机奖励的起始人从此人上级计算。如果不是,则从此人开始计算 public void dosomething4(string date) { WebCMSEntities db = new WebCMSEntities(); DateTime yesterday = DateTime.Parse(date + " 00:00:00"); DateTime today = DateTime.Parse(DateTime.Parse(date).AddDays(1).ToString("yyyy-MM-dd") + " 00:00:00"); List posList = db.PosMachinesTwo.Where(m => m.ActivationState == 1 && m.ActivationTime >= yesterday && m.ActivationTime < today && !string.IsNullOrEmpty(m.SeoKeyword) && m.SeoKeyword != "0" && m.CreditTrade >= 1000).ToList(); foreach (PosMachinesTwo pos in posList) { if (pos.BindingTime > DateTime.Now.AddDays(-30)) { decimal ActPrize = decimal.Parse(function.CheckNum(pos.SeoKeyword)); if (ActPrize > 0) { // PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId && !string.IsNullOrEmpty(m.MerIdcardNo)); // PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId && m.Sort == 1); PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId); if (merchant != null) { // PosMerchantOtherInfo otherInfo = db.PosMerchantOtherInfo.FirstOrDefault(m => m.CertId == merchant.MerIdcardNo && m.PrizeFlag2 == 0); // if (otherInfo != null) // { // otherInfo.PrizeFlag2 = 1; // db.SaveChanges(); // 从机具所属人上级开始分开机奖励 Users user = db.Users.FirstOrDefault(m => m.Id == pos.BuyUserId); if (user != null) { if (!string.IsNullOrEmpty(user.ParentNav)) { decimal Prize = 20; string[] ParentNavs = user.ParentNav.Trim(',').Replace(",,", ",").Split(','); for (int i = ParentNavs.Length - 1; i >= 0; i--) { int UserId = int.Parse(ParentNavs[i]); Users puser = db.Users.FirstOrDefault(m => m.Id == UserId && m.AuthFlag == 1); if (puser != null && Prize > 0) { int machineCount = db.PosMachinesTwo.Count(m => m.BuyUserId == puser.Id && m.PosSnType == 0); //判断是否拥有3台购买机 int ActiveCount = db.PosMachinesTwo.Count(m => m.BuyUserId == puser.Id && m.ActivationState == 1); //判断是否拥有3台激活机(不限购买或赠送) int couponCount = db.PosCoupons.Count(m => m.UserId == puser.Id && m.IsUse == 0); //判断是否拥有3张券 // int BigCount = db.PosMachinesTwo.Count(m => m.UserId == puser.Id && m.BrandId == 3); //判断是否拥有2台大机 // int BigActiveCount = db.PosMachinesTwo.Count(m => m.UserId == puser.Id && m.ActivationState == 1 && m.BrandId == 3); //判断是否拥有2台激活大机(不限购买或赠送) if (machineCount + ActiveCount + couponCount >= 3) { int pTopUserId = 0; if (!string.IsNullOrEmpty(puser.ParentNav)) { pTopUserId = int.Parse(puser.ParentNav.Trim(',').Replace(",,", ",").Split(',')[0]); } Users machineUser = db.Users.FirstOrDefault(m => m.Id == pos.BuyUserId) ?? new Users(); OpenRewardDetail detail = db.OpenRewardDetail.Add(new OpenRewardDetail() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, TradeMonth = yesterday.ToString("yyyyMM"), //交易月 TradeDate = yesterday, //达标日期 UserId = puser.Id, //创客 BrandId = pos.BrandId, //品牌 ProductName = RelationClass.GetKqProductsInfo(pos.BrandId), //产品名称 MerchantId = pos.BindMerchantId, //商户 DirectUserId = merchant.UserId, //商户直属人 SnNo = pos.PosSn, //SN号 MerNo = merchant.KqMerNo, //渠道商户号 SnType = pos.PosSnType, //机具类型 StandardDate = pos.ActivationTime, //商户的激活日期 SnStoreId = pos.StoreId, //SN仓库 MerBuddyType = puser.MerchantType, //商户创客类型 RewardType = 1, //奖励类型 1-开机直接奖励,2-开机间接奖励 RewardTips = "开机奖励", //奖励描述 CreditTradeAmt = pos.CreditTrade, //贷记卡交易总金额 DebitTradeAmt = pos.DebitCardTrade, //借记卡交易总金额 CreditRewardAmount = Prize, //贷记卡交易奖励金额 RewardDesc = "开机奖励", //奖励描述 TopUserId = pTopUserId, //顶级创客 SeoTitle = machineUser.RealName, }).Entity; db.OpenReward.Add(new OpenReward() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, TradeMonth = yesterday.ToString("yyyyMM"), //交易月 TradeDate = DateTime.Now, //达标日期 UserId = puser.Id, //创客 BrandId = pos.BrandId, //品牌 RewardType = 2, //奖励类型 CreditTradeAmt = pos.CreditTrade, //贷记卡交易总金额 DebitTradeAmt = pos.DebitCardTrade, //借记卡交易总金额 CreditRewardAmount = Prize, //贷记卡交易奖励金额 RewardDesc = "开机奖励", //奖励描述 TopUserId = pTopUserId, //顶级创客 }); string IdBrand = puser.Id + "_" + pos.BrandId; UserMachineData userData = db.UserMachineData.FirstOrDefault(m => m.IdBrand == IdBrand); if (userData == null) { userData = db.UserMachineData.Add(new UserMachineData() { IdBrand = IdBrand, }).Entity; db.SaveChanges(); } userData.OpenProfit += Prize; db.SaveChanges(); RedisDbconn.Instance.Set("UserMachineData:" + IdBrand, userData); //账户入库 UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == puser.Id); if (account == null) { account = db.UserAccount.Add(new UserAccount() { Id = puser.Id, UserId = puser.Id, }).Entity; db.SaveChanges(); } //收支明细入库 decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额 decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额 decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额 account.BalanceAmount += Prize; account.TotalAmount += Prize; decimal AfterTotalAmount = account.TotalAmount; //变更后总金额 decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额 decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额 UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, UserId = puser.Id, //创客 ChangeType = 50, //变动类型 ProductType = pos.BrandId, //产品类型 ChangeAmount = Prize, //变更金额 BeforeTotalAmount = BeforeTotalAmount, //变更前总金额 AfterTotalAmount = AfterTotalAmount, //变更后总金额 BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额 AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额 BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额 AfterBalanceAmount = AfterBalanceAmount, //变更后余额 }).Entity; db.SaveChanges(); RedisDbconn.Instance.Set("UserAccount:" + puser.Id, account); string dateString = yesterday.ToString("yyyyMMdd"); string monthString = yesterday.ToString("yyyyMM"); // 开机奖励列表 List dates = RedisDbconn.Instance.GetList("OpenRewardDay:" + puser.Id + ":" + pos.BrandId); if (!dates.Contains(dateString)) { RedisDbconn.Instance.AddList("OpenRewardDay:" + puser.Id + ":" + pos.BrandId, dateString); } RedisDbconn.Instance.AddNumber("OpenRewardAmt:" + puser.Id + ":" + pos.BrandId + ":" + dateString, Prize); List months = RedisDbconn.Instance.GetList("OpenRewardMonth:" + puser.Id + ":" + pos.BrandId); if (!months.Contains(monthString)) { RedisDbconn.Instance.AddList("OpenRewardMonth:" + puser.Id + ":" + pos.BrandId, monthString); } RedisDbconn.Instance.AddNumber("OpenRewardAmt:" + puser.Id + ":" + pos.BrandId + ":" + monthString, Prize); // 开机奖励详情 RedisDbconn.Instance.AddList("OpenRewardDetail:" + puser.Id + ":" + pos.BrandId + ":" + dateString, detail); //收支明细 RedisDbconn.Instance.AddList("UserAccountRecord:" + puser.Id + ":1:" + monthString, userAccountRecord); RedisDbconn.Instance.AddNumber("UserAccount:" + puser.Id + ":1:" + monthString, Prize); Prize -= 10; } } } } } // } } } } } db.Dispose(); } public void dosomething42(string date) { WebCMSEntities db = new WebCMSEntities(); DateTime yesterday = DateTime.Parse(date + " 00:00:00"); DateTime today = DateTime.Parse(DateTime.Parse(date).AddDays(1).ToString("yyyy-MM-dd") + " 00:00:00"); List merList = db.PosMerchantInfo.Where(m => m.ActiveStatus == 1 && m.MerStandardDate >= yesterday && m.MerStandardDate < today && !string.IsNullOrEmpty(m.SeoKeyword) && m.SeoKeyword != "0").ToList(); foreach (PosMerchantInfo merchant in merList) { MachineForMerNo forMerNo = db.MachineForMerNo.FirstOrDefault(m => m.MerNo == merchant.MerchantNo) ?? new MachineForMerNo(); PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == forMerNo.SnId) ?? new PosMachinesTwo(); if (pos.ActivationTime > DateTime.Now.AddDays(-20) && pos.CreditTrade >= 1000) { decimal ActPrize = decimal.Parse(function.CheckNum(merchant.SeoKeyword)); if (ActPrize > 0) { // PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId && !string.IsNullOrEmpty(m.MerIdcardNo)); // PosMerchantOtherInfo otherInfo = db.PosMerchantOtherInfo.FirstOrDefault(m => m.CertId == merchant.MerIdcardNo && m.PrizeFlag2 == 0); // if (otherInfo != null) // { // otherInfo.PrizeFlag2 = 1; // db.SaveChanges(); // 从机具所属人上级开始分开机奖励 Users user = db.Users.FirstOrDefault(m => m.Id == pos.BuyUserId); if (user != null) { if (!string.IsNullOrEmpty(user.ParentNav)) { decimal Prize = 20; string[] ParentNavs = user.ParentNav.Trim(',').Replace(",,", ",").Split(','); for (int i = ParentNavs.Length - 1; i >= 0; i--) { int UserId = int.Parse(ParentNavs[i]); Users puser = db.Users.FirstOrDefault(m => m.Id == UserId && m.AuthFlag == 1); if (puser != null && Prize > 0) { int machineCount = db.PosMachinesTwo.Count(m => m.UserId == puser.Id && m.PosSnType == 0); //判断是否拥有3台购买机 int ActiveCount = db.PosMachinesTwo.Count(m => m.UserId == puser.Id && m.ActivationState == 1); //判断是否拥有3台激活机(不限购买或赠送) int couponCount = db.PosCoupons.Count(m => m.UserId == puser.Id && m.IsUse == 0); //判断是否拥有3张券 // int BigCount = db.PosMachinesTwo.Count(m => m.UserId == puser.Id && m.BrandId == 3); //判断是否拥有2台大机 // int BigActiveCount = db.PosMachinesTwo.Count(m => m.UserId == puser.Id && m.ActivationState == 1 && m.BrandId == 3); //判断是否拥有2台激活大机(不限购买或赠送) if (machineCount + ActiveCount + couponCount >= 3) { int pTopUserId = 0; if (!string.IsNullOrEmpty(puser.ParentNav)) { pTopUserId = int.Parse(puser.ParentNav.Trim(',').Replace(",,", ",").Split(',')[0]); } Users machineUser = db.Users.FirstOrDefault(m => m.Id == pos.BuyUserId) ?? new Users(); OpenRewardDetail detail = db.OpenRewardDetail.Add(new OpenRewardDetail() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, TradeMonth = yesterday.ToString("yyyyMM"), //交易月 TradeDate = yesterday, //达标日期 UserId = puser.Id, //创客 BrandId = pos.BrandId, //品牌 ProductName = RelationClass.GetKqProductsInfo(pos.BrandId), //产品名称 MerchantId = pos.BindMerchantId, //商户 DirectUserId = merchant.UserId, //商户直属人 SnNo = pos.PosSn, //SN号 MerNo = merchant.KqMerNo, //渠道商户号 SnType = pos.PosSnType, //机具类型 StandardDate = pos.ActivationTime, //商户的激活日期 SnStoreId = pos.StoreId, //SN仓库 MerBuddyType = puser.MerchantType, //商户创客类型 RewardType = 1, //奖励类型 1-开机直接奖励,2-开机间接奖励 RewardTips = "开机奖励", //奖励描述 CreditTradeAmt = pos.CreditTrade, //贷记卡交易总金额 DebitTradeAmt = pos.DebitCardTrade, //借记卡交易总金额 CreditRewardAmount = Prize, //贷记卡交易奖励金额 RewardDesc = "开机奖励", //奖励描述 TopUserId = pTopUserId, //顶级创客 SeoTitle = machineUser.RealName, }).Entity; db.OpenReward.Add(new OpenReward() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, TradeMonth = yesterday.ToString("yyyyMM"), //交易月 TradeDate = DateTime.Now, //达标日期 UserId = puser.Id, //创客 BrandId = pos.BrandId, //品牌 RewardType = 2, //奖励类型 CreditTradeAmt = pos.CreditTrade, //贷记卡交易总金额 DebitTradeAmt = pos.DebitCardTrade, //借记卡交易总金额 CreditRewardAmount = Prize, //贷记卡交易奖励金额 RewardDesc = "开机奖励", //奖励描述 TopUserId = pTopUserId, //顶级创客 }); string IdBrand = puser.Id + "_" + pos.BrandId; UserMachineData userData = db.UserMachineData.FirstOrDefault(m => m.IdBrand == IdBrand); if (userData == null) { userData = db.UserMachineData.Add(new UserMachineData() { IdBrand = IdBrand, }).Entity; db.SaveChanges(); } userData.OpenProfit += Prize; db.SaveChanges(); RedisDbconn.Instance.Set("UserMachineData:" + IdBrand, userData); //账户入库 UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == puser.Id); if (account == null) { account = db.UserAccount.Add(new UserAccount() { Id = puser.Id, UserId = puser.Id, }).Entity; db.SaveChanges(); } //收支明细入库 decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额 decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额 decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额 account.BalanceAmount += Prize; account.TotalAmount += Prize; decimal AfterTotalAmount = account.TotalAmount; //变更后总金额 decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额 decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额 UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, UserId = puser.Id, //创客 ChangeType = 50, //变动类型 ProductType = pos.BrandId, //产品类型 ChangeAmount = Prize, //变更金额 BeforeTotalAmount = BeforeTotalAmount, //变更前总金额 AfterTotalAmount = AfterTotalAmount, //变更后总金额 BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额 AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额 BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额 AfterBalanceAmount = AfterBalanceAmount, //变更后余额 }).Entity; db.SaveChanges(); RedisDbconn.Instance.Set("UserAccount:" + puser.Id, account); string dateString = yesterday.ToString("yyyyMMdd"); string monthString = yesterday.ToString("yyyyMM"); // 开机奖励列表 List dates = RedisDbconn.Instance.GetList("OpenRewardDay:" + puser.Id + ":" + pos.BrandId); if (!dates.Contains(dateString)) { RedisDbconn.Instance.AddList("OpenRewardDay:" + puser.Id + ":" + pos.BrandId, dateString); } RedisDbconn.Instance.AddNumber("OpenRewardAmt:" + puser.Id + ":" + pos.BrandId + ":" + dateString, Prize); List months = RedisDbconn.Instance.GetList("OpenRewardMonth:" + puser.Id + ":" + pos.BrandId); if (!months.Contains(monthString)) { RedisDbconn.Instance.AddList("OpenRewardMonth:" + puser.Id + ":" + pos.BrandId, monthString); } RedisDbconn.Instance.AddNumber("OpenRewardAmt:" + puser.Id + ":" + pos.BrandId + ":" + monthString, Prize); // 开机奖励详情 RedisDbconn.Instance.AddList("OpenRewardDetail:" + puser.Id + ":" + pos.BrandId + ":" + dateString, detail); //收支明细 RedisDbconn.Instance.AddList("UserAccountRecord:" + puser.Id + ":1:" + monthString, userAccountRecord); RedisDbconn.Instance.AddNumber("UserAccount:" + puser.Id + ":1:" + monthString, Prize); Prize -= 10; } } } } } // } } } } db.Dispose(); } // 4. 前一天的流量卡记录和匹配 public void ListenFluxRecord(string date) { Thread th = new Thread(CheckFluxForTrade); th.IsBackground = true; th.Start(date); } public void doFluxRecord(string date) { function.WriteLog(DateTime.Now.ToString(), "执行流量费返佣"); SpModels.WebCMSEntities spdb = new SpModels.WebCMSEntities(); WebCMSEntities db = new WebCMSEntities(); DateTime yesterday = DateTime.Parse(date + " 00:00:00"); DateTime today = DateTime.Parse(DateTime.Parse(date).AddDays(1).ToString("yyyy-MM-dd") + " 00:00:00"); List trades = spdb.TradeFluxRecord.Where(m => m.CreateDate >= yesterday && m.CreateDate < today && m.Status == 1).ToList(); foreach (SpModels.TradeFluxRecord trade in trades) { try { string OrderNo = trade.TradeSerialNo; //单号 DateTime TradeDate = trade.CreateDate.Value; string TradeMonth = TradeDate.ToString("yyyyMM"); decimal FeeAmount = trade.FeeAmount; //流量费 if (trade.ProductType == "1" || trade.ProductType == "4" || trade.ProductType == "6" || trade.ProductType == "8" || trade.ProductType == "9") { FeeAmount = FeeAmount / 100; } string TradeSnNo = trade.TradeSnNo; //机具SN decimal FluxProfit = 0; if (trade.ProductType == "1" && FeeAmount == 60) { FluxProfit = 24; } else if (trade.ProductType == "7" && FeeAmount == 46) { FluxProfit = 10; } else if (trade.ProductType != "1" && FeeAmount == 48) { FluxProfit = 12; } if (FluxProfit > 0) { MachineForSnNo forSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == TradeSnNo) ?? new MachineForSnNo(); PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == forSnNo.SnId) ?? new PosMachinesTwo(); // PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId && m.Sort == 1); PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId); if (merchant != null && pos.BrandId != 6) { bool checkExist = db.FluxProfitDetail.Any(m => m.MerNo == merchant.KqMerNo); if (!checkExist && decimal.Parse(function.CheckNum(pos.SeoKeyword)) > 0) { Users user = db.Users.FirstOrDefault(m => m.Id == pos.BuyUserId) ?? new Users(); int GetUserId = user.Id; int TopUserId = 0; string ParentNav = user.ParentNav; if (!string.IsNullOrEmpty(ParentNav)) { string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(','); if (ParentNavList.Length > 1) { TopUserId = int.Parse(ParentNavList[1]); } else if (ParentNavList.Length == 1) { TopUserId = int.Parse(ParentNavList[0]); } } FluxProfitSummary fluxProfit = db.FluxProfitSummary.FirstOrDefault(m => m.UserId == GetUserId && m.BrandId == pos.BrandId && m.TradeMonth == TradeMonth); if (fluxProfit == null) { fluxProfit = db.FluxProfitSummary.Add(new FluxProfitSummary() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, UserId = GetUserId, //创客 BrandId = pos.BrandId, TopUserId = TopUserId, //顶级创客 TradeMonth = TradeMonth, //交易月 MerUserType = user.MerchantType, //商户创客类型 Remark = "流量卡分佣", //备注 }).Entity; db.SaveChanges(); } fluxProfit.FluxProfitAmt += FluxProfit; //流量分润总金额 db.FluxProfitDetail.Add(new FluxProfitDetail() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, RecordNo = OrderNo, //单号 TradeDate = TradeDate.ToString("yyyyMMdd"), //交易日期 TradeTime = TradeDate.ToString("HHmmss"), //交易时间 TradeMonth = TradeMonth, //交易月 UserId = GetUserId, //创客 MerchantId = pos.BindMerchantId, //商户 MerchantUserId = pos.UserId, //商户直属人 MerNo = merchant.KqMerNo, //渠道商户编号 SnNo = pos.PosSn, //渠道SN号 FluxOrderNo = OrderNo, //流量扣费单号 TradeOrderNo = OrderNo, //交易流水号 TradeAmt = trade.TradeAmount, //商户交易额 FluxFeeAmt = FeeAmount, //流量费 FluxProfitAmt = FluxProfit, //流量分润总金额 PosType = pos.PosSnType.ToString(), //POS类型 Remark = "流量卡分佣", //备注 BrandId = pos.BrandId, //品牌 TopUserId = TopUserId, //顶级创客 MerUserType = user.MerchantType, //商户创客类型 }); string IdBrand = user.Id + "_" + pos.BrandId; UserMachineData userData = db.UserMachineData.FirstOrDefault(m => m.IdBrand == IdBrand); if (userData == null) { userData = db.UserMachineData.Add(new UserMachineData() { IdBrand = IdBrand, }).Entity; db.SaveChanges(); } userData.FluxProfit += FluxProfit; db.SaveChanges(); RedisDbconn.Instance.Clear("UserMachineData:" + IdBrand); UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == GetUserId); if (account == null) { account = db.UserAccount.Add(new UserAccount() { Id = GetUserId, UserId = GetUserId, }).Entity; db.SaveChanges(); } decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额 decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额 decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额 account.BalanceAmount += FluxProfit; account.TotalAmount += FluxProfit; decimal AfterTotalAmount = account.TotalAmount; //变更后总金额 decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额 decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额 UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, UserId = GetUserId, //创客 ChangeType = 60, //变动类型 ProductType = pos.BrandId, //产品类型 ChangeAmount = FluxProfit, //变更金额 BeforeTotalAmount = BeforeTotalAmount, //变更前总金额 AfterTotalAmount = AfterTotalAmount, //变更后总金额 BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额 AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额 BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额 AfterBalanceAmount = AfterBalanceAmount, //变更后余额 }).Entity; db.SaveChanges(); RedisDbconn.Instance.Clear("UserAccount:" + GetUserId); } SpModels.TradeFluxRecord edit = spdb.TradeFluxRecord.FirstOrDefault(m => m.Id == trade.Id); if (edit != null) { edit.Status = 2; spdb.SaveChanges(); } } } } catch (Exception ex) { function.WriteLog(DateTime.Now.ToString() + "\n$" + trade.Id + "$\n" + ex.ToString(), "流量卡分佣异常"); } } spdb.Dispose(); db.Dispose(); function.WriteLog(DateTime.Now.ToString() + "\n", "执行流量费返佣"); } public void CheckFluxForTrade(object sender) { string date = sender.ToString(); function.WriteLog(DateTime.Now.ToString(), "扫描金控交易记录中的流量费"); SpModels.WebCMSEntities spdb = new SpModels.WebCMSEntities(); DateTime start = DateTime.Parse(date + " 00:00:00"); DateTime end = start.AddDays(1); var list = spdb.TradeRecord.Select(m => new { m.Id, m.CreateDate, m.ProductType }).Where(m => m.CreateDate > start && m.CreateDate < end && m.ProductType == "1").OrderBy(m => m.CreateDate); foreach (var sub in list.ToList()) { try { SpModels.TradeRecord trade = spdb.TradeRecord.FirstOrDefault(m => m.Id == sub.Id); if (trade != null) { string content = trade.SeoDescription; if (!string.IsNullOrEmpty(content)) { content = System.Web.HttpUtility.UrlDecode(content); JsonData jsonObj = JsonMapper.ToObject(content); decimal terminalDataFlowFee = decimal.Parse(function.CheckNum(jsonObj["terminalDataFlowFee"].ToString())); if (terminalDataFlowFee > 0) { spdb.TradeFluxRecord.Add(new SpModels.TradeFluxRecord() { SeoDescription = trade.TradeSerialNo, FeeAmount = terminalDataFlowFee, TradeSerialNo = function.MD5_16(trade.TradeSerialNo), CreateDate = trade.CreateDate, TradeSnNo = trade.TradeSnNo, ProductType = trade.ProductType, Status = 1, }); spdb.SaveChanges(); } } } } catch (Exception ex) { function.WriteLog(DateTime.Now.ToString() + "\n$" + sub.Id + "$\n" + ex.ToString(), "扫描金控交易记录中的流量费异常"); } } spdb.Dispose(); function.WriteLog(DateTime.Now.ToString() + "\n", "扫描金控交易记录中的流量费"); doFluxRecord(date); } // 统计交易额V2 public void StartEverDayV2() { Thread th = new Thread(StartEverDayV2Do); th.IsBackground = true; th.Start(); } public void StartEverDayV2Do() { while (true) { if(DateTime.Now.Hour >= 2) { StatTradeAmountEverDayV2(); } Thread.Sleep(100); } } public void StatTradeAmountEverDayV2() { OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["Pxc1SqlConnStr"].ToString(); function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "实时执行交易额V2日志"); WebCMSEntities db = new WebCMSEntities(); using (var tran = db.Database.BeginTransaction()) { try { string startId = function.ReadInstance("/TradeRecord/Id.txt"); if(string.IsNullOrEmpty(startId)) { startId = "718574"; } DataTable idsDt = OtherMySqlConn.dtable("select Id from TradeRecord where Id>=" + startId + " and QueryCount=0 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 UserId,ParentNav,BrandId,BankCardType,QrPayFlag,MerHelpFlag,CapFlag,VipFlag,PayType,DATE_FORMAT(CreateDate,'%Y%m%d'),sum(TradeAmount),count(Id) from TradeRecord where Id in (" + ids.TrimEnd(',') + ") group by UserId,ParentNav,BrandId,BankCardType,QrPayFlag,MerHelpFlag,CapFlag,VipFlag,PayType,DATE_FORMAT(CreateDate,'%Y%m%d')"); if (selfDt.Rows.Count > 0) { function.WriteLog("统计人数:" + selfDt.Rows.Count + "\n\n", "实时交易额V2日志"); 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 CapFlag = int.Parse(selfDr["CapFlag"].ToString()); int VipFlag = int.Parse(selfDr["VipFlag"].ToString()); int PayType = int.Parse(selfDr["PayType"].ToString()); string TradeDate = selfDr[9].ToString(); decimal TradeAmount = decimal.Parse(selfDr[10].ToString()); int TradeCount = int.Parse(selfDr[11].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) { selfStat = db.TradeDaySummary.Add(new TradeDaySummary() { UserId = UserId, TradeMonth = TradeMonth, TradeDate = TradeDate, BrandId = BrandId, QueryCount = QrPayFlag, VipFlag = VipFlag, PayType = PayType, SeoTitle = "self", }).Entity; db.SaveChanges(); } if (BankCardType == 0) { if (MerHelpFlag == 1) { selfStat.HelpDirectDebitTradeAmt += TradeAmount; if (CapFlag == 1) { selfStat.HelpDirectDebitCapTradeAmt += TradeAmount; selfStat.HelpDirectDebitCapNum += TradeCount; } } else { selfStat.NotHelpDirectDebitTradeAmt += TradeAmount; if (CapFlag == 1) { selfStat.NotHelpDirectDebitCapTradeAmt += TradeAmount; selfStat.NotHelpDirectDebitCapNum += TradeCount; } } } else if (BankCardType != 0) { if (MerHelpFlag == 1) { selfStat.HelpDirectTradeAmt += TradeAmount; } else { selfStat.NotHelpDirectTradeAmt += 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) { teamStat = db.TradeDaySummary.Add(new TradeDaySummary() { UserId = NavUserId, TradeMonth = TradeMonth, TradeDate = TradeDate, BrandId = BrandId, QueryCount = QrPayFlag, VipFlag = VipFlag, PayType = PayType, SeoTitle = "team", }).Entity; db.SaveChanges(); } if (BankCardType == 0) { if (MerHelpFlag == 1) { teamStat.HelpNonDirectDebitTradeAmt += TradeAmount; if (CapFlag == 1) { teamStat.HelpDirectDebitCapTradeAmt += TradeAmount; teamStat.HelpDirectDebitCapNum += TradeCount; } } else { teamStat.NotHelpNonDirectDebitTradeAmt += TradeAmount; if (CapFlag == 1) { teamStat.NotHelpDirectDebitCapTradeAmt += TradeAmount; teamStat.NotHelpDirectDebitCapNum += TradeCount; } } } else if (BankCardType != 0) { if (MerHelpFlag == 1) { teamStat.HelpNonDirectTradeAmt += TradeAmount; } else { teamStat.NotHelpNonDirectTradeAmt += TradeAmount; } } } } } OtherMySqlConn.op("update TradeRecord set QueryCount=1 where Id in (" + ids.TrimEnd(',') + ")"); function.WritePage("/TradeRecord/", "Id.txt", startId); } db.SaveChanges(); } tran.Commit(); } catch (Exception ex) { tran.Rollback(); function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "统计昨天交易额V2异常"); } } db.Dispose(); function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "实时执行交易额V2日志"); } // 每天统计头一天的交易额 public void StartEverDay(string date) { // OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["Pxc1SqlConnStr"].ToString(); // DateTime end = DateTime.Parse("2022-04-19 00:00:00"); // DateTime check = DateTime.Parse("2022-03-11"); // while (check <= end) // { // Thread th = new Thread(StatTradeAmountEverDay); // th.IsBackground = true; // th.Start(check.ToString("yyyy-MM-dd")); // check = check.AddDays(1); // } string TradeMonth = DateTime.Now.ToString("yyyyMM"); if(DateTime.Now.Day == 1) { TradeMonth = DateTime.Now.AddMonths(-1).ToString("yyyyMM"); } DataTable list = OtherMySqlConn.dtable("select UserId,sum(HelpNonDirectTradeAmt+NotHelpNonDirectTradeAmt) from (select UserId,HelpNonDirectTradeAmt,NotHelpNonDirectTradeAmt from TradeDaySummary where TradeMonth='" + TradeMonth + "' and SeoTitle='team' and UserId>0) tb group by UserId"); foreach (DataRow dr in list.Rows) { string UserId = dr["UserId"].ToString(); string ThisMonthTrade = dr[1].ToString(); OtherMySqlConn.op("update Users set ThisMonthTrade=" + ThisMonthTrade + " where Id=" + UserId); } // Thread th = new Thread(StatTradeAmountEverDay); // th.IsBackground = true; // th.Start(date); } public void StatTradeAmountEverDay(object sender) { string date = sender.ToString(); function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "执行昨天交易额日志"); WebCMSEntities db = new WebCMSEntities(); try { 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"; List uids = new List(); DataTable startDt = OtherMySqlConn.dtable("select min(Id) from TradeRecord where CreateDate>='" + start + "'"); if (startDt.Rows.Count > 0) { startId = startDt.Rows[0][0].ToString(); } function.WriteLog(startId + "\n\n", "执行昨天交易额日志"); // DataTable endDt = OtherMySqlConn.dtable("select max(Id) from TradeRecord where CreateDate<'" + end + "'"); // if (endDt.Rows.Count > 0) // { // endId = endDt.Rows[0][0].ToString(); // } DataTable userDt = OtherMySqlConn.dtable("select Id,ParentNav from Users where Id in (select DISTINCT UserId from TradeRecord where Id>=" + startId + " and Id<=" + endId + " and CreateDate>='" + start + "' and CreateDate<'" + end + "')"); function.WriteLog("交易人数:" + userDt.Rows.Count + "\n\n", "执行昨天交易额日志"); foreach (DataRow userDr in userDt.Rows) { int UserId = int.Parse(userDr["Id"].ToString()); string ParentNav = userDr["ParentNav"].ToString(); function.WriteLog(UserId + ":" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "执行昨天交易额日志"); 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 + " 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 BrandId = int.Parse(selfDr["BrandId"].ToString()); 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(); } 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 + ":team:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "执行昨天交易额日志"); 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 + ") group by BrandId,BankCardType,QrPayFlag"); function.WriteLog(NavUserId + ":team:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "执行昨天交易额日志"); foreach (DataRow teamDr in teamDt.Rows) { int BrandId = int.Parse(teamDr["BrandId"].ToString()); 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(); } } } } } if (DateTime.Now.Day >= 2) { Thread.Sleep(5000); DataTable list = OtherMySqlConn.dtable("select UserId,sum(NonDirectTradeAmt) from UserTradeDaySummary where TradeDate='" + TradeDate + "' GROUP BY UserId"); foreach (DataRow dr in list.Rows) { string UserId = dr["UserId"].ToString(); string ThisMonthTrade = dr[1].ToString(); OtherMySqlConn.op("update Users set ThisMonthTrade=ThisMonthTrade+" + ThisMonthTrade + " where Id=" + UserId); } } } 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", "执行昨天交易额日志"); StatMerchantTrade(date); } public void StatTradeAmountEverDaySum() { // WebCMSEntities db = new WebCMSEntities(); // OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["Pxc1SqlConnStr"].ToString(); // DataTable dt = OtherMySqlConn.dtable("select UserId,BrandId,QueryCount,TradeDate,TradeMonth,sum(DirectDebitTradeAmt) as DirectDebitTradeAmt,sum(DirectTradeAmt) as DirectTradeAmt,sum(NonDirectDebitTradeAmt) as NonDirectDebitTradeAmt,sum(NonDirectTradeAmt) as NonDirectTradeAmt from UserTradeDaySummary group by UserId,BrandId,QueryCount,TradeDate,TradeMonth order by UserId,BrandId,QueryCount"); // string html = ""; // foreach (DataRow dr in dt.Rows) // { // html += ""; // string TradeDate = dr["TradeDate"].ToString(); // string TradeMonth = dr["TradeMonth"].ToString(); // int UserId = int.Parse(dr["UserId"].ToString()); // int BrandId = int.Parse(dr["BrandId"].ToString()); // int QrPayFlag = int.Parse(dr["QueryCount"].ToString()); // decimal DirectDebitTradeAmt = decimal.Parse(dr["DirectDebitTradeAmt"].ToString()); // decimal DirectTradeAmt = decimal.Parse(dr["DirectTradeAmt"].ToString()); // decimal NonDirectDebitTradeAmt = decimal.Parse(dr["NonDirectDebitTradeAmt"].ToString()); // decimal NonDirectTradeAmt = decimal.Parse(dr["NonDirectTradeAmt"].ToString()); // decimal CurAmount = 0, CurTotalAmount = 0, CurMonthAmount = 0, CurDayAmount = 0; // CurTotalAmount = RedisDbconn.Instance.Get("TotalAmount:" + UserId); //总交易 // CurMonthAmount = RedisDbconn.Instance.Get("TotalAmount:" + UserId + ":" + TradeDate); //总交易 // CurDayAmount = RedisDbconn.Instance.Get("TotalAmount:" + UserId + ":" + TradeMonth); //总交易 // CurAmount = RedisDbconn.Instance.Get("TotalAmount:" + UserId + ":" + BrandId + ":" + TradeDate); //总交易 // decimal TotalPosAmount = 0; // decimal TotalCloudPayAmount = 0; // decimal TeamTotalPosAmount = 0; // decimal TeamTotalCloudPayAmount = 0; // if (QrPayFlag == 1) // { // TotalCloudPayAmount = RedisDbconn.Instance.Get("TotalCloudPayAmount:" + UserId + ":" + TradeDate); //云闪付小额交易额 // TeamTotalCloudPayAmount = RedisDbconn.Instance.Get("TeamTotalCloudPayAmount:" + UserId + ":" + TradeDate); //POS机刷卡交易额 // } // else // { // TotalPosAmount = RedisDbconn.Instance.Get("TotalPosAmount:" + UserId + ":" + TradeDate); //POS机刷卡交易额 // TeamTotalPosAmount = RedisDbconn.Instance.Get("TeamTotalPosAmount:" + UserId + ":" + TradeDate); //云闪付小额交易额 // } // Users user = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users(); // html += ""; // html += ""; // html += ""; // html += ""; // html += ""; // html += ""; // html += ""; // html += ""; // html += ""; // html += ""; // html += ""; // html += ""; // html += ""; // html += ""; // html += ""; // html += ""; // html += ""; // html += ""; // html += ""; // html += ""; // html += ""; // html += ""; // html += ""; // html += ""; // } // html += "
应得" + user.MakerCode + "" + user.RealName + "" + user.Mobile + "" + BrandId + "" + QrPayFlag + "" + DirectDebitTradeAmt + "" + DirectTradeAmt + "" + NonDirectDebitTradeAmt + "" + NonDirectTradeAmt + "
当前当天品牌:" + CurAmount + "总交易:" + CurTotalAmount + "当月:" + CurMonthAmount + "当天:" + CurDayAmount + "" + TotalPosAmount + "" + TotalCloudPayAmount + "" + TeamTotalPosAmount + "" + TeamTotalCloudPayAmount + "
"; // db.Dispose(); // // OtherMySqlConn.connstr = ; // function.WritePage("/html/", "1.html", html); } //统计商户交易额 private void StatMerchantTrade(string date) { function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "执行商户交易额日志"); // WebCMSEntities db = new WebCMSEntities(); try { string start = date + " 00:00:00"; string end = DateTime.Parse(date).AddDays(1).ToString("yyyy-MM-dd") + " 00:00:00"; OtherMySqlConn.op("insert into PosMerchantTradeSummay (MerchantId,BrandId,TradeDate,TradeMonth,TradeAmount,CreateDate) select *,now() from (select MerchantId,BrandId,DATE_FORMAT(CreateDate,'%Y%m%d') as TradeDate,DATE_FORMAT(CreateDate,'%Y%m') as TradeMonth,sum(TradeAmount) as TradeAmount from TradeRecord where CreateDate>='" + start + "' and CreateDate<'" + end + "' group by MerchantId,BrandId,DATE_FORMAT(CreateDate,'%Y%m%d'),TradeDate,DATE_FORMAT(CreateDate,'%Y%m') order by MerchantId,BrandId,DATE_FORMAT(CreateDate,'%Y%m%d')) tb"); RedisDbconn.Instance.Clear("PosMerchantAmount:*"); RedisDbconn.Instance.Clear("PosMerchantAmount:*:" + date.Replace("-", "").Substring(0, 6)); //商户当月交易 RedisDbconn.Instance.Clear("PosMerchantAmount:*:" + date.Replace("-", "")); //商户当日交易 // foreach (DataRow selfDr in selfdt.Rows) // { // int BrandId = int.Parse(selfDr["BrandId"].ToString()); // int MerchantId = int.Parse(selfDr["MerchantId"].ToString()); // string TradeDate = selfDr["TradeDate"].ToString(); // TradeDate = TradeDate.Replace("-", ""); // string TradeMonth = TradeDate.Substring(0, 6); // decimal TradeAmount = decimal.Parse(selfDr["TradeAmount"].ToString()); // PosMerchantTradeSummay merStat = db.PosMerchantTradeSummay.FirstOrDefault(m => m.MerchantId == MerchantId && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.BrandId == BrandId); // if (merStat == null) // { // merStat = db.PosMerchantTradeSummay.Add(new PosMerchantTradeSummay() // { // MerchantId = MerchantId, // TradeMonth = TradeMonth, // TradeDate = TradeDate, // BrandId = BrandId, // }).Entity; // db.SaveChanges(); // } // merStat.TradeAmount += 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", "执行商户交易额日志"); } // 5. 创客升级 public void StatUserLevel() { Thread th = new Thread(StatUserLevelDo); th.IsBackground = true; th.Start(); } public void StatUserLevelDo() { while (true) { if(DateTime.Now.Day <= 3 && DateTime.Now.Hour > 1) { string Month = DateTime.Now.AddDays(-1).ToString("yyyy-MM"); string flag = function.ReadInstance("/ProfitFlag/" + Month + ".txt"); if (string.IsNullOrEmpty(flag)) { function.WritePage("/ProfitFlag/", Month + ".txt", DateTime.Now.ToString("HH:mm:ss")); StatUserLevelStart(); } } Thread.Sleep(60000); } } public void StatUserLevelStart() { WebCMSEntities db = new WebCMSEntities(); try { function.WriteLog(DateTime.Now.ToString(), "创客升级日志"); DateTime start = DateTime.Parse(DateTime.Now.AddMonths(-1).ToString("yyyy-MM") + "-01 00:00:00"); DateTime end = start.AddDays(1); string TradeMonth = DateTime.Now.AddMonths(-1).ToString("yyyyMM"); List sets = db.UserLevelSet.ToList(); bool op = true; int startid = 0; while(op) { var users = db.Users.Select(m => new { m.Id, m.AuthFlag }).Where(m => m.Id > startid && m.AuthFlag == 1).OrderBy(m => m.Id).Take(50).ToList(); function.WriteLog(users.Count.ToString(), "创客升级日志"); if(users.Count > 0) { foreach (var subuser in users) { Users user = db.Users.FirstOrDefault(m => m.Id == subuser.Id); if (user != null) { int BeforeLevel = user.UserLevel; int AfterLevel = 0; decimal TradeAmount = 0; bool check = db.TradeDaySummary.Any(m => m.UserId == user.Id && m.TradeMonth == TradeMonth && m.SeoTitle == "team"); if (check) { TradeAmount = db.TradeDaySummary.Where(m => m.UserId == user.Id && m.TradeMonth == TradeMonth && m.SeoTitle == "team").Sum(m => m.HelpNonDirectTradeAmt + m.NotHelpNonDirectTradeAmt); } UserLevelSet set = sets.FirstOrDefault(m => m.UpLevelGrowth <= TradeAmount && m.UpLevelIntegral > TradeAmount); if (set != null) { AfterLevel = set.Id; } if (AfterLevel > BeforeLevel && AfterLevel > 1) { function.WriteLog("升级:" + user.Id.ToString() + BeforeLevel + "->" + AfterLevel, "创客升级日志"); user.UserLevel = AfterLevel; db.UserRank.Add(new UserRank() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, UserId = user.Id, //创客 WhiteRank = BeforeLevel, Rank = AfterLevel, //当前等级 StatYear = DateTime.Now.Year, //统计年份 StatMonth = DateTime.Now.Month, //统计月份 TradeAmt = TradeAmount, //团队交易总额 UpgradeFlag = 1, //升级标识 OperateDate = DateTime.Now, //操作时间 }); db.SaveChanges(); } } startid = subuser.Id; } } else { op = false; } } function.WriteLog(DateTime.Now.ToString(), "创客升级日志"); } catch (Exception ex) { function.WriteLog(ex.ToString(), "创客升级异常"); } db.Dispose(); // ProfitHelperV2.Instance.StatProfit(); //统计分润 } public void StatUserLevelStartTest() { Thread th = new Thread(StatUserLevelStartTestDo); th.IsBackground = true; th.Start(); } public void StatUserLevelStartTestDo() { WebCMSEntities db = new WebCMSEntities(); try { function.WriteLog(DateTime.Now.ToString(), "创客升级日志"); DateTime start = DateTime.Parse(DateTime.Now.AddMonths(-1).ToString("yyyy-MM") + "-01 00:00:00"); DateTime end = start.AddDays(1); string TradeMonth = DateTime.Now.AddMonths(-1).ToString("yyyyMM"); List sets = db.UserLevelSet.ToList(); List uids = new List(); uids.Add(6341); uids.Add(6904); uids.Add(7060); uids.Add(19085); uids.Add(19770); uids.Add(19849); uids.Add(19917); uids.Add(19954); uids.Add(19956); uids.Add(19977); uids.Add(22106); uids.Add(22931); uids.Add(23133); uids.Add(23140); uids.Add(26022); uids.Add(26351); uids.Add(26383); uids.Add(28245); uids.Add(29180); uids.Add(29186); uids.Add(29800); uids.Add(30038); uids.Add(30142); uids.Add(30236); uids.Add(31068); uids.Add(31103); uids.Add(31192); uids.Add(31314); uids.Add(32530); uids.Add(32607); uids.Add(32610); uids.Add(34323); uids.Add(34485); uids.Add(35171); uids.Add(36255); uids.Add(36441); uids.Add(36622); uids.Add(36737); uids.Add(37229); uids.Add(37732); uids.Add(37874); uids.Add(37972); uids.Add(38231); uids.Add(38412); uids.Add(38420); uids.Add(38432); uids.Add(38512); uids.Add(38622); uids.Add(38736); uids.Add(38819); uids.Add(38856); uids.Add(38861); uids.Add(38883); uids.Add(39578); uids.Add(40695); uids.Add(40780); uids.Add(41279); uids.Add(41452); uids.Add(42018); uids.Add(42268); uids.Add(42353); uids.Add(42523); uids.Add(42630); uids.Add(43076); uids.Add(43587); uids.Add(43667); uids.Add(43891); uids.Add(44998); uids.Add(45769); uids.Add(46596); uids.Add(47037); uids.Add(47475); uids.Add(49470); uids.Add(50156); uids.Add(50222); uids.Add(50327); uids.Add(52627); uids.Add(52662); uids.Add(52704); uids.Add(54371); uids.Add(54453); uids.Add(54581); uids.Add(55210); uids.Add(55968); uids.Add(56194); uids.Add(58064); uids.Add(59291); uids.Add(59451); uids.Add(59553); uids.Add(59596); uids.Add(60161); uids.Add(60612); uids.Add(61495); uids.Add(61567); uids.Add(61846); uids.Add(63659); uids.Add(64248); uids.Add(65215); uids.Add(67245); uids.Add(71748); uids.Add(72237); uids.Add(73923); uids.Add(74777); uids.Add(75147); uids.Add(76917); uids.Add(80974); uids.Add(81624); uids.Add(82394); uids.Add(83665); uids.Add(85512); uids.Add(87484); uids.Add(87977); uids.Add(91247); uids.Add(91542); uids.Add(91627); uids.Add(92322); uids.Add(92348); uids.Add(93754); uids.Add(94959); uids.Add(95680); uids.Add(95873); uids.Add(96871); uids.Add(97271); uids.Add(97727); uids.Add(99454); uids.Add(99511); uids.Add(99515); uids.Add(99798); uids.Add(100701); uids.Add(102435); uids.Add(103472); uids.Add(105305); uids.Add(107404); uids.Add(108062); uids.Add(120652); uids.Add(120794); uids.Add(120796); uids.Add(120882); uids.Add(121192); uids.Add(121221); uids.Add(121236); uids.Add(121246); uids.Add(121266); uids.Add(121340); uids.Add(121373); uids.Add(121377); uids.Add(121509); uids.Add(121544); uids.Add(121589); uids.Add(121598); uids.Add(121611); uids.Add(121631); uids.Add(121651); uids.Add(121679); uids.Add(121745); uids.Add(121751); uids.Add(121768); uids.Add(121789); uids.Add(121794); uids.Add(121809); uids.Add(121866); uids.Add(121936); uids.Add(121986); uids.Add(121995); uids.Add(121996); uids.Add(121999); uids.Add(122034); uids.Add(122054); uids.Add(122058); uids.Add(122103); uids.Add(122159); uids.Add(122160); uids.Add(122198); uids.Add(122215); uids.Add(122271); uids.Add(122273); uids.Add(122437); uids.Add(122472); uids.Add(122497); uids.Add(122748); uids.Add(122759); uids.Add(123052); uids.Add(123441); uids.Add(123491); uids.Add(123541); uids.Add(123618); uids.Add(123845); uids.Add(123918); uids.Add(123966); uids.Add(124121); uids.Add(124244); uids.Add(124249); uids.Add(124337); uids.Add(124338); uids.Add(124343); uids.Add(124416); uids.Add(124423); uids.Add(124489); uids.Add(124523); uids.Add(124537); uids.Add(124613); uids.Add(124626); uids.Add(124658); uids.Add(124670); uids.Add(124825); uids.Add(124861); uids.Add(125150); uids.Add(125264); uids.Add(125362); uids.Add(125717); uids.Add(125772); uids.Add(126023); uids.Add(126141); uids.Add(126271); uids.Add(126664); uids.Add(127072); uids.Add(127194); uids.Add(127254); uids.Add(127377); uids.Add(127550); uids.Add(127716); uids.Add(128111); uids.Add(128370); uids.Add(128915); uids.Add(130345); uids.Add(130755); uids.Add(130871); uids.Add(130967); uids.Add(131795); uids.Add(133726); uids.Add(134801); uids.Add(3032); uids.Add(3136); uids.Add(7519); uids.Add(7524); uids.Add(7528); uids.Add(7608); uids.Add(10617); uids.Add(14883); uids.Add(15102); uids.Add(15296); uids.Add(15386); uids.Add(15464); uids.Add(15511); uids.Add(15714); uids.Add(15719); uids.Add(16184); uids.Add(16464); uids.Add(16473); uids.Add(16483); uids.Add(16867); uids.Add(17199); uids.Add(17737); uids.Add(18222); uids.Add(18441); uids.Add(19275); uids.Add(19335); uids.Add(20261); uids.Add(20311); uids.Add(20721); uids.Add(21051); uids.Add(21219); uids.Add(21486); uids.Add(21846); uids.Add(22263); uids.Add(22589); uids.Add(22606); uids.Add(22970); uids.Add(22986); uids.Add(23164); uids.Add(23272); uids.Add(24303); uids.Add(25946); uids.Add(26213); uids.Add(26267); uids.Add(26547); uids.Add(27164); uids.Add(27254); uids.Add(27846); uids.Add(27855); uids.Add(27942); uids.Add(28083); uids.Add(28470); uids.Add(29715); uids.Add(29844); uids.Add(30869); uids.Add(31400); uids.Add(31908); uids.Add(32072); uids.Add(32458); uids.Add(33070); uids.Add(33152); uids.Add(33583); uids.Add(34030); uids.Add(34884); uids.Add(34945); uids.Add(35120); uids.Add(35212); uids.Add(35541); uids.Add(35706); uids.Add(35812); uids.Add(35861); uids.Add(35965); uids.Add(35989); uids.Add(36014); uids.Add(36054); uids.Add(36212); uids.Add(36591); uids.Add(37037); uids.Add(37094); uids.Add(37102); uids.Add(37161); uids.Add(37242); uids.Add(37245); uids.Add(37534); uids.Add(37584); uids.Add(37979); uids.Add(37980); uids.Add(38254); uids.Add(38688); uids.Add(38707); uids.Add(38862); uids.Add(38902); uids.Add(39215); uids.Add(39599); uids.Add(39863); uids.Add(39865); uids.Add(40592); uids.Add(41976); uids.Add(41998); uids.Add(42020); uids.Add(43070); uids.Add(43138); uids.Add(43269); uids.Add(43461); uids.Add(43514); uids.Add(43876); uids.Add(43881); uids.Add(43906); uids.Add(44240); uids.Add(44299); uids.Add(44516); uids.Add(44806); uids.Add(45001); uids.Add(45176); uids.Add(45798); uids.Add(45919); uids.Add(45983); uids.Add(46177); uids.Add(46507); uids.Add(46702); uids.Add(47901); uids.Add(49427); uids.Add(49429); uids.Add(49646); uids.Add(50109); uids.Add(51345); uids.Add(51619); uids.Add(52742); uids.Add(53643); uids.Add(53668); uids.Add(53793); uids.Add(53882); uids.Add(54010); uids.Add(54213); uids.Add(55000); uids.Add(55569); uids.Add(56453); uids.Add(57213); uids.Add(57620); uids.Add(58235); uids.Add(58347); uids.Add(58572); uids.Add(59669); uids.Add(60367); uids.Add(60454); uids.Add(60903); uids.Add(60933); uids.Add(61132); uids.Add(62108); uids.Add(62412); uids.Add(63059); uids.Add(63065); uids.Add(63451); uids.Add(64408); uids.Add(64730); uids.Add(64793); uids.Add(64800); uids.Add(65604); uids.Add(65785); uids.Add(65813); uids.Add(67408); uids.Add(67540); uids.Add(67637); uids.Add(67889); uids.Add(68782); uids.Add(68883); uids.Add(68914); uids.Add(69176); uids.Add(69299); uids.Add(69318); uids.Add(69553); uids.Add(69562); uids.Add(69654); uids.Add(69960); uids.Add(70155); uids.Add(71086); uids.Add(71141); uids.Add(71502); uids.Add(71520); uids.Add(71588); uids.Add(71753); uids.Add(71810); uids.Add(72961); uids.Add(73105); uids.Add(73117); uids.Add(73161); uids.Add(73219); uids.Add(73909); uids.Add(74052); uids.Add(74156); uids.Add(74276); uids.Add(75136); uids.Add(75261); uids.Add(75502); uids.Add(75584); uids.Add(75595); uids.Add(76105); uids.Add(76846); uids.Add(77412); uids.Add(77537); uids.Add(78021); uids.Add(78234); uids.Add(78316); uids.Add(78392); uids.Add(78605); uids.Add(78819); uids.Add(79322); uids.Add(79814); uids.Add(80144); uids.Add(80289); uids.Add(80508); uids.Add(81649); uids.Add(81763); uids.Add(81774); uids.Add(82015); uids.Add(82502); uids.Add(82519); uids.Add(83020); uids.Add(83043); uids.Add(83269); uids.Add(83308); uids.Add(83331); uids.Add(83474); uids.Add(84475); uids.Add(84493); uids.Add(84650); uids.Add(85072); uids.Add(85431); uids.Add(85467); uids.Add(85613); uids.Add(85665); uids.Add(85718); uids.Add(85797); uids.Add(85833); uids.Add(86096); uids.Add(86289); uids.Add(86515); uids.Add(86537); uids.Add(86806); uids.Add(86828); uids.Add(86919); uids.Add(87015); uids.Add(87027); uids.Add(87530); uids.Add(87905); uids.Add(88021); uids.Add(88321); uids.Add(88413); uids.Add(88554); uids.Add(88575); uids.Add(88951); uids.Add(88995); uids.Add(89142); uids.Add(89248); uids.Add(89276); uids.Add(89640); uids.Add(90000); uids.Add(90204); uids.Add(90537); uids.Add(90573); uids.Add(90630); uids.Add(90823); uids.Add(90940); uids.Add(90954); uids.Add(91048); uids.Add(91190); uids.Add(91328); uids.Add(91584); uids.Add(91892); uids.Add(92192); uids.Add(92233); uids.Add(92556); uids.Add(92826); uids.Add(92907); uids.Add(94165); uids.Add(94308); uids.Add(94333); uids.Add(94438); uids.Add(95092); uids.Add(95264); uids.Add(96559); uids.Add(96934); uids.Add(97455); uids.Add(97605); uids.Add(98636); uids.Add(99278); uids.Add(99602); uids.Add(99881); uids.Add(99986); uids.Add(100799); uids.Add(100871); uids.Add(101138); uids.Add(102019); uids.Add(102498); uids.Add(102993); uids.Add(104594); uids.Add(105145); uids.Add(105568); uids.Add(106287); uids.Add(106884); uids.Add(107104); uids.Add(107946); uids.Add(109212); uids.Add(109251); uids.Add(109606); uids.Add(120602); uids.Add(120749); uids.Add(120874); uids.Add(120892); uids.Add(120926); uids.Add(120940); uids.Add(120961); uids.Add(120971); uids.Add(120981); uids.Add(121038); uids.Add(121042); uids.Add(121057); uids.Add(121079); uids.Add(121094); uids.Add(121181); uids.Add(121188); uids.Add(121193); uids.Add(121213); uids.Add(121276); uids.Add(121328); uids.Add(121402); uids.Add(121457); uids.Add(121465); uids.Add(121475); uids.Add(121480); uids.Add(121539); uids.Add(121632); uids.Add(121641); uids.Add(121685); uids.Add(121708); uids.Add(121735); uids.Add(121750); uids.Add(121791); uids.Add(121810); uids.Add(121817); uids.Add(121836); uids.Add(121842); uids.Add(121854); uids.Add(121901); uids.Add(121908); uids.Add(121948); uids.Add(121950); uids.Add(121952); uids.Add(121960); uids.Add(121981); uids.Add(121997); uids.Add(122002); uids.Add(122016); uids.Add(122027); uids.Add(122059); uids.Add(122154); uids.Add(122165); uids.Add(122222); uids.Add(122278); uids.Add(122294); uids.Add(122357); uids.Add(122362); uids.Add(122390); uids.Add(122395); uids.Add(122407); uids.Add(122433); uids.Add(122455); uids.Add(122462); uids.Add(122469); uids.Add(122478); uids.Add(122481); uids.Add(122516); uids.Add(122526); uids.Add(122536); uids.Add(122549); uids.Add(122595); uids.Add(122659); uids.Add(122701); uids.Add(122719); uids.Add(122766); uids.Add(122827); uids.Add(122861); uids.Add(122866); uids.Add(122868); uids.Add(122877); uids.Add(122880); uids.Add(122926); uids.Add(122958); uids.Add(122959); uids.Add(122969); uids.Add(122977); uids.Add(122998); uids.Add(123004); uids.Add(123012); uids.Add(123044); uids.Add(123068); uids.Add(123076); uids.Add(123094); uids.Add(123152); uids.Add(123158); uids.Add(123173); uids.Add(123193); uids.Add(123201); uids.Add(123236); uids.Add(123253); uids.Add(123282); uids.Add(123302); uids.Add(123313); uids.Add(123328); uids.Add(123333); uids.Add(123334); uids.Add(123367); uids.Add(123451); uids.Add(123455); uids.Add(123456); uids.Add(123558); uids.Add(123563); uids.Add(123580); uids.Add(123664); uids.Add(123684); uids.Add(123702); uids.Add(123714); uids.Add(123724); uids.Add(123732); uids.Add(123754); uids.Add(123769); uids.Add(123807); uids.Add(123818); uids.Add(123853); uids.Add(123934); uids.Add(123938); uids.Add(123956); uids.Add(123968); uids.Add(123969); uids.Add(123991); uids.Add(124007); uids.Add(124049); uids.Add(124062); uids.Add(124114); uids.Add(124131); uids.Add(124146); uids.Add(124168); uids.Add(124180); uids.Add(124232); uids.Add(124255); uids.Add(124258); uids.Add(124287); uids.Add(124302); uids.Add(124310); uids.Add(124348); uids.Add(124447); uids.Add(124450); uids.Add(124455); uids.Add(124472); uids.Add(124611); uids.Add(124636); uids.Add(124674); uids.Add(124701); uids.Add(124726); uids.Add(124747); uids.Add(124803); uids.Add(124804); uids.Add(124868); uids.Add(124887); uids.Add(124889); uids.Add(124891); uids.Add(124903); uids.Add(124954); uids.Add(124979); uids.Add(124982); uids.Add(125001); uids.Add(125015); uids.Add(125019); uids.Add(125039); uids.Add(125161); uids.Add(125352); uids.Add(125434); uids.Add(125441); uids.Add(125453); uids.Add(125454); uids.Add(125455); uids.Add(125490); uids.Add(125516); uids.Add(125523); uids.Add(125613); uids.Add(125629); uids.Add(125682); uids.Add(125764); uids.Add(125801); uids.Add(125812); uids.Add(125823); uids.Add(125844); uids.Add(125854); uids.Add(125960); uids.Add(126144); uids.Add(126285); uids.Add(126312); uids.Add(126410); uids.Add(126425); uids.Add(126465); uids.Add(126474); uids.Add(126491); uids.Add(126556); uids.Add(126596); uids.Add(126609); uids.Add(126719); uids.Add(126730); uids.Add(126800); uids.Add(126806); uids.Add(126810); uids.Add(126814); uids.Add(126816); uids.Add(126820); uids.Add(126940); uids.Add(126966); uids.Add(127029); uids.Add(127108); uids.Add(127260); uids.Add(127429); uids.Add(127487); uids.Add(128235); uids.Add(128423); uids.Add(128430); uids.Add(128590); uids.Add(128743); uids.Add(128914); uids.Add(128966); uids.Add(129103); uids.Add(129879); uids.Add(130673); uids.Add(130731); uids.Add(131368); uids.Add(131386); uids.Add(132112); uids.Add(132295); uids.Add(132302); uids.Add(132418); uids.Add(134015); uids.Add(134363); uids.Add(134888); uids.Add(360); uids.Add(4064); uids.Add(4173); uids.Add(4298); uids.Add(4467); uids.Add(4648); uids.Add(5677); uids.Add(9845); uids.Add(10586); uids.Add(10988); uids.Add(11353); uids.Add(11554); uids.Add(11627); uids.Add(11628); uids.Add(12054); uids.Add(12057); uids.Add(12061); uids.Add(13968); uids.Add(14117); uids.Add(15946); uids.Add(16034); uids.Add(16330); uids.Add(16641); uids.Add(16705); uids.Add(17001); uids.Add(17471); uids.Add(17783); uids.Add(18373); uids.Add(18394); uids.Add(18739); uids.Add(19682); uids.Add(20153); uids.Add(22556); uids.Add(22596); uids.Add(22705); uids.Add(23355); uids.Add(23802); uids.Add(24160); uids.Add(24547); uids.Add(25276); uids.Add(26302); uids.Add(26303); uids.Add(29910); uids.Add(30029); uids.Add(30440); uids.Add(30764); uids.Add(31090); uids.Add(31231); uids.Add(31601); uids.Add(33509); uids.Add(34255); uids.Add(34585); uids.Add(35314); uids.Add(35585); uids.Add(37372); uids.Add(37934); uids.Add(38484); uids.Add(40237); uids.Add(43131); uids.Add(43782); uids.Add(45120); uids.Add(45345); uids.Add(47524); uids.Add(47646); uids.Add(47843); uids.Add(50227); uids.Add(52412); uids.Add(56852); uids.Add(57218); uids.Add(58125); uids.Add(58162); uids.Add(60071); uids.Add(60095); uids.Add(61151); uids.Add(61954); uids.Add(62377); uids.Add(63707); uids.Add(63886); uids.Add(65628); uids.Add(67058); uids.Add(68124); uids.Add(69152); uids.Add(70493); uids.Add(70788); uids.Add(72129); uids.Add(72425); uids.Add(72476); uids.Add(72492); uids.Add(73352); uids.Add(73730); uids.Add(73898); uids.Add(74209); uids.Add(74701); uids.Add(76191); uids.Add(77363); uids.Add(77623); uids.Add(78353); uids.Add(79156); uids.Add(79311); uids.Add(79439); uids.Add(80363); uids.Add(81289); uids.Add(81557); uids.Add(81633); uids.Add(82292); uids.Add(83620); uids.Add(84456); uids.Add(84606); uids.Add(84716); uids.Add(87819); uids.Add(90031); uids.Add(90286); uids.Add(90416); uids.Add(92352); uids.Add(92525); uids.Add(92835); uids.Add(93155); uids.Add(94764); uids.Add(95743); uids.Add(96082); uids.Add(96783); uids.Add(97507); uids.Add(97708); uids.Add(98304); uids.Add(98343); uids.Add(98485); uids.Add(98487); uids.Add(98729); uids.Add(99404); uids.Add(99418); uids.Add(101490); uids.Add(101790); uids.Add(103242); uids.Add(104704); uids.Add(105140); uids.Add(107237); uids.Add(107238); uids.Add(107429); uids.Add(108010); uids.Add(108078); uids.Add(108308); uids.Add(108485); uids.Add(108623); uids.Add(109424); uids.Add(109550); uids.Add(120566); uids.Add(120573); uids.Add(120586); uids.Add(120636); uids.Add(120658); uids.Add(120671); uids.Add(120688); uids.Add(120760); uids.Add(120773); uids.Add(120805); uids.Add(120847); uids.Add(120863); uids.Add(120910); uids.Add(120928); uids.Add(120934); uids.Add(120944); uids.Add(121010); uids.Add(121014); uids.Add(121137); uids.Add(121138); uids.Add(121224); uids.Add(121308); uids.Add(121558); uids.Add(121743); uids.Add(121850); uids.Add(122039); uids.Add(122414); uids.Add(122473); uids.Add(122492); uids.Add(122520); uids.Add(122527); uids.Add(122535); uids.Add(122571); uids.Add(122572); uids.Add(122716); uids.Add(122775); uids.Add(123014); uids.Add(123032); uids.Add(123284); uids.Add(123306); uids.Add(123535); uids.Add(123551); uids.Add(123564); uids.Add(123642); uids.Add(123653); uids.Add(123660); uids.Add(123672); uids.Add(123673); uids.Add(123677); uids.Add(123848); uids.Add(123858); uids.Add(123953); uids.Add(123994); uids.Add(124015); uids.Add(124029); uids.Add(124178); uids.Add(124183); uids.Add(124352); uids.Add(124353); uids.Add(124406); uids.Add(124497); uids.Add(124543); uids.Add(124553); uids.Add(124560); uids.Add(124561); uids.Add(124639); uids.Add(124661); uids.Add(124662); uids.Add(124681); uids.Add(124696); uids.Add(124739); uids.Add(124763); uids.Add(124842); uids.Add(124847); uids.Add(124849); uids.Add(125016); uids.Add(125032); uids.Add(125057); uids.Add(125145); uids.Add(125211); uids.Add(125242); uids.Add(125284); uids.Add(125292); uids.Add(125297); uids.Add(125350); uids.Add(125393); uids.Add(125428); uids.Add(125522); uids.Add(125673); uids.Add(125684); uids.Add(125685); uids.Add(125697); uids.Add(125708); uids.Add(125729); uids.Add(125766); uids.Add(125841); uids.Add(125864); uids.Add(125971); uids.Add(126026); uids.Add(126079); uids.Add(126108); uids.Add(126147); uids.Add(126193); uids.Add(126222); uids.Add(126233); uids.Add(126320); uids.Add(126325); uids.Add(126380); uids.Add(126489); uids.Add(126663); uids.Add(126683); uids.Add(126859); uids.Add(126881); uids.Add(127065); uids.Add(127408); uids.Add(127807); uids.Add(127853); uids.Add(127904); uids.Add(127939); uids.Add(128162); uids.Add(128585); uids.Add(128641); uids.Add(128812); uids.Add(128868); uids.Add(128870); uids.Add(129566); uids.Add(129596); uids.Add(129618); uids.Add(130939); uids.Add(131249); uids.Add(131770); uids.Add(132028); uids.Add(132466); uids.Add(135370); uids.Add(363); uids.Add(4595); uids.Add(4716); uids.Add(7016); uids.Add(7249); uids.Add(10321); uids.Add(10677); uids.Add(13129); uids.Add(14264); uids.Add(14272); uids.Add(14678); uids.Add(14706); uids.Add(14716); uids.Add(15124); uids.Add(15200); uids.Add(15335); uids.Add(16506); uids.Add(17210); uids.Add(17218); uids.Add(19381); uids.Add(20078); uids.Add(20133); uids.Add(20193); uids.Add(21034); uids.Add(21569); uids.Add(21979); uids.Add(22252); uids.Add(22660); uids.Add(22793); uids.Add(22797); uids.Add(23387); uids.Add(23978); uids.Add(24513); uids.Add(24592); uids.Add(25207); uids.Add(25231); uids.Add(25326); uids.Add(26165); uids.Add(26632); uids.Add(27412); uids.Add(27630); uids.Add(28997); uids.Add(29973); uids.Add(30708); uids.Add(31246); uids.Add(34474); uids.Add(35794); uids.Add(36176); uids.Add(36887); uids.Add(37752); uids.Add(39326); uids.Add(39329); uids.Add(39573); uids.Add(41128); uids.Add(41462); uids.Add(44066); uids.Add(44140); uids.Add(44153); uids.Add(44664); uids.Add(44684); uids.Add(44932); uids.Add(45545); uids.Add(46160); uids.Add(46397); uids.Add(46964); uids.Add(48252); uids.Add(49717); uids.Add(50145); uids.Add(50408); uids.Add(52495); uids.Add(54346); uids.Add(55824); uids.Add(55899); uids.Add(56196); uids.Add(56381); uids.Add(57505); uids.Add(58092); uids.Add(60633); uids.Add(61043); uids.Add(63331); uids.Add(64381); uids.Add(65080); uids.Add(65523); uids.Add(66667); uids.Add(69088); uids.Add(69559); uids.Add(70556); uids.Add(70771); uids.Add(71739); uids.Add(72027); uids.Add(72473); uids.Add(72564); uids.Add(72733); uids.Add(74498); uids.Add(74504); uids.Add(75236); uids.Add(75390); uids.Add(76061); uids.Add(76855); uids.Add(77256); uids.Add(77263); uids.Add(79066); uids.Add(79090); uids.Add(82185); uids.Add(82275); uids.Add(82806); uids.Add(83464); uids.Add(83549); uids.Add(83550); uids.Add(84152); uids.Add(85258); uids.Add(87252); uids.Add(88278); uids.Add(88991); uids.Add(89089); uids.Add(89167); uids.Add(91329); uids.Add(92453); uids.Add(93296); uids.Add(94180); uids.Add(94249); uids.Add(95741); uids.Add(95966); uids.Add(96534); uids.Add(97116); uids.Add(97930); uids.Add(98252); uids.Add(98621); uids.Add(98694); uids.Add(99291); uids.Add(99596); uids.Add(100273); uids.Add(100727); uids.Add(101397); uids.Add(101551); uids.Add(104321); uids.Add(105035); uids.Add(105569); uids.Add(106336); uids.Add(106494); uids.Add(106642); uids.Add(106935); uids.Add(107146); uids.Add(108862); uids.Add(109272); uids.Add(109628); uids.Add(109638); uids.Add(120621); uids.Add(120628); uids.Add(120803); uids.Add(122057); uids.Add(122060); uids.Add(122063); uids.Add(122070); uids.Add(122074); uids.Add(122126); uids.Add(122239); uids.Add(122308); uids.Add(122470); uids.Add(122477); uids.Add(122579); uids.Add(122602); uids.Add(122630); uids.Add(122933); uids.Add(123072); uids.Add(123143); uids.Add(123344); uids.Add(123873); uids.Add(123885); uids.Add(123908); uids.Add(124110); uids.Add(124210); uids.Add(124431); uids.Add(124458); uids.Add(124557); uids.Add(124569); uids.Add(124848); uids.Add(125128); uids.Add(125217); uids.Add(125334); uids.Add(125356); uids.Add(125359); uids.Add(125394); uids.Add(125415); uids.Add(125422); uids.Add(125452); uids.Add(125478); uids.Add(125487); uids.Add(125504); uids.Add(125541); uids.Add(125609); uids.Add(125642); uids.Add(125727); uids.Add(125825); foreach (int uid in uids) { Users user = db.Users.FirstOrDefault(m => m.Id == uid); if (user != null) { int BeforeLevel = user.UserLevel; int AfterLevel = 0; decimal TradeAmount = 0; bool check = db.TradeDaySummary.Any(m => m.UserId == user.Id && m.TradeMonth == TradeMonth && m.SeoTitle == "team"); if (check) { TradeAmount = db.TradeDaySummary.Where(m => m.UserId == user.Id && m.TradeMonth == TradeMonth && m.SeoTitle == "team").Sum(m => m.HelpNonDirectTradeAmt + m.NotHelpNonDirectTradeAmt); } function.WriteLog(user.Id.ToString() + "----" + TradeAmount, "创客升级业绩"); UserLevelSet set = sets.FirstOrDefault(m => m.UpLevelGrowth <= TradeAmount && m.UpLevelIntegral > TradeAmount); if (set != null) { AfterLevel = set.Id; } function.WriteLog("update Users set UserLevel=" + AfterLevel + " where Id=" + user.Id.ToString() + ";", "创客升级日志"); } } function.WriteLog(DateTime.Now.ToString(), "创客升级日志"); } catch (Exception ex) { function.WriteLog(ex.ToString(), "创客升级异常"); } db.Dispose(); } // 统计创客激活数 public void StartPosActNum() { Thread th = new Thread(StartPosActNumFor); th.IsBackground = true; th.Start(); } public void StartPosActNumFor() { // DateTime end = DateTime.Parse("2022-06-15 00:00:00"); // DateTime check = DateTime.Parse("2022-06-14"); // while (check <= end) // { // StartPosActNumDo(check.ToString("yyyy-MM-dd")); // check = check.AddDays(1); // } while (true) { if(DateTime.Now.Hour >= 2) { StartPosActNumEverTime(); } Thread.Sleep(100); } } public void StartPosActNumDo(object sender) { string date = sender.ToString(); function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "执行创客激活数日志"); WebCMSEntities db = new WebCMSEntities(); try { 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"; List uids = new List(); DataTable userDt = OtherMySqlConn.dtable("select Id,ParentNav from Users where Id in (select DISTINCT BuyUserId from PosMachinesTwo where QueryCount=0 and ActivationState=1 and ActivationTime>='" + start + "' and ActivationTime<'" + end + "')"); function.WriteLog("人数:" + userDt.Rows.Count + "\n\n", "执行创客激活数日志"); foreach (DataRow userDr in userDt.Rows) { int UserId = int.Parse(userDr["Id"].ToString()); string ParentNav = userDr["ParentNav"].ToString(); function.WriteLog(UserId + ":" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "执行创客激活数日志"); DataTable selfdt = OtherMySqlConn.dtable("select BrandId,count(Id) from PosMachinesTwo where QueryCount=0 and ActivationState=1 and ActivationTime>='" + start + "' and ActivationTime<'" + end + "' and BuyUserId=" + UserId + " group by BrandId"); function.WriteLog(UserId + ":" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "执行创客激活数日志"); foreach (DataRow selfDr in selfdt.Rows) { int BrandId = int.Parse(selfDr["BrandId"].ToString()); int QrPayFlag = 0; int ActCount = int.Parse(selfDr[1].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(); } selfStat.DirectDebitCapNum += ActCount; db.SaveChanges(); } 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 + ":team:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "执行创客激活数日志"); DataTable teamDt = OtherMySqlConn.dtable("select BrandId,count(Id) from PosMachinesTwo where QueryCount=0 and ActivationState=1 and ActivationTime>='" + start + "' and ActivationTime<'" + end + "' and BuyUserId in (select Id from Users where ParentNav like '%," + NavUserId + ",%' or Id=" + NavUserId + ") group by BrandId"); function.WriteLog(NavUserId + ":team:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "执行创客激活数日志"); foreach (DataRow teamDr in teamDt.Rows) { int BrandId = int.Parse(teamDr["BrandId"].ToString()); int QrPayFlag = 0; int ActCount = int.Parse(teamDr[1].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(); } teamStat.NonDirectDebitCapNum += ActCount; db.SaveChanges(); } } } } } OtherMySqlConn.op("update PosMachinesTwo set QueryCount=1 where QueryCount=0 and ActivationState=1 and ActivationTime>='" + start + "' and ActivationTime<'" + end + "'"); } 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", "执行创客激活数日志"); Thread.Sleep(60000); } public void StartPosActNumEverTime() { OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["Pxc1SqlConnStr"].ToString(); function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "实时执行创客激活数日志"); WebCMSEntities db = new WebCMSEntities(); try { DataTable idsDt = OtherMySqlConn.dtable("select Id from PosMachinesTwo where QueryCount=0 and ActivationState=1 and ActivationTime is not null and BuyUserId>0 limit 50"); if(idsDt.Rows.Count > 0) { string ids = ""; foreach (DataRow idsDr in idsDt.Rows) { ids += idsDr["Id"].ToString() + ","; } DataTable userDt = OtherMySqlConn.dtable("select BuyUserId,BrandId,DATE_FORMAT(ActivationTime, '%Y%m%d'),count(Id) from PosMachinesTwo where Id in (" + ids.TrimEnd(',') + ") group by BuyUserId,BrandId,DATE_FORMAT(ActivationTime, '%Y%m%d')"); if (userDt.Rows.Count > 0) { function.WriteLog("人数:" + userDt.Rows.Count + "\n\n", "实时执行创客激活数日志"); foreach (DataRow userDr in userDt.Rows) { int UserId = int.Parse(userDr["BuyUserId"].ToString()); int BrandId = int.Parse(userDr["BrandId"].ToString()); string TradeDate = userDr[2].ToString(); int ActCount = int.Parse(function.CheckInt(userDr[3].ToString())); int QrPayFlag = 0; string TradeMonth = TradeDate.Substring(0, 6); string date = TradeDate.Substring(0, 4) + "-" + TradeDate.Substring(4, 2) + "-" + TradeDate.Substring(6, 2); string start = date + " 00:00:00"; string end = DateTime.Parse(date).AddDays(1).ToString("yyyy-MM-dd") + " 00:00:00"; Users user = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users(); string ParentNav = user.ParentNav; 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(); } selfStat.DirectDebitCapNum += ActCount; ParentNav += "," + UserId + ","; if (!string.IsNullOrEmpty(ParentNav)) { string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(','); foreach (string NavUserIdString in ParentNavList) { int NavUserId = int.Parse(NavUserIdString); 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(); } teamStat.NonDirectDebitCapNum += ActCount; } } } db.SaveChanges(); OtherMySqlConn.op("update PosMachinesTwo set QueryCount=1 where Id in (" + ids.TrimEnd(',') + ")"); } } } 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", "实时执行创客激活数日志"); } // 统计新增创客数 public void StartNewUserNum() { Thread th = new Thread(StartNewUserNumFor); th.IsBackground = true; th.Start(); } public void StartNewUserNumFor() { // DateTime end = DateTime.Parse("2022-06-15 00:00:00"); // DateTime check = DateTime.Parse("2022-06-14"); // while (check <= end) // { // StartNewUserNumDo(check.ToString("yyyy-MM-dd")); // check = check.AddDays(1); // } while (true) { if(DateTime.Now.Hour >= 2) { StartNewUserNumEverTime(); } Thread.Sleep(120000); } } public void StartNewUserNumDo(object sender) { OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["Pxc1SqlConnStr"].ToString(); string date = sender.ToString(); function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "执行新增创客数日志"); WebCMSEntities db = new WebCMSEntities(); try { string StatDate = date.Replace("-", ""); string StatMonth = StatDate.Substring(0, 6); string start = date + " 00:00:00"; string end = DateTime.Parse(date).AddDays(1).ToString("yyyy-MM-dd") + " 00:00:00"; List uids = new List(); DataTable userDt = OtherMySqlConn.dtable("select Id,ParentNav from Users where QueryCount=0 and AuthFlag=1 and AuthDate>='" + start + "' and AuthDate<'" + end + "'"); function.WriteLog("人数:" + userDt.Rows.Count + "\n\n", "执行新增创客数日志"); foreach (DataRow userDr in userDt.Rows) { int UserId = int.Parse(userDr["Id"].ToString()); string ParentNav = userDr["ParentNav"].ToString(); function.WriteLog(UserId + ":" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "执行新增创客数日志"); DataTable selfdt = OtherMySqlConn.dtable("select count(Id) from Users where QueryCount=0 and AuthFlag=1 and AuthDate>='" + start + "' and AuthDate<'" + end + "' and ParentUserId=" + UserId + ""); function.WriteLog(UserId + ":" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "执行新增创客数日志"); foreach (DataRow selfDr in selfdt.Rows) { int AddCount = int.Parse(selfDr[0].ToString()); PullnewSummary selfStat = db.PullnewSummary.FirstOrDefault(m => m.UserId == UserId && m.StatMonth == StatMonth && m.StatDate == StatDate && m.SeoTitle == "self"); if (selfStat == null) { selfStat = db.PullnewSummary.Add(new PullnewSummary() { UserId = UserId, StatMonth = StatMonth, StatDate = StatDate, SeoTitle = "self", }).Entity; db.SaveChanges(); } selfStat.RecUserAuthNum += AddCount; db.SaveChanges(); } 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 + ":team:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "执行新增创客数日志"); DataTable teamDt = OtherMySqlConn.dtable("select count(Id) from Users where QueryCount=0 and AuthFlag=1 and AuthDate>='" + start + "' and AuthDate<'" + end + "' and ParentNav like '%," + NavUserId + ",%'"); function.WriteLog(NavUserId + ":team:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "执行新增创客数日志"); foreach (DataRow teamDr in teamDt.Rows) { int AddCount = int.Parse(teamDr[0].ToString()); PullnewSummary teamStat = db.PullnewSummary.FirstOrDefault(m => m.UserId == NavUserId && m.StatMonth == StatMonth && m.StatDate == StatDate && m.SeoTitle == "team"); if (teamStat == null) { teamStat = db.PullnewSummary.Add(new PullnewSummary() { UserId = NavUserId, StatMonth = StatMonth, StatDate = StatDate, SeoTitle = "team", }).Entity; db.SaveChanges(); } teamStat.RecUserAuthNum += AddCount; db.SaveChanges(); } } } } } OtherMySqlConn.op("update Users set QueryCount=1 where QueryCount=0 and AuthFlag=1 and AuthDate>='" + start + "' and AuthDate<'" + end + "'"); } 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", "执行新增创客数日志"); Thread.Sleep(60000); } public void StartNewUserNumEverTime() { OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["Pxc1SqlConnStr"].ToString(); function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "实时执行新增创客数日志"); WebCMSEntities db = new WebCMSEntities(); try { DataTable idsDt = OtherMySqlConn.dtable("select Id from Users where QueryCount=0 and AuthFlag=1 and AuthDate is not null limit 50"); if(idsDt.Rows.Count > 0) { string ids = ""; foreach (DataRow idsDr in idsDt.Rows) { ids += idsDr["Id"].ToString() + ","; } DataTable userDt = OtherMySqlConn.dtable("select ParentUserId,DATE_FORMAT(AuthDate, '%Y%m%d'),count(Id) from Users where Id in (" + ids.TrimEnd(',') + ") group by ParentUserId,DATE_FORMAT(AuthDate, '%Y%m%d')"); if(userDt.Rows.Count > 0) { function.WriteLog("人数:" + userDt.Rows.Count + "\n\n", "实时执行新增创客数日志"); foreach (DataRow userDr in userDt.Rows) { string StatDate = userDr[1].ToString(); int UserId = int.Parse(userDr["ParentUserId"].ToString()); string StatMonth = StatDate.Substring(0, 6); string date = StatDate.Substring(0, 4) + "-" + StatDate.Substring(4, 2) + "-" + StatDate.Substring(6, 2); string start = date + " 00:00:00"; string end = DateTime.Parse(date).AddDays(1).ToString("yyyy-MM-dd") + " 00:00:00"; int AddCount = int.Parse(userDr[2].ToString()); Users user = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users(); string ParentNav = user.ParentNav; PullnewSummary selfStat = db.PullnewSummary.FirstOrDefault(m => m.UserId == UserId && m.StatMonth == StatMonth && m.StatDate == StatDate && m.SeoTitle == "self"); if (selfStat == null) { selfStat = db.PullnewSummary.Add(new PullnewSummary() { UserId = UserId, StatMonth = StatMonth, StatDate = StatDate, SeoTitle = "self", }).Entity; db.SaveChanges(); } selfStat.RecUserAuthNum += AddCount; ParentNav += "," + UserId + ","; if (!string.IsNullOrEmpty(ParentNav)) { string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(','); foreach (string NavUserIdString in ParentNavList) { int NavUserId = int.Parse(NavUserIdString); PullnewSummary teamStat = db.PullnewSummary.FirstOrDefault(m => m.UserId == NavUserId && m.StatMonth == StatMonth && m.StatDate == StatDate && m.SeoTitle == "team"); if (teamStat == null) { teamStat = db.PullnewSummary.Add(new PullnewSummary() { UserId = NavUserId, StatMonth = StatMonth, StatDate = StatDate, SeoTitle = "team", }).Entity; db.SaveChanges(); } teamStat.RecUserAuthNum += AddCount; } } } db.SaveChanges(); OtherMySqlConn.op("update Users set QueryCount=1 where Id in (" + ids.TrimEnd(',') + ")"); } } } 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", "实时执行新增创客数日志"); } // 每天统计头一天的收益 public void StatProfit() { Thread th = new Thread(StatProfitDo); th.IsBackground = true; th.Start(); } public void StatProfitDo() { // DateTime end = DateTime.Parse("2022-06-16 00:00:00"); // DateTime check = DateTime.Parse("2022-06-16"); // while (check <= end) // { // StatProfitEverDay(check.ToString("yyyy-MM-dd")); // Thread.Sleep(1000); // check = check.AddDays(1); // } while (true) { if(DateTime.Now.Hour >= 2) { StatProfitEverDayEverTime(); } Thread.Sleep(120000); } } public void StatProfitEverDay(object sender) { OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["Pxc1SqlConnStr"].ToString(); string date = sender.ToString(); function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "执行昨天收益日志"); WebCMSEntities db = new WebCMSEntities(); try { 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"; List uids = new List(); DataTable startDt = OtherMySqlConn.dtable("select min(Id) from UserAccountRecord where CreateDate>='" + start + "'"); if (startDt.Rows.Count > 0) { startId = startDt.Rows[0][0].ToString(); } function.WriteLog(startId + "\n\n", "执行昨天收益日志"); DataTable userDt = OtherMySqlConn.dtable("select Id,ParentNav from Users where Id in (select DISTINCT UserId from UserAccountRecord where Id>=" + startId + " and CreateDate>='" + start + "' and CreateDate<'" + end + "')"); function.WriteLog("交易人数:" + userDt.Rows.Count + "\n\n", "执行昨天收益日志"); foreach (DataRow userDr in userDt.Rows) { int UserId = int.Parse(userDr["Id"].ToString()); string ParentNav = userDr["ParentNav"].ToString(); function.WriteLog(UserId + ":" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "执行昨天收益日志"); DataTable selfdt = OtherMySqlConn.dtable("select ChangeType,ProductType,sum(ChangeAmount) from UserAccountRecord where Id>=" + startId + " and CreateDate>='" + start + "' and CreateDate<'" + end + "' and UserId=" + UserId + " group by ChangeType,ProductType"); function.WriteLog(UserId + ":" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "执行昨天收益日志"); foreach (DataRow selfDr in selfdt.Rows) { int ChangeType = int.Parse(selfDr["ChangeType"].ToString()); int ProductType = int.Parse(selfDr["ProductType"].ToString()); decimal ProfitAmount = decimal.Parse(selfDr[2].ToString()); UserRebateDetail selfStat = db.UserRebateDetail.FirstOrDefault(m => m.UserId == UserId && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.RebateType == ChangeType && m.ProductType == ProductType && m.SeoTitle == "self"); if (selfStat == null) { selfStat = db.UserRebateDetail.Add(new UserRebateDetail() { UserId = UserId, TradeMonth = TradeMonth, TradeDate = TradeDate, RebateType = ChangeType, ProductType = ProductType, SeoTitle = "self", }).Entity; db.SaveChanges(); } selfStat.CreditRewardAmount += ProfitAmount; db.SaveChanges(); } 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 + ":team:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "执行昨天收益日志"); DataTable teamDt = OtherMySqlConn.dtable("select ChangeType,ProductType,sum(ChangeAmount) from UserAccountRecord where Id>=" + startId + " and CreateDate>='" + start + "' and CreateDate<'" + end + "' and UserId in (select Id from Users where ParentNav like '%," + NavUserId + ",%' or Id=" + NavUserId + ") group by ChangeType,ProductType"); function.WriteLog(NavUserId + ":team:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "执行昨天收益日志"); foreach (DataRow teamDr in teamDt.Rows) { int ChangeType = int.Parse(teamDr["ChangeType"].ToString()); int ProductType = int.Parse(teamDr["ProductType"].ToString()); decimal ProfitAmount = decimal.Parse(teamDr[2].ToString()); UserRebateDetail teamStat = db.UserRebateDetail.FirstOrDefault(m => m.UserId == NavUserId && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.RebateType == ChangeType && m.ProductType == ProductType && m.SeoTitle == "team"); if (teamStat == null) { teamStat = db.UserRebateDetail.Add(new UserRebateDetail() { UserId = NavUserId, TradeMonth = TradeMonth, TradeDate = TradeDate, RebateType = ChangeType, ProductType = ProductType, SeoTitle = "team", }).Entity; db.SaveChanges(); } teamStat.CreditRewardAmount += ProfitAmount; 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", "执行昨天收益日志"); } public void StatProfitEverDayEverTime() { OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["Pxc1SqlConnStr"].ToString(); function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "实时统计收益日志"); WebCMSEntities db = new WebCMSEntities(); try { string startId = function.ReadInstance("/UserAccountRecord/Id.txt"); if(string.IsNullOrEmpty(startId)) { startId = "160653"; } DataTable idsDt = OtherMySqlConn.dtable("select Id from UserAccountRecord where Id>=" + startId + " and QueryCount=0 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 userDt = OtherMySqlConn.dtable("select UserId,ChangeType,ProductType,DATE_FORMAT(CreateDate, '%Y%m%d'),sum(ChangeAmount) from UserAccountRecord where Id in (" + ids.TrimEnd(',') + ") group by UserId,ChangeType,ProductType,DATE_FORMAT(CreateDate, '%Y%m%d')"); if (userDt.Rows.Count > 0) { function.WriteLog("收益人数:" + userDt.Rows.Count + "\n\n", "实时统计收益日志"); foreach (DataRow userDr in userDt.Rows) { int UserId = int.Parse(userDr["UserId"].ToString()); int ChangeType = int.Parse(userDr["ChangeType"].ToString()); int ProductType = int.Parse(userDr["ProductType"].ToString()); string TradeDate = userDr[3].ToString(); decimal ProfitAmount = decimal.Parse(userDr[4].ToString()); string TradeMonth = TradeDate.Substring(0, 6); string date = TradeDate.Substring(0, 4) + "-" + TradeDate.Substring(4, 2) + "-" + TradeDate.Substring(6, 2); string start = date + " 00:00:00"; string end = DateTime.Parse(date).AddDays(1).ToString("yyyy-MM-dd") + " 00:00:00"; Users user = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users(); string ParentNav = user.ParentNav; UserRebateDetail selfStat = db.UserRebateDetail.FirstOrDefault(m => m.UserId == UserId && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.RebateType == ChangeType && m.ProductType == ProductType && m.SeoTitle == "self"); if (selfStat == null) { selfStat = db.UserRebateDetail.Add(new UserRebateDetail() { UserId = UserId, TradeMonth = TradeMonth, TradeDate = TradeDate, RebateType = ChangeType, ProductType = ProductType, SeoTitle = "self", }).Entity; db.SaveChanges(); } selfStat.CreditRewardAmount += ProfitAmount; ParentNav += "," + UserId + ","; if (!string.IsNullOrEmpty(ParentNav)) { string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(','); foreach (string NavUserIdString in ParentNavList) { int NavUserId = int.Parse(NavUserIdString); UserRebateDetail teamStat = db.UserRebateDetail.FirstOrDefault(m => m.UserId == NavUserId && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.RebateType == ChangeType && m.ProductType == ProductType && m.SeoTitle == "team"); if (teamStat == null) { teamStat = db.UserRebateDetail.Add(new UserRebateDetail() { UserId = NavUserId, TradeMonth = TradeMonth, TradeDate = TradeDate, RebateType = ChangeType, ProductType = ProductType, SeoTitle = "team", }).Entity; db.SaveChanges(); } teamStat.CreditRewardAmount += ProfitAmount; } } } db.SaveChanges(); OtherMySqlConn.op("update UserAccountRecord set QueryCount=1 where Id in (" + ids.TrimEnd(',') + ")"); function.WritePage("/UserAccountRecord/", "Id.txt", startId); } } } 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", "实时统计收益日志"); } // 实时统计我的创客交易额 public void StatMyUserThisTrade() { Thread th = new Thread(StatMyUserThisTradeDo); th.IsBackground = true; th.Start(); } public void StatMyUserThisTradeDo() { while (true) { if(DateTime.Now.Hour > 3) { StatMyUserThisTradeListen(); } int timespan = 1000 * 3600 * 3; Thread.Sleep(timespan); } } public void StatMyUserThisTradeListen() { OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["Pxc1SqlConnStr"].ToString(); string TradeMonth = DateTime.Now.ToString("yyyyMM"); // if(DateTime.Now.Day == 1) // { // TradeMonth = DateTime.Now.AddMonths(-1).ToString("yyyyMM"); // } DataTable list = OtherMySqlConn.dtable("select UserId,sum(HelpNonDirectTradeAmt+NotHelpNonDirectTradeAmt) from (select UserId,HelpNonDirectTradeAmt,NotHelpNonDirectTradeAmt from TradeDaySummary where TradeMonth='" + TradeMonth + "' and SeoTitle='team' and UserId>0) tb group by UserId"); string sql = ""; foreach (DataRow dr in list.Rows) { string UserId = dr["UserId"].ToString(); string ThisMonthTrade = dr[1].ToString(); sql += "update Users set ThisMonthTrade=" + ThisMonthTrade + " where Id=" + UserId + ";"; } if(!string.IsNullOrEmpty(sql)) { OtherMySqlConn.op(sql); } } #region 判断品牌互斥条件,根据身份证号 public bool CheckRepeatByBrand(WebCMSEntities db, int MerchantId) { int check = db.PosMachinesTwo.Count(m => m.Status > -1 && m.BindMerchantId == MerchantId); return false; } #endregion } }