StatNew2.cs 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553
  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. namespace MySystem
  10. {
  11. public class StatNew2
  12. {
  13. public readonly static StatNew2 Instance = new StatNew2();
  14. private StatNew2()
  15. { }
  16. // 统计交易额V2
  17. public void Start()
  18. {
  19. Thread th = new Thread(StartDo);
  20. th.IsBackground = true;
  21. th.Start();
  22. }
  23. public void StartDo()
  24. {
  25. while (true)
  26. {
  27. string date = DateTime.Now.ToString("yyyyMMdd");
  28. if(DateTime.Now.Hour > 10 && DateTime.Now.Hour < 13)
  29. {
  30. string check = function.ReadInstance("/ResetTrade/" + date + "-1.txt");
  31. if(string.IsNullOrEmpty(check))
  32. {
  33. function.WritePage("/ResetTrade/", date + "-1.txt", DateTime.Now.ToString());
  34. StatTradeAmount(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"));
  35. }
  36. }
  37. else if(DateTime.Now.Hour > 16 && DateTime.Now.Hour < 19)
  38. {
  39. string check = function.ReadInstance("/ResetTrade/" + date + "-2.txt");
  40. if(string.IsNullOrEmpty(check))
  41. {
  42. function.WritePage("/ResetTrade/", date + "-2.txt", DateTime.Now.ToString());
  43. StatTradeAmount(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"));
  44. }
  45. }
  46. else if(DateTime.Now.Hour > 22)
  47. {
  48. string check = function.ReadInstance("/ResetTrade/" + date + "-3.txt");
  49. if(string.IsNullOrEmpty(check))
  50. {
  51. function.WritePage("/ResetTrade/", date + "-3.txt", DateTime.Now.ToString());
  52. StatTradeAmount(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"));
  53. }
  54. }
  55. if(DateTime.Now.Day == 1 && DateTime.Now.Hour > 3 && DateTime.Now.Hour < 6)
  56. {
  57. string month = date.Substring(0, 6);
  58. string check = function.ReadInstance("/ResetTrade/" + month + ".txt");
  59. if(string.IsNullOrEmpty(check))
  60. {
  61. function.WritePage("/ResetTrade/", month + ".txt", DateTime.Now.ToString());
  62. DateTime start = DateTime.Now.AddMonths(-1);
  63. DateTime end = DateTime.Now;
  64. for(DateTime i = start; i < end;i=i.AddDays(1))
  65. {
  66. StatTradeAmount(i.ToString("yyyy-MM-dd"));
  67. }
  68. }
  69. }
  70. if(DateTime.Now.Hour >= 3 && RedisDbconn.Instance.Get<string>("StatServerStatus") == "1")
  71. {
  72. StatTradeAmount(DateTime.Now.ToString("yyyy-MM-dd"));
  73. }
  74. Thread.Sleep(900000);
  75. }
  76. }
  77. public void StartReset()
  78. {
  79. Thread th = new Thread(StartResetDo);
  80. th.IsBackground = true;
  81. th.Start();
  82. }
  83. public void StartResetDo()
  84. {
  85. while (true)
  86. {
  87. string date = RedisDbconn.Instance.RPop<string>("StatNew2Queue");
  88. if(!string.IsNullOrEmpty(date))
  89. {
  90. StatTradeAmount(date);
  91. Thread.Sleep(2000);
  92. }
  93. else
  94. {
  95. Thread.Sleep(60000);
  96. }
  97. }
  98. }
  99. public void StatTradeAmount(string today)
  100. {
  101. string date = today.Replace("-", "");
  102. WebCMSEntities db = new WebCMSEntities();
  103. KxsMainModels.WebCMSEntities maindb = new KxsMainModels.WebCMSEntities();
  104. List<UserAmountSummary> userstat = new List<UserAmountSummary>();
  105. List<MerchantAmountSummay> merstat = new List<MerchantAmountSummay>();
  106. List<QrCodeAmountSummay> snstat = new List<QrCodeAmountSummay>();
  107. try
  108. {
  109. string start = today + " 00:00:00";
  110. string end = today + " 23:59:59";
  111. Utils.WriteLog("开始时间:" + start, "统计商户和创客交易额日志2");
  112. DataTable idsDt = CustomerSqlConn.dtable("select distinct UserId from ConsumerOrders where CreateDate>='" + start + "' and CreateDate<='" + end + "' and Status>0", AppConfig.Base.SqlConn2);
  113. Utils.WriteLog("查询条数:" + idsDt.Rows.Count, "统计商户和创客交易额日志2");
  114. Utils.WriteLog("1--" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "统计商户和创客交易额日志2");
  115. if(idsDt.Rows.Count > 0)
  116. {
  117. List<int> idlist = new List<int>();
  118. foreach (DataRow idsDr in idsDt.Rows)
  119. {
  120. idlist.Add(int.Parse(function.CheckInt(idsDr["UserId"].ToString())));
  121. }
  122. List<KxsMainModels.Users> users = maindb.Users.Where(m => idlist.Contains(m.Id)).ToList();
  123. 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 CreateDate>='" + start + "' and CreateDate<='" + end + "' and Status>0 group by UserId,MerchantId,SnNo,PayMode,IsAct,DATE_FORMAT(CreateDate,'%Y%m%d'),Sort", AppConfig.Base.SqlConn2);
  124. if (selfDt.Rows.Count > 0)
  125. {
  126. foreach (DataRow selfDr in selfDt.Rows)
  127. {
  128. int UserId = int.Parse(selfDr["UserId"].ToString());
  129. KxsMainModels.Users user = users.FirstOrDefault(m => m.Id == UserId) ?? new KxsMainModels.Users();
  130. string ParentNav = user.ParentNav;
  131. int MerchantId = int.Parse(selfDr["MerchantId"].ToString());
  132. int PayMode = int.Parse(selfDr["PayMode"].ToString());
  133. int IsAct = int.Parse(selfDr["IsAct"].ToString());
  134. string SnNo = selfDr["SnNo"].ToString();
  135. string TradeDate = selfDr[5].ToString();
  136. decimal TradeAmount = decimal.Parse(selfDr[6].ToString());
  137. int TradeCount = int.Parse(selfDr[7].ToString());
  138. decimal MaxDivi = decimal.Parse(selfDr[8].ToString());
  139. decimal ActualAmount = decimal.Parse(selfDr[9].ToString());
  140. string TradeMonth = TradeDate.Substring(0, 6);
  141. int Sort = int.Parse(selfDr["Sort"].ToString());
  142. //创客交易额
  143. UserAmountSummary selfStat = userstat.FirstOrDefault(m => m.UserId == UserId && m.IsAct == IsAct && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.PayMode == PayMode && m.SeoTitle == "self" && m.Sort == Sort);
  144. if (selfStat == null)
  145. {
  146. userstat.Add(new UserAmountSummary()
  147. {
  148. UserId = UserId,
  149. TradeMonth = TradeMonth,
  150. TradeDate = TradeDate,
  151. PayMode = PayMode,
  152. IsAct = IsAct,
  153. SeoTitle = "self",
  154. Sort = Sort,
  155. TotalAmount = TradeAmount,
  156. TradeCount = TradeCount,
  157. });
  158. }
  159. else
  160. {
  161. selfStat.TotalAmount += TradeAmount;
  162. selfStat.TradeCount += TradeCount;
  163. }
  164. ParentNav += "," + UserId + ",";
  165. if (!string.IsNullOrEmpty(ParentNav))
  166. {
  167. string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(',');
  168. foreach (string NavUserIdString in ParentNavList)
  169. {
  170. int NavUserId = int.Parse(NavUserIdString);
  171. UserAmountSummary teamStat = userstat.FirstOrDefault(m => m.UserId == NavUserId && m.IsAct == IsAct && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.PayMode == PayMode && m.SeoTitle == "team" && m.Sort == Sort);
  172. if (teamStat == null)
  173. {
  174. userstat.Add(new UserAmountSummary()
  175. {
  176. UserId = NavUserId,
  177. TradeMonth = TradeMonth,
  178. TradeDate = TradeDate,
  179. PayMode = PayMode,
  180. IsAct = IsAct,
  181. SeoTitle = "team",
  182. Sort = Sort,
  183. TotalAmount = TradeAmount,
  184. TradeCount = TradeCount,
  185. });
  186. }
  187. else
  188. {
  189. teamStat.TotalAmount += TradeAmount;
  190. teamStat.TradeCount += TradeCount;
  191. }
  192. }
  193. }
  194. //商户交易额
  195. MerchantAmountSummay merchantStat = merstat.FirstOrDefault(m => m.MerchantId == MerchantId && m.IsAct == IsAct && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.PayMode == PayMode);
  196. if (merchantStat == null)
  197. {
  198. merstat.Add(new MerchantAmountSummay()
  199. {
  200. MerchantId = MerchantId,
  201. TradeMonth = TradeMonth,
  202. TradeDate = TradeDate,
  203. PayMode = PayMode,
  204. IsAct = IsAct,
  205. TradeAmount = TradeAmount,
  206. TradeCount = TradeCount,
  207. TotalActual = ActualAmount,
  208. });
  209. }
  210. else
  211. {
  212. merchantStat.TradeAmount += TradeAmount;
  213. merchantStat.TradeCount += TradeCount;
  214. merchantStat.TotalActual += ActualAmount;
  215. }
  216. //码牌交易额
  217. QrCodeAmountSummay qrcode = snstat.FirstOrDefault(m => m.SnNo == SnNo && m.IsAct == IsAct && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.PayMode == PayMode);
  218. if (qrcode == null)
  219. {
  220. snstat.Add(new QrCodeAmountSummay()
  221. {
  222. SnNo = SnNo,
  223. TradeMonth = TradeMonth,
  224. TradeDate = TradeDate,
  225. PayMode = PayMode,
  226. IsAct = IsAct,
  227. TradeAmount = TradeAmount,
  228. TradeCount = TradeCount,
  229. TotalActual = ActualAmount,
  230. });
  231. }
  232. else
  233. {
  234. qrcode.TradeAmount += TradeAmount;
  235. qrcode.TradeCount += TradeCount;
  236. qrcode.TotalActual += ActualAmount;
  237. }
  238. }
  239. }
  240. }
  241. }
  242. catch (Exception ex)
  243. {
  244. Utils.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "统计商户和创客交易额异常");
  245. }
  246. using (var tran = db.Database.BeginTransaction())
  247. {
  248. try
  249. {
  250. List<UserAmountSummary> userlist = db.UserAmountSummary.Where(m => m.TradeDate == date).ToList();
  251. List<MerchantAmountSummay> merlist = db.MerchantAmountSummay.Where(m => m.TradeDate == date).ToList();
  252. List<QrCodeAmountSummay> snlist = db.QrCodeAmountSummay.Where(m => m.TradeDate == date).ToList();
  253. foreach(UserAmountSummary substat in userstat)
  254. {
  255. Utils.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(substat));
  256. UserAmountSummary selfStat = userlist.FirstOrDefault(m => m.UserId == substat.UserId && m.IsAct == substat.IsAct && m.TradeMonth == substat.TradeMonth && m.TradeDate == substat.TradeDate && m.PayMode == substat.PayMode && m.SeoTitle == substat.SeoTitle && m.Sort == substat.Sort);
  257. if (selfStat == null)
  258. {
  259. db.UserAmountSummary.Add(new UserAmountSummary()
  260. {
  261. UserId = substat.UserId,
  262. TradeMonth = substat.TradeMonth,
  263. TradeDate = substat.TradeDate,
  264. PayMode = substat.PayMode,
  265. IsAct = substat.IsAct,
  266. SeoTitle = substat.SeoTitle,
  267. Sort = substat.Sort,
  268. TotalAmount = substat.TotalAmount,
  269. TradeCount = substat.TradeCount,
  270. });
  271. }
  272. else
  273. {
  274. UserAmountSummary edit = db.UserAmountSummary.FirstOrDefault(m => m.Id == selfStat.Id);
  275. if(edit != null)
  276. {
  277. edit.TotalAmount = substat.TotalAmount;
  278. edit.TradeCount = substat.TradeCount;
  279. }
  280. }
  281. }
  282. db.SaveChanges();
  283. foreach(MerchantAmountSummay substat in merstat)
  284. {
  285. Utils.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(substat));
  286. MerchantAmountSummay merchantStat = merlist.FirstOrDefault(m => m.MerchantId == substat.MerchantId && m.IsAct == substat.IsAct && m.TradeMonth == substat.TradeMonth && m.TradeDate == substat.TradeDate && m.PayMode == substat.PayMode);
  287. if (merchantStat == null)
  288. {
  289. db.MerchantAmountSummay.Add(new MerchantAmountSummay()
  290. {
  291. MerchantId = substat.MerchantId,
  292. TradeMonth = substat.TradeMonth,
  293. TradeDate = substat.TradeDate,
  294. PayMode = substat.PayMode,
  295. IsAct = substat.IsAct,
  296. TradeAmount = substat.TradeAmount,
  297. TradeCount = substat.TradeCount,
  298. TotalActual = substat.TotalActual,
  299. });
  300. }
  301. else
  302. {
  303. MerchantAmountSummay edit = db.MerchantAmountSummay.FirstOrDefault(m => m.Id == merchantStat.Id);
  304. if(edit != null)
  305. {
  306. edit.TradeAmount = substat.TradeAmount;
  307. edit.TradeCount = substat.TradeCount;
  308. edit.TotalActual = substat.TotalActual;
  309. }
  310. }
  311. }
  312. db.SaveChanges();
  313. foreach(QrCodeAmountSummay substat in snstat)
  314. {
  315. Utils.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(substat));
  316. QrCodeAmountSummay qrcode = snlist.FirstOrDefault(m => m.SnNo == substat.SnNo && m.IsAct == substat.IsAct && m.TradeMonth == substat.TradeMonth && m.TradeDate == substat.TradeDate && m.PayMode == substat.PayMode);
  317. if (qrcode == null)
  318. {
  319. db.QrCodeAmountSummay.Add(new QrCodeAmountSummay()
  320. {
  321. SnNo = substat.SnNo,
  322. TradeMonth = substat.TradeMonth,
  323. TradeDate = substat.TradeDate,
  324. PayMode = substat.PayMode,
  325. IsAct = substat.IsAct,
  326. TradeAmount = substat.TradeAmount,
  327. TradeCount = substat.TradeCount,
  328. TotalActual = substat.TotalActual,
  329. });
  330. }
  331. else
  332. {
  333. QrCodeAmountSummay edit = db.QrCodeAmountSummay.FirstOrDefault(m => m.Id == qrcode.Id);
  334. if(edit != null)
  335. {
  336. edit.TradeAmount = substat.TradeAmount;
  337. edit.TradeCount = substat.TradeCount;
  338. edit.TotalActual = substat.TotalActual;
  339. }
  340. }
  341. }
  342. db.SaveChanges();
  343. tran.Commit();
  344. }
  345. catch (Exception ex)
  346. {
  347. tran.Rollback();
  348. Utils.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "统计商户和创客交易额入库异常");
  349. }
  350. }
  351. db.Dispose();
  352. maindb.Dispose();
  353. Utils.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "统计商户和创客交易额日志2");
  354. }
  355. // 统计创客激活数
  356. public void StartPosActNum()
  357. {
  358. Thread th = new Thread(StartPosActNumFor);
  359. th.IsBackground = true;
  360. th.Start();
  361. }
  362. public void StartPosActNumFor()
  363. {
  364. while (true)
  365. {
  366. if(DateTime.Now.Hour >= 3 && RedisDbconn.Instance.Get<string>("StatServerStatus") == "1")
  367. {
  368. StartPosActNumEverTime();
  369. }
  370. Thread.Sleep(20000);
  371. }
  372. }
  373. public void StartPosActNumEverTime()
  374. {
  375. Utils.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "实时执行创客激活数日志");
  376. WebCMSEntities db = new WebCMSEntities();
  377. KxsMainModels.WebCMSEntities maindb = new KxsMainModels.WebCMSEntities();
  378. try
  379. {
  380. DataTable idsDt = CustomerSqlConn.dtable("select Id from MerchantInfo where ActStat=0 and (Status=2 or QueryCount=2) and BrandId=0 and UserId>0 and UpdateDate is not null limit 50", AppConfig.Base.SqlConn2);
  381. if(idsDt.Rows.Count > 0)
  382. {
  383. string ids = "";
  384. foreach (DataRow idsDr in idsDt.Rows)
  385. {
  386. ids += idsDr["Id"].ToString() + ",";
  387. }
  388. DataTable userDt = CustomerSqlConn.dtable("select UserId,DATE_FORMAT(UpdateDate,'%Y%m%d'),count(Id) from MerchantInfo where Id in (" + ids.TrimEnd(',') + ") group by UserId,DATE_FORMAT(UpdateDate,'%Y%m%d')", AppConfig.Base.SqlConn2);
  389. if (userDt.Rows.Count > 0)
  390. {
  391. Utils.WriteLog("人数:" + userDt.Rows.Count + "\n\n", "实时执行创客激活数日志");
  392. foreach (DataRow userDr in userDt.Rows)
  393. {
  394. int UserId = int.Parse(userDr["UserId"].ToString());
  395. string TradeDate = userDr[1].ToString();
  396. int ActCount = int.Parse(function.CheckInt(userDr[2].ToString()));
  397. string TradeMonth = TradeDate.Substring(0, 6);
  398. string date = TradeDate.Substring(0, 4) + "-" + TradeDate.Substring(4, 2) + "-" + TradeDate.Substring(6, 2);
  399. string start = date + " 00:00:00";
  400. string end = DateTime.Parse(date).AddDays(1).ToString("yyyy-MM-dd") + " 00:00:00";
  401. KxsMainModels.Users user = maindb.Users.FirstOrDefault(m => m.Id == UserId) ?? new KxsMainModels.Users();
  402. string ParentNav = user.ParentNav;
  403. UserTradeMonthSummary selfStat = db.UserTradeMonthSummary.FirstOrDefault(m => m.UserId == UserId && m.TradeMonth == TradeMonth && m.SeoKeyword == TradeDate && m.SeoTitle == "self");
  404. if (selfStat == null)
  405. {
  406. selfStat = db.UserTradeMonthSummary.Add(new UserTradeMonthSummary()
  407. {
  408. UserId = UserId,
  409. TradeMonth = TradeMonth,
  410. SeoKeyword = TradeDate,
  411. SeoTitle = "self",
  412. }).Entity;
  413. db.SaveChanges();
  414. }
  415. selfStat.ActiveBuddyMerStatus += ActCount;
  416. ParentNav += "," + UserId + ",";
  417. if (!string.IsNullOrEmpty(ParentNav))
  418. {
  419. string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(',');
  420. foreach (string NavUserIdString in ParentNavList)
  421. {
  422. int NavUserId = int.Parse(NavUserIdString);
  423. UserTradeMonthSummary teamStat = db.UserTradeMonthSummary.FirstOrDefault(m => m.UserId == NavUserId && m.TradeMonth == TradeMonth && m.SeoKeyword == TradeDate && m.SeoTitle == "team");
  424. if (teamStat == null)
  425. {
  426. teamStat = db.UserTradeMonthSummary.Add(new UserTradeMonthSummary()
  427. {
  428. UserId = NavUserId,
  429. TradeMonth = TradeMonth,
  430. SeoKeyword = TradeDate,
  431. SeoTitle = "team",
  432. }).Entity;
  433. db.SaveChanges();
  434. }
  435. teamStat.ActiveBuddyMerStatus += ActCount;
  436. }
  437. }
  438. }
  439. db.SaveChanges();
  440. CustomerSqlConn.op("update MerchantInfo set ActStat=1 where Id in (" + ids.TrimEnd(',') + ")", AppConfig.Base.SqlConn2);
  441. }
  442. }
  443. }
  444. catch (Exception ex)
  445. {
  446. Utils.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "实时执行创客激活数异常");
  447. }
  448. db.Dispose();
  449. maindb.Dispose();
  450. Utils.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "实时执行创客激活数日志");
  451. }
  452. public void test()
  453. {
  454. Utils.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "实时执行创客激活数日志");
  455. WebCMSEntities db = new WebCMSEntities();
  456. KxsMainModels.WebCMSEntities maindb = new KxsMainModels.WebCMSEntities();
  457. try
  458. {
  459. DataTable idsDt = CustomerSqlConn.dtable("select 646 Id", AppConfig.Base.SqlConn2);
  460. if(idsDt.Rows.Count > 0)
  461. {
  462. string ids = "";
  463. foreach (DataRow idsDr in idsDt.Rows)
  464. {
  465. ids += idsDr["Id"].ToString() + ",";
  466. }
  467. DataTable userDt = CustomerSqlConn.dtable("select UserId,DATE_FORMAT(SignDate,'%Y%m%d'),count(Id) from MerchantInfo where Id in (" + ids.TrimEnd(',') + ") group by UserId,DATE_FORMAT(SignDate,'%Y%m%d')", AppConfig.Base.SqlConn2);
  468. if (userDt.Rows.Count > 0)
  469. {
  470. Utils.WriteLog("人数:" + userDt.Rows.Count + "\n\n", "实时执行创客激活数日志");
  471. foreach (DataRow userDr in userDt.Rows)
  472. {
  473. int UserId = int.Parse(userDr["UserId"].ToString());
  474. string TradeDate = userDr[1].ToString();
  475. int ActCount = int.Parse(function.CheckInt(userDr[2].ToString()));
  476. string TradeMonth = TradeDate.Substring(0, 6);
  477. string date = TradeDate.Substring(0, 4) + "-" + TradeDate.Substring(4, 2) + "-" + TradeDate.Substring(6, 2);
  478. string start = date + " 00:00:00";
  479. string end = DateTime.Parse(date).AddDays(1).ToString("yyyy-MM-dd") + " 00:00:00";
  480. KxsMainModels.Users user = maindb.Users.FirstOrDefault(m => m.Id == UserId) ?? new KxsMainModels.Users();
  481. string ParentNav = user.ParentNav;
  482. UserTradeMonthSummary selfStat = db.UserTradeMonthSummary.FirstOrDefault(m => m.UserId == UserId && m.TradeMonth == TradeMonth && m.SeoKeyword == TradeDate && m.SeoTitle == "self");
  483. if (selfStat == null)
  484. {
  485. selfStat = db.UserTradeMonthSummary.Add(new UserTradeMonthSummary()
  486. {
  487. UserId = UserId,
  488. TradeMonth = TradeMonth,
  489. SeoKeyword = TradeDate,
  490. SeoTitle = "self",
  491. }).Entity;
  492. db.SaveChanges();
  493. }
  494. selfStat.ActiveBuddyMerStatus += ActCount;
  495. ParentNav += "," + UserId + ",";
  496. if (!string.IsNullOrEmpty(ParentNav))
  497. {
  498. string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(',');
  499. foreach (string NavUserIdString in ParentNavList)
  500. {
  501. int NavUserId = int.Parse(NavUserIdString);
  502. UserTradeMonthSummary teamStat = db.UserTradeMonthSummary.FirstOrDefault(m => m.UserId == NavUserId && m.TradeMonth == TradeMonth && m.SeoKeyword == TradeDate && m.SeoTitle == "team");
  503. if (teamStat == null)
  504. {
  505. teamStat = db.UserTradeMonthSummary.Add(new UserTradeMonthSummary()
  506. {
  507. UserId = NavUserId,
  508. TradeMonth = TradeMonth,
  509. SeoKeyword = TradeDate,
  510. SeoTitle = "team",
  511. }).Entity;
  512. db.SaveChanges();
  513. }
  514. teamStat.ActiveBuddyMerStatus += ActCount;
  515. }
  516. }
  517. }
  518. db.SaveChanges();
  519. CustomerSqlConn.op("update MerchantInfo set ActStat=1 where Id in (" + ids.TrimEnd(',') + ")", AppConfig.Base.SqlConn2);
  520. }
  521. }
  522. }
  523. catch (Exception ex)
  524. {
  525. Utils.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "实时执行创客激活数异常");
  526. }
  527. db.Dispose();
  528. maindb.Dispose();
  529. Utils.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "实时执行创客激活数日志");
  530. }
  531. }
  532. }