123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- using System;
- using System.Collections.Generic;
- using System.Threading;
- using System.Threading.Tasks;
- using System.Linq;
- using Microsoft.Extensions.Hosting;
- using MySystem;
- using MySystem.PxcModels;
- using LitJson;
- using Library;
- public class TradeStatTimer
- {
- public readonly static TradeStatTimer Instance = new TradeStatTimer();
- private TradeStatTimer()
- {
- }
-
- public void Start()
- {
- Thread th = new Thread(DoWorks);
- th.IsBackground = true;
- th.Start();
- }
- private void DoWorks()
- {
- while (true)
- {
- string content = RedisDbconn.Instance.RPop<string>("TradeStatQueue");
- if (!string.IsNullOrEmpty(content))
- {
- JsonData jsonObj = JsonMapper.ToObject(content);
- string DateString = jsonObj["DateString"].ToString();
- int UserId = int.Parse(jsonObj["UserId"].ToString()); //创客ID
- int BrandId = int.Parse(jsonObj["BrandId"].ToString()); //品牌
- int BankCardType = int.Parse(jsonObj["BankCardType"].ToString()); //卡类型
- int MerchantId = int.Parse(jsonObj["MerchantId"].ToString()); //商户Id
- int QrPayFlag = int.Parse(jsonObj["QrPayFlag"].ToString()); //云闪付
- decimal TradeAmount = decimal.Parse(jsonObj["TradeAmount"].ToString()); //当日交易额
- string TradeMonth = DateTime.Parse(DateString).ToString("yyyyMM");
- string TradeDate = DateTime.Parse(DateString).ToString("yyyyMMdd");
- WebCMSEntities db = new WebCMSEntities();
- var tran = db.Database.BeginTransaction();
- try
- {
- PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == MerchantId) ?? new PosMerchantInfo();
- MachineForMerNo machineFor = db.MachineForMerNo.FirstOrDefault(m => m.MerNo == merchant.KqMerNo) ?? new MachineForMerNo();
- PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machineFor.SnId) ?? new PosMachinesTwo();
- int MerchantTypeUserId = int.Parse(function.CheckInt(pos.SeoTitle));
- if (MerchantTypeUserId > 0)
- {
- Users merchantUser = db.Users.FirstOrDefault(m => m.Id == MerchantTypeUserId && m.MerchantType == 1);
- if (merchantUser != null)
- {
- UserId = MerchantTypeUserId;
- }
- }
- RedisDbconn.Instance.AddNumber("MerTotalAmount:" + MerchantId, TradeAmount);
- RedisDbconn.Instance.AddNumber("MerTotalAmount:" + MerchantId + ":" + TradeMonth, TradeAmount); //商户当月交易
- RedisDbconn.Instance.AddNumber("MerTotalAmount:" + MerchantId + ":" + TradeDate, TradeAmount); //商户当日交易
- Users user = db.Users.FirstOrDefault(m => m.Id == UserId);
- if (user != null)
- {
- if (user.AuthFlag == 1)
- {
- // UserTradeDaySummary selfStat = db.UserTradeDaySummary.FirstOrDefault(m => m.UserId == UserId && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.BrandId == BrandId && m.QueryCount == QrPayFlag && m.Sort == MerchantId && m.SeoTitle == "self");
- // if (selfStat == null)
- // {
- // selfStat = db.UserTradeDaySummary.Add(new UserTradeDaySummary()
- // {
- // UserId = UserId,
- // TradeMonth = TradeMonth,
- // TradeDate = TradeDate,
- // BrandId = BrandId,
- // QueryCount = QrPayFlag,
- // Sort = MerchantId,
- // SeoTitle = "self",
- // }).Entity;
- // db.SaveChanges();
- // }
- // if (BankCardType == 0)
- // {
- // selfStat.DirectDebitTradeAmt += TradeAmount;
- // }
- // else if (BankCardType == 1)
- // {
- // selfStat.DirectTradeAmt += TradeAmount;
- // }
- // db.SaveChanges();
- RedisDbconn.Instance.AddNumber("TotalAmount:" + UserId, TradeAmount); //总交易
- RedisDbconn.Instance.AddNumber("TotalAmount:" + UserId + ":" + TradeDate, TradeAmount); //总交易
- RedisDbconn.Instance.AddNumber("TotalAmount:" + UserId + ":" + TradeMonth, TradeAmount); //总交易
- RedisDbconn.Instance.AddNumber("TotalAmount:" + UserId + ":" + BrandId + ":" + TradeDate, TradeAmount); //总交易
- RedisDbconn.Instance.AddNumber("TotalAmount:" + UserId + ":" + BrandId + ":" + TradeMonth, TradeAmount); //总交易
- if (QrPayFlag == 1)
- {
- RedisDbconn.Instance.AddNumber("TotalCloudPayAmount:" + UserId + ":" + TradeDate, TradeAmount); //云闪付小额交易额
- RedisDbconn.Instance.AddNumber("TotalCloudPayAmount:" + UserId + ":" + TradeMonth, TradeAmount); //云闪付小额交易额
- }
- else
- {
- RedisDbconn.Instance.AddNumber("TotalPosAmount:" + UserId + ":" + TradeDate, TradeAmount); //POS机刷卡交易额
- RedisDbconn.Instance.AddNumber("TotalPosAmount:" + UserId + ":" + TradeMonth, TradeAmount); //POS机刷卡交易额
- }
- string ParentNav = user.ParentNav;
- if (UserId != pos.UserId)
- {
- user = db.Users.FirstOrDefault(m => m.Id == pos.UserId);
- if (user != null)
- {
- ParentNav = user.ParentNav;
- UserId = pos.UserId;
- }
- }
- if (!string.IsNullOrEmpty(ParentNav))
- {
- ParentNav += "," + UserId + ",";
- string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(',');
- foreach (string UserIdString in ParentNavList)
- {
- int ParentUserId = int.Parse(UserIdString);
- // UserTradeDaySummary teamStat = db.UserTradeDaySummary.FirstOrDefault(m => m.UserId == ParentUserId && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.BrandId == BrandId && m.QueryCount == QrPayFlag && m.Sort == MerchantId && m.SeoTitle == "team");
- // if (teamStat == null)
- // {
- // teamStat = db.UserTradeDaySummary.Add(new UserTradeDaySummary()
- // {
- // UserId = ParentUserId,
- // TradeMonth = TradeMonth,
- // TradeDate = TradeDate,
- // BrandId = BrandId,
- // QueryCount = QrPayFlag,
- // Sort = MerchantId,
- // SeoTitle = "team",
- // }).Entity;
- // db.SaveChanges();
- // }
- // if (BankCardType == 0)
- // {
- // teamStat.NonDirectDebitTradeAmt += TradeAmount;
- // }
- // else if (BankCardType == 1)
- // {
- // teamStat.NonDirectTradeAmt += TradeAmount;
- // }
- // db.SaveChanges();
- RedisDbconn.Instance.AddNumber("TeamTotalAmount:" + ParentUserId, TradeAmount); //总交易
- RedisDbconn.Instance.AddNumber("TeamTotalAmount:" + ParentUserId + ":" + TradeDate, TradeAmount); //总交易
- RedisDbconn.Instance.AddNumber("TeamTotalAmount:" + ParentUserId + ":" + TradeMonth, TradeAmount); //总交易
- RedisDbconn.Instance.AddNumber("TeamTotalAmount:" + ParentUserId + ":" + BrandId + ":" + TradeDate, TradeAmount); //总交易
- RedisDbconn.Instance.AddNumber("TeamTotalAmount:" + ParentUserId + ":" + BrandId + ":" + TradeMonth, TradeAmount); //总交易
- if (QrPayFlag == 1)
- {
- RedisDbconn.Instance.AddNumber("TeamTotalCloudPayAmount:" + ParentUserId + ":" + TradeDate, TradeAmount); //云闪付小额交易额
- RedisDbconn.Instance.AddNumber("TeamTotalCloudPayAmount:" + ParentUserId + ":" + TradeMonth, TradeAmount); //云闪付小额交易额
- }
- else
- {
- RedisDbconn.Instance.AddNumber("TeamTotalPosAmount:" + ParentUserId + ":" + TradeDate, TradeAmount); //POS机刷卡交易额
- RedisDbconn.Instance.AddNumber("TeamTotalPosAmount:" + ParentUserId + ":" + TradeMonth, TradeAmount); //POS机刷卡交易额
- }
- }
- }
- }
- }
- tran.Commit();
- }
- catch (Exception ex)
- {
- function.WriteLog(DateTime.Now.ToString() + "\n" + content + "\n" + ex.ToString(), "统计交易额异常");
- tran.Rollback();
- }
- tran.Dispose();
- db.Dispose();
- }
- else
- {
- Thread.Sleep(900000);
- }
- }
- }
- }
|