123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- 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<HelpProfitMerTradeSummay> list = db.HelpProfitMerTradeSummay.Where(m => m.TradeMonth == Month).ToList();
- function.WriteLog("开始:" + DateTime.Now.ToString(), "助利宝分润日志");
- function.WriteLog("总数:" + list.Count(), "助利宝分润日志");
- int index = 0;
- foreach(HelpProfitMerTradeSummay sub in list)
- {
- index += 1;
- 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();
- }
- function.WriteLog(index + "--Id:" + sub.Id + ";MerchantId:" + sub.MerchantId + ";", "助利宝分润日志");
- }
- db.Dispose();
- function.WriteLog("结束:" + DateTime.Now.ToString(), "助利宝分润日志");
- }
- 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, //奖励描述
- });
- }
- }
- }
|