|
@@ -0,0 +1,163 @@
|
|
|
+using System;
|
|
|
+using System.Collections.Generic;
|
|
|
+using System.Linq;
|
|
|
+using MySystem.SpModels;
|
|
|
+using Library;
|
|
|
+using LitJson;
|
|
|
+using System.Threading;
|
|
|
+
|
|
|
+namespace MySystem
|
|
|
+{
|
|
|
+ public class SycnSpTradeWifiService
|
|
|
+ {
|
|
|
+ public readonly static SycnSpTradeWifiService Instance = new SycnSpTradeWifiService();
|
|
|
+ private SycnSpTradeWifiService()
|
|
|
+ { }
|
|
|
+
|
|
|
+ public void Start()
|
|
|
+ {
|
|
|
+ Thread th = new Thread(StartDo);
|
|
|
+ th.IsBackground = true;
|
|
|
+ th.Start();
|
|
|
+ }
|
|
|
+
|
|
|
+ public void StartDo()
|
|
|
+ {
|
|
|
+ while (true)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ WebCMSEntities spdb = new WebCMSEntities();
|
|
|
+ PxcModels.WebCMSEntities db = new PxcModels.WebCMSEntities();
|
|
|
+ DateTime start = DateTime.Now.AddDays(-10);
|
|
|
+ DateTime end = DateTime.Now.AddMinutes(-1);
|
|
|
+ int StartId = int.Parse(function.CheckInt(function.ReadInstance("/SycnSp/TradeRecordId.txt")));
|
|
|
+ IQueryable<TradeRecord> trades = spdb.TradeRecord.Where(m => m.Id >= StartId && m.ProductType == "23" && m.CreateDate >= start && m.Status == 1).OrderBy(m => m.CreateDate).Take(20);
|
|
|
+ foreach (TradeRecord trade in trades.ToList())
|
|
|
+ {
|
|
|
+ bool check = db.SpOrderNos.Any(m => m.OrderNo == trade.TradeSerialNo);
|
|
|
+ if (!check)
|
|
|
+ {
|
|
|
+ decimal TradeAmount = trade.TradeAmount / 100;
|
|
|
+ PxcModels.PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == trade.TradeSnNo);
|
|
|
+ if (pos != null)
|
|
|
+ {
|
|
|
+ PxcModels.WifiTradeRecord add = db.WifiTradeRecord.Add(new PxcModels.WifiTradeRecord()
|
|
|
+ {
|
|
|
+ CreateDate = trade.CreateDate,
|
|
|
+ UpdateDate = trade.UpdateDate,
|
|
|
+ SnNo = trade.TradeSnNo, //渠道SN号
|
|
|
+ TradeAmount = TradeAmount, //交易金额
|
|
|
+ BrandId = pos.BrandId, //品牌
|
|
|
+ Remark = trade.Remark, //备注
|
|
|
+ }).Entity;
|
|
|
+ }
|
|
|
+ db.SpOrderNos.Add(new PxcModels.SpOrderNos()
|
|
|
+ {
|
|
|
+ OrderNo = trade.TradeSerialNo
|
|
|
+ });
|
|
|
+ db.SaveChanges();
|
|
|
+
|
|
|
+ //开始统计
|
|
|
+ int Months = 0;
|
|
|
+
|
|
|
+ if(pos.BrandId == 23 && TradeAmount == 49) Months = 1;
|
|
|
+ if(pos.BrandId == 23 && TradeAmount == 79) Months = 3;
|
|
|
+ if(pos.BrandId == 23 && TradeAmount == 119) Months = 12;
|
|
|
+ if(pos.BrandId == 23 && TradeAmount == 199) Months = 24;
|
|
|
+
|
|
|
+ if(pos.BrandId == 24 && TradeAmount == 59) Months = 1;
|
|
|
+ if(pos.BrandId == 24 && TradeAmount == 159) Months = 3;
|
|
|
+ if(pos.BrandId == 24 && TradeAmount == 399) Months = 12;
|
|
|
+ if(pos.BrandId == 24 && TradeAmount == 699) Months = 24;
|
|
|
+
|
|
|
+ if(pos.BrandId == 25 && TradeAmount == 69) Months = 1;
|
|
|
+ if(pos.BrandId == 25 && TradeAmount == 199) Months = 3;
|
|
|
+ if(pos.BrandId == 25 && TradeAmount == 499) Months = 12;
|
|
|
+ if(pos.BrandId == 25 && TradeAmount == 799) Months = 24;
|
|
|
+
|
|
|
+ if(pos.BrandId == 26 && TradeAmount == 219) Months = 1;
|
|
|
+ if(pos.BrandId == 26 && TradeAmount == 449) Months = 3;
|
|
|
+ if(pos.BrandId == 26 && TradeAmount == 1399) Months = 12;
|
|
|
+ if(pos.BrandId == 26 && TradeAmount == 2698) Months = 24;
|
|
|
+
|
|
|
+ if(Months > 0)
|
|
|
+ {
|
|
|
+ decimal TradeAmt = TradeAmount / Months;
|
|
|
+ PxcModels.TradeDaySummary stat = db.TradeDaySummary.Where(m => m.UserId == pos.BuyUserId && m.BrandId == pos.BrandId).OrderByDescending(m => m.Id).FirstOrDefault() ?? new PxcModels.TradeDaySummary();
|
|
|
+ string TradeMonth = string.IsNullOrEmpty(stat.TradeMonth) ? DateTime.Now.AddMonths(-1).ToString("yyyyMM") : stat.TradeMonth;
|
|
|
+ DateTime StartMonth = DateTime.Parse(TradeMonth.Substring(0, 4) + "-" + TradeMonth.Substring(4, 2) + "-01 00:00:00");
|
|
|
+ for (int i = 1; i <= Months; i++)
|
|
|
+ {
|
|
|
+ StartMonth = StartMonth.AddMonths(1);
|
|
|
+ StatTrade(db, pos.BuyUserId, pos.BrandId, StartMonth.ToString("yyyyMM"), TradeAmt);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ TradeRecord edit = spdb.TradeRecord.FirstOrDefault(m => m.Id == trade.Id);
|
|
|
+ if (edit != null)
|
|
|
+ {
|
|
|
+ edit.Status = 2;
|
|
|
+ spdb.SaveChanges();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ spdb.Dispose();
|
|
|
+ db.Dispose();
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "同步SP交易数据到MAIN异常");
|
|
|
+ }
|
|
|
+ Thread.Sleep(500);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void StatTrade(PxcModels.WebCMSEntities db, int UserId, int BrandId, string TradeMonth, decimal TradeAmount)
|
|
|
+ {
|
|
|
+ PxcModels.Users user = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new PxcModels.Users();
|
|
|
+ string ParentNav = user.ParentNav;
|
|
|
+ string TradeDate = TradeMonth + "01";
|
|
|
+ ParentNav += "," + UserId + ",";
|
|
|
+
|
|
|
+ PxcModels.TradeDaySummary selfStat = db.TradeDaySummary.FirstOrDefault(m => m.UserId == UserId && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.BrandId == BrandId && m.SeoTitle == "self");
|
|
|
+ if (selfStat == null)
|
|
|
+ {
|
|
|
+ selfStat = db.TradeDaySummary.Add(new PxcModels.TradeDaySummary()
|
|
|
+ {
|
|
|
+ UserId = UserId,
|
|
|
+ TradeMonth = TradeMonth,
|
|
|
+ TradeDate = TradeDate,
|
|
|
+ BrandId = BrandId,
|
|
|
+ SeoTitle = "self",
|
|
|
+ }).Entity;
|
|
|
+ db.SaveChanges();
|
|
|
+ }
|
|
|
+ selfStat.HelpDirectTradeAmt += TradeAmount;
|
|
|
+ if (!string.IsNullOrEmpty(ParentNav))
|
|
|
+ {
|
|
|
+ string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(',');
|
|
|
+ foreach (string NavUserIdString in ParentNavList)
|
|
|
+ {
|
|
|
+ int NavUserId = int.Parse(NavUserIdString);
|
|
|
+ PxcModels.TradeDaySummary teamStat = db.TradeDaySummary.FirstOrDefault(m => m.UserId == NavUserId && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.BrandId == BrandId && m.SeoTitle == "team");
|
|
|
+ if (teamStat == null)
|
|
|
+ {
|
|
|
+ teamStat = db.TradeDaySummary.Add(new PxcModels.TradeDaySummary()
|
|
|
+ {
|
|
|
+ UserId = NavUserId,
|
|
|
+ TradeMonth = TradeMonth,
|
|
|
+ TradeDate = TradeDate,
|
|
|
+ BrandId = BrandId,
|
|
|
+ SeoTitle = "team",
|
|
|
+ }).Entity;
|
|
|
+ db.SaveChanges();
|
|
|
+ }
|
|
|
+ teamStat.HelpNonDirectTradeAmt += TradeAmount;
|
|
|
+ db.SaveChanges();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|