| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- 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"), "统计交易额日志");
- }
-
- }
- }
|