Browse Source

单独统计广电卡交易

lcl 1 year ago
parent
commit
6fa3a76e8b
2 changed files with 155 additions and 1 deletions
  1. 154 1
      AppStart/Helper/SycnSpServer/SycnSpTradeService.cs
  2. 1 0
      Startup.cs

+ 154 - 1
AppStart/Helper/SycnSpServer/SycnSpTradeService.cs

@@ -31,7 +31,7 @@ namespace MySystem
                     PxcModels.WebCMSEntities db = new PxcModels.WebCMSEntities();
                     DateTime start = DateTime.Now.AddDays(-10);
                     int StartId = int.Parse(function.CheckInt(function.ReadInstance("/SycnSp/TradeRecordId.txt")));
-                    IQueryable<TradeRecord> trades = spdb.TradeRecord.Where(m => m.Id >= StartId && m.CreateDate >= start && m.Status == 1).OrderBy(m => m.CreateDate).Take(20);
+                    IQueryable<TradeRecord> trades = spdb.TradeRecord.Where(m => m.Id >= StartId && m.ProductType != "14" && m.CreateDate >= start && m.Status == 1).OrderBy(m => m.CreateDate).Take(20);
                     foreach (TradeRecord trade in trades.ToList())
                     {
                         bool op = true;
@@ -582,6 +582,159 @@ namespace MySystem
             }
         }
 
+        public void StartSim()
+        {
+            Thread th = new Thread(StartSimDo);
+            th.IsBackground = true;
+            th.Start();
+        }
+
+        public void StartSimDo()
+        {
+            while (true)
+            {
+                try
+                {
+                    WebCMSEntities spdb = new WebCMSEntities();
+                    PxcModels.WebCMSEntities db = new PxcModels.WebCMSEntities();
+                    DateTime start = DateTime.Now.AddDays(-40);
+                    int StartId = int.Parse(function.CheckInt(function.ReadInstance("/SycnSp/TradeRecordId.txt")));
+                    IQueryable<TradeRecord> trades = spdb.TradeRecord.Where(m => m.Id >= StartId && m.ProductType == "14" && m.CreateDate >= start && m.Status == 1).OrderBy(m => m.CreateDate).Take(20);
+                    foreach (TradeRecord trade in trades.ToList())
+                    {
+                        bool op = true;
+                        if (op)
+                        {
+                            PxcModels.MachineForMerNo posFor = db.MachineForMerNo.FirstOrDefault(m => m.MerNo == trade.MerNo) ?? new PxcModels.MachineForMerNo();
+                            PxcModels.PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == posFor.SnId);
+                            if (pos != null)
+                            {
+                                PxcModels.KqProducts brand = db.KqProducts.FirstOrDefault(m => m.Id == pos.BrandId) ?? new PxcModels.KqProducts();
+                                if (pos.BindMerchantId > 0)
+                                {
+                                    PxcModels.Users user = db.Users.FirstOrDefault(m => m.Id == pos.UserId) ?? new PxcModels.Users();
+                                    int TopUserId = 0;
+                                    if (!string.IsNullOrEmpty(user.ParentNav))
+                                    {
+                                        TopUserId = int.Parse(user.ParentNav.Trim(',').Replace(",,", ",").Split(',')[0]);
+                                    }
+                                    bool check = db.SpOrderNos.Any(m => m.OrderNo == trade.TradeSerialNo);
+                                    if (!check)
+                                    {
+                                        decimal TradeAmount = trade.TradeAmount;
+                                        int BankCardType = -1;
+                                        int QrPayFlag = 0;
+                                        int VipFlag = 0;
+                                        int PayType = 0;                                        
+                                        BankCardType = int.Parse(trade.BankCardType);                                        
+                                        int BrandId = pos.BrandId;
+                                        decimal SourceTradeAmount = TradeAmount;
+                                        if (TradeAmount > 0)
+                                        {
+                                            ulong MerHelpFlag = 0;                                      
+                                            string DayString = RedisDbconn.Instance.Get<string>("pobjrule:" + pos.BrandId + ":HelpPolicy:Days");
+                                            int Days = int.Parse(DayString); //天数
+                                            if (pos.BindingTime != null)
+                                            {
+                                                if (pos.BindingTime.Value.AddDays(Days) > DateTime.Now)
+                                                {
+                                                    MerHelpFlag = 1;
+                                                }
+                                            }
+                                            int ActStatus = pos.ActivationState;
+                                            decimal SettleFee = trade.SettleFee * 100;
+                                            PxcModels.TradeRecord add = db.TradeRecord.Add(new PxcModels.TradeRecord()
+                                            {
+                                                ParentNav = user.ParentNav,
+                                                CreateDate = trade.CreateDate,
+                                                UpdateDate = trade.UpdateDate,
+                                                RecordNo = trade.TradeSerialNo, //单号
+                                                UserId = pos.UserId, //创客
+                                                MerchantId = pos.BindMerchantId, //商户
+                                                MerNo = trade.MerNo, //渠道商户编号
+                                                MerHelpFlag = MerHelpFlag >= 2 ? 1 : MerHelpFlag, //1扶持周,0稳定期,2盈利期
+                                                HelpMonthCount = 0, //扶持第几个月
+                                                MerBuddyType = user.MerchantType, //商户创客类型
+                                                SnNo = trade.TradeSnNo, //渠道SN号
+                                                TradeSerialNo = trade.ChannelSerial, //交易流水号
+                                                TradeAmount = TradeAmount, //交易金额
+                                                BankCardType = BankCardType, //银行卡类型
+                                                QrPayFlag = QrPayFlag, //云闪付标识
+                                                VipFlag = VipFlag, //会员标记
+                                                PayType = PayType, //支付方式
+                                                BrandId = BrandId, //品牌
+                                                Remark = trade.Remark, //备注
+                                                TopUserId = TopUserId, //顶级创客
+                                                MerUserId = pos.UserId, //商户直属创客
+                                                ActStatus = ActStatus,
+                                                CreateMan = trade.AgentNo,
+                                                UpdateMan = trade.BankCardType,
+                                                SeoKeyword = trade.SerEntryMode,
+                                                SeoDescription = trade.TradeType,
+                                                Sort = (int)SettleFee,
+                                            }).Entity;
+                                            db.SaveChanges();
+                                            string TradeMonth = trade.CreateDate == null ? DateTime.Now.ToString("yyyyMM") : trade.CreateDate.Value.ToString("yyyyMM");
+                                            PublicFunction.SplitTradeRecord(add, TradeMonth);
+
+                                            //统计商户交易额
+                                            string TradeDate = trade.CreateDate == null ? DateTime.Now.ToString("yyyyMMdd") : trade.CreateDate.Value.ToString("yyyyMMdd");
+                                            RedisDbconn.Instance.AddList("StatMerTradeAmountQueue", "{\"TradeDate\":\"" + TradeDate + "\",\"TradeAmount\":\"" + TradeAmount + "\",\"MerchantId\":\"" + pos.BindMerchantId + "\",\"BrandId\":\"" + BrandId + "\"}");
+                                        }
+                                        db.SpOrderNos.Add(new PxcModels.SpOrderNos()
+                                        {
+                                            OrderNo = trade.TradeSerialNo
+                                        });
+                                        db.SaveChanges();
+                                    }
+                                    TradeRecord edit = spdb.TradeRecord.FirstOrDefault(m => m.Id == trade.Id);
+                                    if (edit != null)
+                                    {
+                                        edit.Status = 2;
+                                    }
+                                    spdb.SaveChanges();
+                                }
+                                else
+                                {
+                                    TradeRecord edit = spdb.TradeRecord.FirstOrDefault(m => m.Id == trade.Id);
+                                    if (edit != null)
+                                    {
+                                        edit.Status = 0;
+                                    }
+                                    spdb.SaveChanges();
+                                }
+                            }
+                            else
+                            {
+                                TradeRecord edit = spdb.TradeRecord.FirstOrDefault(m => m.Id == trade.Id);
+                                if (edit != null)
+                                {
+                                    edit.Status = 0;
+                                }
+                                spdb.SaveChanges();
+                            }
+                        }
+                    }
+                    spdb.Dispose();
+                    db.Dispose();
+                }
+                catch (Exception ex)
+                {
+                    function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "同步SP交易数据到MAIN异常");
+                }
+                Thread.Sleep(500);
+            }
+        }
+
+
+
+
+
+
+
+
+
+
         public void StartTradeStatus()
         {
             Thread th = new Thread(StartTradeStatusDo);

+ 1 - 0
Startup.cs

@@ -171,6 +171,7 @@ namespace MySystem
                 SycnSpMerchantService.Instance.Start(); //同步SP商户数据
                 SycnSpActiveService.Instance.Start(); //同步SP激活数据
                 SycnSpTradeService.Instance.Start(); //同步SP交易数据
+                SycnSpTradeService.Instance.StartSim(); //同步SP广电卡交易数据
                 SycnSpTradeService.Instance.StartTradeStatus(); //恢复原始交易没有统计上的数据
                 SycnSpChangeBindService.Instance.Start(); //同步SP换绑数据
                 SycnSpUnBindService.Instance.Start(); //同步SP解绑数据