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(); 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, //变更后余额 }).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 = 1, ChangeAmount = money2, //变更金额 BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额 AfterBalanceAmount = AfterBalanceAmount, //变更后余额 }).Entity; db.SaveChanges(); } } db.Dispose(); } } }