StatGdNewService2.cs 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381
  1. using System;
  2. using System.Collections.Generic;
  3. using Library;
  4. using LitJson;
  5. using System.Linq;
  6. using System.Data;
  7. using System.Threading;
  8. using MySystem.PxcModels2;
  9. using MySystem.KxsProductModels;
  10. namespace MySystem
  11. {
  12. public class StatGdNewService2
  13. {
  14. public readonly static StatGdNewService2 Instance = new StatGdNewService2();
  15. private StatGdNewService2()
  16. { }
  17. // 统计交易额V2
  18. public void Start()
  19. {
  20. Thread th = new Thread(StartDo);
  21. th.IsBackground = true;
  22. th.Start();
  23. }
  24. public void StartDo()
  25. {
  26. while (true)
  27. {
  28. if(DateTime.Now.Hour >= 0 && RedisDbconn.Instance.Get<string>("StatServerStatus") == "1")
  29. {
  30. StatTradeAmount();
  31. }
  32. Thread.Sleep(100);
  33. }
  34. }
  35. public void StatTradeAmount()
  36. {
  37. string connstr = Library.ConfigurationManager.AppSettings["SqlConnStr2"].ToString();
  38. function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "统计创客归档交易日志2");
  39. PxcModels.WebCMSEntities db1 = new PxcModels.WebCMSEntities();
  40. PxcModels2.WebCMSEntities db = new PxcModels2.WebCMSEntities();
  41. KxsMainModels.WebCMSEntities maindb = new KxsMainModels.WebCMSEntities();
  42. KxsProductModels.WebCMSEntities pdb = new KxsProductModels.WebCMSEntities();
  43. using (var tran = db.Database.BeginTransaction())
  44. {
  45. try
  46. {
  47. string start = "2024-10-01 00:00:00";
  48. DataTable idsDt = CustomerSqlConn.dtable("select Id from ConsumerOrders where Id>=3344113 and CreateDate>='" + start + "' and Status>0 and Version=2 order by Id limit 100", connstr);
  49. if(idsDt.Rows.Count > 0)
  50. {
  51. string ids = "";
  52. foreach (DataRow idsDr in idsDt.Rows)
  53. {
  54. ids += idsDr["Id"].ToString() + ",";
  55. }
  56. DataTable selfDt = CustomerSqlConn.dtable("select UserId,MerchantId,SnNo,PayMode,IsAct,DATE_FORMAT(CreateDate,'%Y%m%d'),sum(PayMoney),count(Id),sum(MaxDivi),sum(MerchantActualAmount),Sort from ConsumerOrders where Id in (" + ids.TrimEnd(',') + ") group by UserId,MerchantId,SnNo,PayMode,IsAct,DATE_FORMAT(CreateDate,'%Y%m%d'),Sort", connstr);
  57. if (selfDt.Rows.Count > 0)
  58. {
  59. function.WriteLog("统计人数:" + selfDt.Rows.Count + "\n\n", "统计创客归档交易日志2");
  60. foreach (DataRow selfDr in selfDt.Rows)
  61. {
  62. int UserId = int.Parse(selfDr["UserId"].ToString());
  63. int MerchantId = int.Parse(selfDr["MerchantId"].ToString());
  64. string SnNo = selfDr["SnNo"].ToString();
  65. DateTime BindTime = DateTime.Now;
  66. MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == MerchantId) ?? new MerchantInfo();
  67. if(merchant.BrandId == 1)
  68. {
  69. KxsMachine pos = pdb.KxsMachine.FirstOrDefault(m => m.PosSn == SnNo && m.BindStatus == 1);
  70. if(pos != null)
  71. {
  72. UserId = pos.UserId;
  73. }
  74. }
  75. else
  76. {
  77. PxcModels.PosMachinesTwo pos = db1.PosMachinesTwo.FirstOrDefault(m => m.PosSn == SnNo) ?? new PxcModels.PosMachinesTwo();
  78. UserId = pos.UserId;
  79. BindTime = pos.BindingTime.Value;
  80. }
  81. KxsMainModels.Users user = maindb.Users.FirstOrDefault(m => m.Id == UserId) ?? new KxsMainModels.Users();
  82. string ParentNav = user.ParentNav; //selfDr["ParentNav"].ToString();
  83. if (BindTime < DateTime.Now.AddMonths(-9))
  84. {
  85. if (BindTime < DateTime.Parse("2025-01-01 00:00:00"))
  86. {
  87. StatOldBefore(db, selfDr, UserId, ParentNav);
  88. }
  89. else
  90. {
  91. StatNewBefore(db, selfDr, UserId, ParentNav);
  92. }
  93. }
  94. else
  95. {
  96. if (BindTime < DateTime.Parse("2025-01-01 00:00:00"))
  97. {
  98. StatOldAfter(db, selfDr, UserId, ParentNav);
  99. }
  100. else
  101. {
  102. StatNewAfter(db, selfDr, UserId, ParentNav);
  103. }
  104. }
  105. }
  106. CustomerSqlConn.op("update ConsumerOrders set Version=3 where Id in (" + ids.TrimEnd(',') + ")", connstr);
  107. }
  108. }
  109. tran.Commit();
  110. }
  111. catch (Exception ex)
  112. {
  113. tran.Rollback();
  114. function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "统计创客归档交易日志2异常");
  115. }
  116. }
  117. db1.Dispose();
  118. db.Dispose();
  119. maindb.Dispose();
  120. pdb.Dispose();
  121. function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "统计创客归档交易日志2");
  122. }
  123. public void StatNewBefore(PxcModels2.WebCMSEntities db, DataRow selfDr, int UserId, string ParentNav)
  124. {
  125. int MerchantId = int.Parse(selfDr["MerchantId"].ToString());
  126. int PayMode = int.Parse(selfDr["PayMode"].ToString());
  127. int IsAct = int.Parse(selfDr["IsAct"].ToString());
  128. string SnNo = selfDr["SnNo"].ToString();
  129. string TradeDate = selfDr[5].ToString();
  130. decimal TradeAmount = decimal.Parse(selfDr[6].ToString());
  131. int TradeCount = int.Parse(selfDr[7].ToString());
  132. decimal MaxDivi = decimal.Parse(selfDr[8].ToString());
  133. decimal ActualAmount = decimal.Parse(selfDr[9].ToString());
  134. string TradeMonth = TradeDate.Substring(0, 6);
  135. int Sort = int.Parse(selfDr["Sort"].ToString());
  136. //创客交易额
  137. UserAmountSummaryNewBefore selfStat = db.UserAmountSummaryNewBefore.FirstOrDefault(m => m.Id >= 17385 && m.UserId == UserId && m.IsAct == IsAct && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.PayMode == PayMode && m.SeoTitle == "self" && m.Sort == Sort);
  138. if (selfStat == null)
  139. {
  140. selfStat = db.UserAmountSummaryNewBefore.Add(new UserAmountSummaryNewBefore()
  141. {
  142. UserId = UserId,
  143. TradeMonth = TradeMonth,
  144. TradeDate = TradeDate,
  145. PayMode = PayMode,
  146. IsAct = IsAct,
  147. SeoTitle = "self",
  148. Sort = Sort,
  149. }).Entity;
  150. db.SaveChanges();
  151. }
  152. selfStat.TotalAmount += TradeAmount;
  153. selfStat.TradeCount += TradeCount;
  154. ParentNav += "," + UserId + ",";
  155. if (!string.IsNullOrEmpty(ParentNav))
  156. {
  157. string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(',');
  158. foreach (string NavUserIdString in ParentNavList)
  159. {
  160. int NavUserId = int.Parse(NavUserIdString);
  161. UserAmountSummaryNewBefore teamStat = db.UserAmountSummaryNewBefore.FirstOrDefault(m => m.Id >= 17385 && m.UserId == NavUserId && m.IsAct == IsAct && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.PayMode == PayMode && m.SeoTitle == "team" && m.Sort == Sort);
  162. if (teamStat == null)
  163. {
  164. teamStat = db.UserAmountSummaryNewBefore.Add(new UserAmountSummaryNewBefore()
  165. {
  166. UserId = NavUserId,
  167. TradeMonth = TradeMonth,
  168. TradeDate = TradeDate,
  169. PayMode = PayMode,
  170. IsAct = IsAct,
  171. SeoTitle = "team",
  172. Sort = Sort,
  173. }).Entity;
  174. db.SaveChanges();
  175. }
  176. teamStat.TotalAmount += TradeAmount;
  177. teamStat.TradeCount += TradeCount;
  178. }
  179. }
  180. db.SaveChanges();
  181. }
  182. public void StatNewAfter(PxcModels2.WebCMSEntities db, DataRow selfDr, int UserId, string ParentNav)
  183. {
  184. int MerchantId = int.Parse(selfDr["MerchantId"].ToString());
  185. int PayMode = int.Parse(selfDr["PayMode"].ToString());
  186. int IsAct = int.Parse(selfDr["IsAct"].ToString());
  187. string SnNo = selfDr["SnNo"].ToString();
  188. string TradeDate = selfDr[5].ToString();
  189. decimal TradeAmount = decimal.Parse(selfDr[6].ToString());
  190. int TradeCount = int.Parse(selfDr[7].ToString());
  191. decimal MaxDivi = decimal.Parse(selfDr[8].ToString());
  192. decimal ActualAmount = decimal.Parse(selfDr[9].ToString());
  193. string TradeMonth = TradeDate.Substring(0, 6);
  194. int Sort = int.Parse(selfDr["Sort"].ToString());
  195. //创客交易额
  196. UserAmountSummaryNewAfter selfStat = db.UserAmountSummaryNewAfter.FirstOrDefault(m => m.Id >= 805733 && m.UserId == UserId && m.IsAct == IsAct && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.PayMode == PayMode && m.SeoTitle == "self" && m.Sort == Sort);
  197. if (selfStat == null)
  198. {
  199. selfStat = db.UserAmountSummaryNewAfter.Add(new UserAmountSummaryNewAfter()
  200. {
  201. UserId = UserId,
  202. TradeMonth = TradeMonth,
  203. TradeDate = TradeDate,
  204. PayMode = PayMode,
  205. IsAct = IsAct,
  206. SeoTitle = "self",
  207. Sort = Sort,
  208. }).Entity;
  209. db.SaveChanges();
  210. }
  211. selfStat.TotalAmount += TradeAmount;
  212. selfStat.TradeCount += TradeCount;
  213. ParentNav += "," + UserId + ",";
  214. if (!string.IsNullOrEmpty(ParentNav))
  215. {
  216. string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(',');
  217. foreach (string NavUserIdString in ParentNavList)
  218. {
  219. int NavUserId = int.Parse(NavUserIdString);
  220. UserAmountSummaryNewAfter teamStat = db.UserAmountSummaryNewAfter.FirstOrDefault(m => m.Id >= 805733 && m.UserId == NavUserId && m.IsAct == IsAct && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.PayMode == PayMode && m.SeoTitle == "team" && m.Sort == Sort);
  221. if (teamStat == null)
  222. {
  223. teamStat = db.UserAmountSummaryNewAfter.Add(new UserAmountSummaryNewAfter()
  224. {
  225. UserId = NavUserId,
  226. TradeMonth = TradeMonth,
  227. TradeDate = TradeDate,
  228. PayMode = PayMode,
  229. IsAct = IsAct,
  230. SeoTitle = "team",
  231. Sort = Sort,
  232. }).Entity;
  233. db.SaveChanges();
  234. }
  235. teamStat.TotalAmount += TradeAmount;
  236. teamStat.TradeCount += TradeCount;
  237. }
  238. }
  239. db.SaveChanges();
  240. }
  241. public void StatOldBefore(PxcModels2.WebCMSEntities db, DataRow selfDr, int UserId, string ParentNav)
  242. {
  243. int MerchantId = int.Parse(selfDr["MerchantId"].ToString());
  244. int PayMode = int.Parse(selfDr["PayMode"].ToString());
  245. int IsAct = int.Parse(selfDr["IsAct"].ToString());
  246. string SnNo = selfDr["SnNo"].ToString();
  247. string TradeDate = selfDr[5].ToString();
  248. decimal TradeAmount = decimal.Parse(selfDr[6].ToString());
  249. int TradeCount = int.Parse(selfDr[7].ToString());
  250. decimal MaxDivi = decimal.Parse(selfDr[8].ToString());
  251. decimal ActualAmount = decimal.Parse(selfDr[9].ToString());
  252. string TradeMonth = TradeDate.Substring(0, 6);
  253. int Sort = int.Parse(selfDr["Sort"].ToString());
  254. //创客交易额
  255. UserAmountSummaryOldBefore selfStat = db.UserAmountSummaryOldBefore.FirstOrDefault(m => m.Id >= 17385 && m.UserId == UserId && m.IsAct == IsAct && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.PayMode == PayMode && m.SeoTitle == "self" && m.Sort == Sort);
  256. if (selfStat == null)
  257. {
  258. selfStat = db.UserAmountSummaryOldBefore.Add(new UserAmountSummaryOldBefore()
  259. {
  260. UserId = UserId,
  261. TradeMonth = TradeMonth,
  262. TradeDate = TradeDate,
  263. PayMode = PayMode,
  264. IsAct = IsAct,
  265. SeoTitle = "self",
  266. Sort = Sort,
  267. }).Entity;
  268. db.SaveChanges();
  269. }
  270. selfStat.TotalAmount += TradeAmount;
  271. selfStat.TradeCount += TradeCount;
  272. ParentNav += "," + UserId + ",";
  273. if (!string.IsNullOrEmpty(ParentNav))
  274. {
  275. string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(',');
  276. foreach (string NavUserIdString in ParentNavList)
  277. {
  278. int NavUserId = int.Parse(NavUserIdString);
  279. UserAmountSummaryOldBefore teamStat = db.UserAmountSummaryOldBefore.FirstOrDefault(m => m.Id >= 17385 && m.UserId == NavUserId && m.IsAct == IsAct && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.PayMode == PayMode && m.SeoTitle == "team" && m.Sort == Sort);
  280. if (teamStat == null)
  281. {
  282. teamStat = db.UserAmountSummaryOldBefore.Add(new UserAmountSummaryOldBefore()
  283. {
  284. UserId = NavUserId,
  285. TradeMonth = TradeMonth,
  286. TradeDate = TradeDate,
  287. PayMode = PayMode,
  288. IsAct = IsAct,
  289. SeoTitle = "team",
  290. Sort = Sort,
  291. }).Entity;
  292. db.SaveChanges();
  293. }
  294. teamStat.TotalAmount += TradeAmount;
  295. teamStat.TradeCount += TradeCount;
  296. }
  297. }
  298. db.SaveChanges();
  299. }
  300. public void StatOldAfter(PxcModels2.WebCMSEntities db, DataRow selfDr, int UserId, string ParentNav)
  301. {
  302. int MerchantId = int.Parse(selfDr["MerchantId"].ToString());
  303. int PayMode = int.Parse(selfDr["PayMode"].ToString());
  304. int IsAct = int.Parse(selfDr["IsAct"].ToString());
  305. string SnNo = selfDr["SnNo"].ToString();
  306. string TradeDate = selfDr[5].ToString();
  307. decimal TradeAmount = decimal.Parse(selfDr[6].ToString());
  308. int TradeCount = int.Parse(selfDr[7].ToString());
  309. decimal MaxDivi = decimal.Parse(selfDr[8].ToString());
  310. decimal ActualAmount = decimal.Parse(selfDr[9].ToString());
  311. string TradeMonth = TradeDate.Substring(0, 6);
  312. int Sort = int.Parse(selfDr["Sort"].ToString());
  313. //创客交易额
  314. UserAmountSummaryOldAfter selfStat = db.UserAmountSummaryOldAfter.FirstOrDefault(m => m.Id >= 805733 && m.UserId == UserId && m.IsAct == IsAct && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.PayMode == PayMode && m.SeoTitle == "self" && m.Sort == Sort);
  315. if (selfStat == null)
  316. {
  317. selfStat = db.UserAmountSummaryOldAfter.Add(new UserAmountSummaryOldAfter()
  318. {
  319. UserId = UserId,
  320. TradeMonth = TradeMonth,
  321. TradeDate = TradeDate,
  322. PayMode = PayMode,
  323. IsAct = IsAct,
  324. SeoTitle = "self",
  325. Sort = Sort,
  326. }).Entity;
  327. db.SaveChanges();
  328. }
  329. selfStat.TotalAmount += TradeAmount;
  330. selfStat.TradeCount += TradeCount;
  331. ParentNav += "," + UserId + ",";
  332. if (!string.IsNullOrEmpty(ParentNav))
  333. {
  334. string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(',');
  335. foreach (string NavUserIdString in ParentNavList)
  336. {
  337. int NavUserId = int.Parse(NavUserIdString);
  338. UserAmountSummaryOldAfter teamStat = db.UserAmountSummaryOldAfter.FirstOrDefault(m => m.Id >= 805733 && m.UserId == NavUserId && m.IsAct == IsAct && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.PayMode == PayMode && m.SeoTitle == "team" && m.Sort == Sort);
  339. if (teamStat == null)
  340. {
  341. teamStat = db.UserAmountSummaryOldAfter.Add(new UserAmountSummaryOldAfter()
  342. {
  343. UserId = NavUserId,
  344. TradeMonth = TradeMonth,
  345. TradeDate = TradeDate,
  346. PayMode = PayMode,
  347. IsAct = IsAct,
  348. SeoTitle = "team",
  349. Sort = Sort,
  350. }).Entity;
  351. db.SaveChanges();
  352. }
  353. teamStat.TotalAmount += TradeAmount;
  354. teamStat.TradeCount += TradeCount;
  355. }
  356. }
  357. db.SaveChanges();
  358. }
  359. }
  360. }