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.Day == 1 && DateTime.Now.Hour >= 2 && DateTime.Now.Hour <= 3) { StatProfitEveryDay(DateTime.Now.AddMonths(-1).ToString("yyyyMM")); } Thread.Sleep(600000); } } public void StatProfitEveryDay(string Month) { string check = function.ReadInstance("/HelpProfitStat/" + Month + ".txt"); if (!string.IsNullOrEmpty(check)) { return; } function.WritePage("/HelpProfitStat/", Month + ".txt", DateTime.Now.ToString()); WebCMSEntities db = new WebCMSEntities(); List list = db.HelpProfitMerTradeSummay.Where(m => m.TradeMonth == Month).ToList(); foreach(HelpProfitMerTradeSummay sub in list) { int MerchantId = sub.MerchantId; decimal TradeAmount = sub.TradeAmount; string TradeDate = sub.TradeDate; 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(); MachineForMerNo merFor = db.MachineForMerNo.FirstOrDefault(m => m.MerNo == mer.KqMerNo) ?? new MachineForMerNo(); PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == merFor.SnId) ?? new PosMachinesTwo(); // 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; //变更后余额 // UserAccountRecord accountRecord = db.UserAccountRecord.Add(new UserAccountRecord() // { // CreateDate = DateTime.Now, // UpdateDate = DateTime.Now, // Sort = MerchantId, // UserId = UserId, //创客 // ProductType = 101, //产品类型 // 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; AddProfitRecord(db, user, pos, mer, TradeAmount, money, TradeDate, 1); 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.UserAccountRecord.Add(new UserAccountRecord() // { // CreateDate = DateTime.Now, // UpdateDate = DateTime.Now, // Sort = MerchantId, // UserId = user.ParentUserId, //创客 // ProductType = 101, //产品类型 // 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; int ParentUserId = user.ParentUserId; while(ParentUserId > 0) { Users puser = db.Users.FirstOrDefault(m => m.Id == ParentUserId); if(puser != null) { bool op = db.Orders.Any(m => m.UserId == ParentUserId && m.Status > 0 && m.ProductId == 34); if(op) { AddProfitRecord(db, puser, pos, mer, TradeAmount, money2, TradeDate, 112); db.SaveChanges(); ParentUserId = 0; } else { ParentUserId = puser.ParentUserId; } } else { ParentUserId = 0; } } // 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(); } private void AddProfitRecord(WebCMSEntities db, Users puser, PosMachinesTwo pos, PosMerchantInfo merchant, decimal TradeAmount, decimal Prize, string TradeDate, int RewardType) { if(Prize == 0) { return; } string RewardDesc = "助利宝分润"; if(RewardType == 112) { RewardDesc = "助利宝推荐分润"; } string TradeMonth = TradeDate.Substring(0, 6); HelpProfitRewardDetail detail = db.HelpProfitRewardDetail.Add(new HelpProfitRewardDetail() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, TradeMonth = TradeMonth, //交易月 SeoTitle = TradeDate, 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 = RewardType, //奖励类型 RewardTips = RewardDesc, //奖励描述 CreditTradeAmt = TradeAmount, //贷记卡交易总金额 CreditRewardAmount = Prize, //贷记卡交易奖励金额 RewardDesc = RewardDesc, //奖励描述 }).Entity; db.HelpProfitReward.Add(new HelpProfitReward() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, TradeMonth = TradeMonth, //交易月 SeoTitle = TradeDate, UserId = puser.Id, //创客 BrandId = pos.BrandId, //品牌 RewardType = RewardType, //奖励类型 CreditTradeAmt = TradeAmount, //贷记卡交易总金额 CreditRewardAmount = Prize, //贷记卡交易奖励金额 RewardDesc = RewardDesc, //奖励描述 }); } } }