using System; using System.Collections.Generic; using System.Linq; using System.Data; using MySystem.PxcModels; using Library; using System.Threading; using Microsoft.Extensions.Hosting; using System.Threading.Tasks; namespace MySystem { public class HelpProfitHelper { public readonly static HelpProfitHelper Instance = new HelpProfitHelper(); private HelpProfitHelper() { } public void Start() { Thread th = new Thread(StartFor); th.IsBackground = true; th.Start(); } public void StartFor() { while (true) { if(DateTime.Now.Hour >= 2)// && DateTime.Now.Hour <= 3) { StatProfitEveryDay(DateTime.Now.AddDays(-1).ToString("yyyyMMdd")); } Thread.Sleep(600000); } } public void StatProfitEveryDay(string Date) { string check = function.ReadInstance("/HelpProfitStat/" + Date + ".txt"); if (!string.IsNullOrEmpty(check)) { return; } function.WritePage("/HelpProfitStat/", Date + ".txt", DateTime.Now.ToString()); WebCMSEntities db = new WebCMSEntities(); List list = db.HelpProfitMerTradeSummay.Where(m => m.TradeDate == Date).ToList(); foreach(HelpProfitMerTradeSummay sub in list) { int MerchantId = sub.MerchantId; decimal TradeAmount = sub.TradeAmount; HelpProfitMerchantForUser merchant = db.HelpProfitMerchantForUser.FirstOrDefault(m => m.MerchantId == MerchantId); if(merchant != null) { int UserId = merchant.UserId; PosMerchantInfo mer = db.PosMerchantInfo.FirstOrDefault(m => m.Id == MerchantId) ?? new PosMerchantInfo(); string Name = mer.MerchantName; if (mer.BrandId == 2) { if (Name.Contains("-")) { Name = Name.Split('-')[1]; } else if (Name.Contains("_")) { Name = Name.Split('_')[1]; } } Name = Name.Replace("个体户", ""); Name = Name.Replace("个体商户", ""); Name = Name.Replace("企业户", ""); Name = Name.Replace("企业商户", ""); Users user = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users(); decimal money = TradeAmount * 0.0005M; decimal money2 = TradeAmount * 0.00005M; UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId); if (account == null) { account = db.UserAccount.Add(new UserAccount() { Id = UserId, UserId = UserId, }).Entity; db.SaveChanges(); } decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额 account.HelpProfitBalanceAmount += money; decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额 HelpProfitAccountRecord accountRecord = db.HelpProfitAccountRecord.Add(new HelpProfitAccountRecord() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, UserId = UserId, //创客 ProductType = mer.BrandId, //产品类型 ChangeType = 1, ChangeAmount = money, //变更金额 BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额 AfterBalanceAmount = AfterBalanceAmount, //变更后余额 Remark = Name.Substring(0, 1) + "**:" + DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + "交易" + TradeAmount.ToString("f2"), }).Entity; db.SaveChanges(); account = db.UserAccount.FirstOrDefault(m => m.Id == user.ParentUserId); if (account == null) { account = db.UserAccount.Add(new UserAccount() { Id = user.ParentUserId, UserId = user.ParentUserId, }).Entity; db.SaveChanges(); } BeforeBalanceAmount = account.BalanceAmount; //变更前余额 account.HelpProfitBalanceAmount += money2; AfterBalanceAmount = account.BalanceAmount; //变更后余额 accountRecord = db.HelpProfitAccountRecord.Add(new HelpProfitAccountRecord() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, UserId = user.ParentUserId, //创客 ProductType = mer.BrandId, //产品类型 ChangeType = 112, ChangeAmount = money2, //变更金额 BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额 AfterBalanceAmount = AfterBalanceAmount, //变更后余额 Remark = Name.Substring(0, 1) + "**:" + DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + "交易" + TradeAmount.ToString("f2"), }).Entity; db.SaveChanges(); string Month = Date.Substring(0, 6); HelpProfitRebateDetail selfStat = db.HelpProfitRebateDetail.FirstOrDefault(m => m.UserId == UserId && m.TradeMonth == Month && m.TradeDate == Date); if (selfStat == null) { selfStat = db.HelpProfitRebateDetail.Add(new HelpProfitRebateDetail() { TradeMonth = Month, TradeDate = Date, UserId = UserId, }).Entity; db.SaveChanges(); } selfStat.CreditRewardAmount += money; selfStat = db.HelpProfitRebateDetail.FirstOrDefault(m => m.UserId == user.ParentUserId && m.TradeMonth == Month && m.TradeDate == Date); if (selfStat == null) { selfStat = db.HelpProfitRebateDetail.Add(new HelpProfitRebateDetail() { TradeMonth = Month, TradeDate = Date, UserId = user.ParentUserId, }).Entity; db.SaveChanges(); } selfStat.CreditRewardAmount += money2; db.SaveChanges(); } } db.Dispose(); } } }