|
|
@@ -0,0 +1,140 @@
|
|
|
+using System;
|
|
|
+using System.Collections.Generic;
|
|
|
+using Library;
|
|
|
+using LitJson;
|
|
|
+using System.Linq;
|
|
|
+using System.Data;
|
|
|
+using System.Threading;
|
|
|
+using MySystem.PxcModels;
|
|
|
+
|
|
|
+namespace MySystem
|
|
|
+{
|
|
|
+ public class StatTradeCheckService
|
|
|
+ {
|
|
|
+ public readonly static StatTradeCheckService Instance = new StatTradeCheckService();
|
|
|
+ private StatTradeCheckService()
|
|
|
+ { }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // 统计交易额
|
|
|
+ public void StartCheck()
|
|
|
+ {
|
|
|
+ Thread th = new Thread(StartCheckDo);
|
|
|
+ th.IsBackground = true;
|
|
|
+ th.Start();
|
|
|
+ }
|
|
|
+ public void StartCheckDo()
|
|
|
+ {
|
|
|
+ while (true)
|
|
|
+ {
|
|
|
+ string content = RedisDbconn.Instance.RPop<string>("StatTradeCheck2Queue");
|
|
|
+ if(!string.IsNullOrEmpty(content))
|
|
|
+ {
|
|
|
+ StatTradeAmountCheckDo(content);
|
|
|
+ StatTradeAmountCheck2Do(content);
|
|
|
+ Thread.Sleep(100);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Thread.Sleep(10000);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public void StatTradeAmountCheckDo(string date)
|
|
|
+ {
|
|
|
+ function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "统计交易额日志");
|
|
|
+ try
|
|
|
+ {
|
|
|
+ date = date.Replace("-", "");
|
|
|
+ WebCMSEntities db = new WebCMSEntities();
|
|
|
+ KxsMainModels.WebCMSEntities kxsdb = new KxsMainModels.WebCMSEntities();
|
|
|
+ List<UserAmountSummary> list = db.UserAmountSummary.Where(m => m.TradeDate == date).ToList();
|
|
|
+ List<int> uids = list.Select(m => m.UserId).Distinct().ToList();
|
|
|
+ var users = kxsdb.Users.Select(m => new { m.Id, m.ParentNav }).Where(m => uids.Contains(m.Id)).ToList();
|
|
|
+ db.Dispose();
|
|
|
+ foreach(UserAmountSummary sub in list.Where(m => m.SeoTitle == "team").ToList())
|
|
|
+ {
|
|
|
+ string puidstr = "," + sub.UserId + ",";
|
|
|
+ List<int> subuids = users.Where(m => m.Id == sub.UserId || m.ParentNav.Contains(puidstr)).ToList().Select(m => m.Id).ToList();
|
|
|
+ bool op = list.Any(m => subuids.Contains(m.UserId) && m.PayMode == sub.PayMode && m.TradeDate == sub.TradeDate && m.SeoTitle == "self" && m.IsAct == sub.IsAct);
|
|
|
+ if(op)
|
|
|
+ {
|
|
|
+ decimal TotalAmount = list.Where(m => subuids.Contains(m.UserId) && m.PayMode == sub.PayMode && m.TradeDate == sub.TradeDate && m.SeoTitle == "self" && m.IsAct == sub.IsAct).Sum(m => m.TotalAmount);
|
|
|
+ int TradeCount = list.Where(m => subuids.Contains(m.UserId) && m.PayMode == sub.PayMode && m.TradeDate == sub.TradeDate && m.SeoTitle == "self" && m.IsAct == sub.IsAct).Sum(m => m.TradeCount);
|
|
|
+ string setField = "";
|
|
|
+ if(sub.TotalAmount != TotalAmount)
|
|
|
+ {
|
|
|
+ setField += "TotalAmount=" + TotalAmount + ",";
|
|
|
+ }
|
|
|
+ if(sub.TradeCount != TradeCount)
|
|
|
+ {
|
|
|
+ setField += "TradeCount=" + TradeCount + ",";
|
|
|
+ }
|
|
|
+ if(!string.IsNullOrEmpty(setField))
|
|
|
+ {
|
|
|
+ function.WriteLog("UserId:" + sub.UserId + "; TradeDate:" + sub.TradeDate + "; TotalAmount:" + sub.TotalAmount + "--" + TotalAmount + "; TradeCount:" + sub.TradeCount + "--" + TradeCount + ";", "交易不一致的创客");
|
|
|
+ function.WriteLog("update UserAmountSummary set " + setField.TrimEnd(',') + " where Id=" + sub.Id, "要执行的sql脚本");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "统计交易额异常");
|
|
|
+ }
|
|
|
+ function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "统计交易额日志");
|
|
|
+ }
|
|
|
+
|
|
|
+ public void StatTradeAmountCheck2Do(string date)
|
|
|
+ {
|
|
|
+ function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "统计交易额日志");
|
|
|
+ try
|
|
|
+ {
|
|
|
+ date = date.Replace("-", "");
|
|
|
+ PxcModels2.WebCMSEntities db = new PxcModels2.WebCMSEntities();
|
|
|
+ KxsMainModels.WebCMSEntities kxsdb = new KxsMainModels.WebCMSEntities();
|
|
|
+ List<PxcModels2.UserAmountSummary> list = db.UserAmountSummary.Where(m => m.TradeDate == date).ToList();
|
|
|
+ List<int> uids = list.Select(m => m.UserId).Distinct().ToList();
|
|
|
+ var users = kxsdb.Users.Select(m => new { m.Id, m.ParentNav }).Where(m => uids.Contains(m.Id)).ToList();
|
|
|
+ db.Dispose();
|
|
|
+ foreach(PxcModels2.UserAmountSummary sub in list.Where(m => m.SeoTitle == "team").ToList())
|
|
|
+ {
|
|
|
+ string puidstr = "," + sub.UserId + ",";
|
|
|
+ List<int> subuids = users.Where(m => m.Id == sub.UserId || m.ParentNav.Contains(puidstr)).ToList().Select(m => m.Id).ToList();
|
|
|
+ bool op = list.Any(m => subuids.Contains(m.UserId) && m.PayMode == sub.PayMode && m.TradeDate == sub.TradeDate && m.SeoTitle == "self" && m.IsAct == sub.IsAct);
|
|
|
+ if(op)
|
|
|
+ {
|
|
|
+ decimal TotalAmount = list.Where(m => subuids.Contains(m.UserId) && m.PayMode == sub.PayMode && m.TradeDate == sub.TradeDate && m.SeoTitle == "self" && m.IsAct == sub.IsAct).Sum(m => m.TotalAmount);
|
|
|
+ int TradeCount = list.Where(m => subuids.Contains(m.UserId) && m.PayMode == sub.PayMode && m.TradeDate == sub.TradeDate && m.SeoTitle == "self" && m.IsAct == sub.IsAct).Sum(m => m.TradeCount);
|
|
|
+ string setField = "";
|
|
|
+ if(sub.TotalAmount != TotalAmount)
|
|
|
+ {
|
|
|
+ setField += "TotalAmount=" + TotalAmount + ",";
|
|
|
+ }
|
|
|
+ if(sub.TradeCount != TradeCount)
|
|
|
+ {
|
|
|
+ setField += "TradeCount=" + TradeCount + ",";
|
|
|
+ }
|
|
|
+ if(!string.IsNullOrEmpty(setField))
|
|
|
+ {
|
|
|
+ function.WriteLog("UserId:" + sub.UserId + "; TradeDate:" + sub.TradeDate + "; TotalAmount:" + sub.TotalAmount + "--" + TotalAmount + "; TradeCount:" + sub.TradeCount + "--" + TradeCount + ";", "交易不一致的创客2");
|
|
|
+ function.WriteLog("update UserAmountSummary set " + setField.TrimEnd(',') + " where Id=" + sub.Id, "要执行的sql脚本2");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "统计交易额异常");
|
|
|
+ }
|
|
|
+ function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "统计交易额日志");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+}
|