Просмотр исходного кода

好哒押金数据流程改造

lcl 1 год назад
Родитель
Сommit
0d42cccfe0
2 измененных файлов с 140 добавлено и 75 удалено
  1. 139 75
      AppStart/GetHaoDaFTPInfoService.cs
  2. 1 0
      Startup.cs

+ 139 - 75
AppStart/GetHaoDaFTPInfoService.cs

@@ -51,10 +51,10 @@ namespace MySystem
                     if (string.IsNullOrEmpty(check))
                     {
                         function.WritePage("/GetFTPDepositYesterday/", "check" + DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + ".txt", DateTime.Now.ToString());
-                        SaveDepositData(DateTime.Now.AddDays(-1).ToString("yyyyMMdd"));
+                        SaveDepositData(DateTime.Now.AddDays(-1).ToString("yyyyMMdd"), true);
                         Thread.Sleep(2000);
-                        GetDepositData();
-                        Thread.Sleep(60000);
+                        // GetDepositData();
+                        // Thread.Sleep(60000);
                         SaveTradeData(DateTime.Now.AddDays(-1).ToString("yyyyMMdd"), true);
                     }
                 }
@@ -117,7 +117,7 @@ namespace MySystem
             }
         }
 
-        public void SaveDepositData(string Date)
+        public void SaveDepositData(string Date, bool IsRedis = false)
         {
             // 要下载的文件路径
             string filePath = "/haoda-deposit/deposit_" + Date + ".csv";
@@ -149,87 +149,26 @@ namespace MySystem
                         var DataList = DataInfo[1].Split('\n');
                         foreach (var DataListItem in DataList)
                         {
-                            var DataListInfo = DataListItem.Split(',');
-
-                            string SnNo = DataListInfo[0]; //sn
-                            string MerNo = DataListInfo[1]; //商户编号
-                            string PosKind = DataListInfo[2]; //机具型号
-                            string ActDate = DataListInfo[3]; //激活时间
-                            string Deposit = DataListInfo[4]; //押金金额
-                            string PrizeAmt = "0"; //奖励金额
-                            string PrizeDate = "None"; //奖励发放时间
-                            string Name = ""; //发放人姓名
-                            string MerName = ""; //商户名称
-                            string PassDate = ""; //审核通过时期
-                            string MerKind = ""; //商户类型
-                            string DepositActCode = ""; //押金活动编号
-                            if (Date.StartsWith("d_"))
+                            if(IsRedis)
                             {
-                                MerName = DataListInfo[5]; //商户名称
-                                PassDate = DataListInfo[6]; //审核通过时期
-                                MerKind = DataListInfo[7]; //商户类型
-                                DepositActCode = DataListInfo[8]; //押金活动编号
+                                RedisDbconn.Instance.AddList("ListenDepositDataByOneQueue", DataListItem);
                             }
                             else
                             {
-                                PrizeAmt = DataListInfo[5]; //奖励金额
-                                PrizeDate = DataListInfo[6]; //奖励发放时间
-                                Name = DataListInfo[7]; //发放人姓名
-                                MerName = DataListInfo[8]; //商户名称
-                                PassDate = DataListInfo[9]; //审核通过时期
-                                if (DataListInfo.Length > 10) MerKind = DataListInfo[10]; //商户类型
-                                if (DataListInfo.Length > 11) DepositActCode = DataListInfo[11]; //押金活动编号
-                            }
-                            if (!SnNos.Contains(SnNo) && !ChkSnNos.Contains(SnNo))
-                            {
+                                SaveDepositDataOneReady(db, DataListItem);
                                 index += 1;
-                                function.WriteLog(DateTime.Now.ToString() + ":" + SnNo, "好哒押金数据入库");
-                                ChkSnNos.Add(SnNo);
-                                db.HdDepositTmp.Add(new MpMainModels2.HdDepositTmp()
-                                {
-                                    SnNo = SnNo,
-                                    MerKind = MerKind,
-                                    PassDate = PassDate,
-                                    MerName = MerName,
-                                    SendMan = Name,
-                                    PrizeDate = PrizeDate,
-                                    PrizeAmount = decimal.Parse(function.CheckNum(PrizeAmt)),
-                                    DepositAmount = decimal.Parse(function.CheckNum(Deposit)),
-                                    ActDate = ActDate,
-                                    DeviceKind = PosKind,
-                                    DepositActCode = DepositActCode,
-                                    MerNo = MerNo,
-                                });
-                                if (index % 50 == 0)
+                                if(index % 200 == 0 && index > 0)
                                 {
+                                    index = 0;
                                     db.SaveChanges();
                                 }
                             }
-                            else
-                            {
-                                MpMainModels2.HdDepositTmp edit = db.HdDepositTmp.FirstOrDefault(m => m.SnNo == SnNo);
-                                if (edit != null)
-                                {
-                                    edit.Status = 0;
-                                    edit.MerKind = MerKind;
-                                    edit.PassDate = PassDate;
-                                    edit.MerName = MerName;
-                                    edit.SendMan = Name;
-                                    edit.PrizeDate = PrizeDate;
-                                    edit.PrizeAmount = decimal.Parse(function.CheckNum(PrizeAmt));
-                                    edit.DepositAmount = decimal.Parse(function.CheckNum(Deposit));
-                                    edit.ActDate = ActDate;
-                                    edit.DeviceKind = PosKind;
-                                    edit.DepositActCode = DepositActCode;
-                                    edit.MerNo = MerNo;
-                                    if (index % 50 == 0)
-                                    {
-                                        db.SaveChanges();
-                                    }
-                                }
-                            }
                         }
-                        db.SaveChanges();
+                        if(!IsRedis)
+                        {
+                            index = 0;
+                            db.SaveChanges();
+                        }
                     }
                     db.Dispose();
                 }
@@ -615,6 +554,131 @@ namespace MySystem
             return result;
         }
 
+        public void StartDepositListenByOne()
+        {
+            //每天凌晨执行获取好哒FTP昨日交易数据
+            Thread th2 = new Thread(ListenDepositDataByOneReady);
+            th2.IsBackground = true;
+            th2.Start();
+        }
+        /// <summary>
+        /// 获取好哒FTP昨日交易数据
+        /// </summary>
+        public void ListenDepositDataByOneReady()
+        {
+            int index = 0;
+            MpMainModels2.WebCMSEntities db = new MpMainModels2.WebCMSEntities();
+            bool dbConn = true;
+            while (true)
+            {
+                string content = RedisDbconn.Instance.RPop<string>("ListenDepositDataByOneQueue");
+                if (!string.IsNullOrEmpty(content))
+                {
+                    if(!dbConn)
+                    {
+                        db = new MpMainModels2.WebCMSEntities();
+                        dbConn = true;
+                    }
+                    SaveDepositDataOneReady(db, content);
+                    index += 1;
+                    if(index % 200 == 0 && index > 0)
+                    {
+                        index = 0;
+                        db.SaveChanges();
+                    }
+                }
+                else
+                {
+                    index = 0;
+                    if(dbConn)
+                    {
+                        db.SaveChanges();
+                        db.Dispose();
+                        dbConn = false;
+                    }
+                }
+            }
+        }
+        public void SaveDepositDataOneReady(MpMainModels2.WebCMSEntities db, string content)
+        {
+            try
+            {
+                var DataListInfo = content.Split(',');
+
+                string SnNo = DataListInfo[0]; //sn
+                string MerNo = DataListInfo[1]; //商户编号
+                string PosKind = DataListInfo[2]; //机具型号
+                string ActDate = DataListInfo[3]; //激活时间
+                string Deposit = DataListInfo[4]; //押金金额
+                string PrizeAmt = "0"; //奖励金额
+                string PrizeDate = "None"; //奖励发放时间
+                string Name = ""; //发放人姓名
+                string MerName = ""; //商户名称
+                string PassDate = ""; //审核通过时期
+                string MerKind = ""; //商户类型
+                string DepositActCode = ""; //押金活动编号
+                PrizeAmt = DataListInfo[5]; //奖励金额
+                PrizeDate = DataListInfo[6]; //奖励发放时间
+                Name = DataListInfo[7]; //发放人姓名
+                MerName = DataListInfo[8]; //商户名称
+                PassDate = DataListInfo[9]; //审核通过时期
+                if (DataListInfo.Length > 10) MerKind = DataListInfo[10]; //商户类型
+                if (DataListInfo.Length > 11) DepositActCode = DataListInfo[11]; //押金活动编号
+                if(!db.HdDepositTmp.Any(m => m.SnNo == SnNo))
+                {
+                    function.WriteLog(DateTime.Now.ToString() + ":" + SnNo, "好哒押金数据入库new");
+                    db.HdDepositTmp.Add(new MpMainModels2.HdDepositTmp()
+                    {
+                        SnNo = SnNo,
+                        MerKind = MerKind,
+                        PassDate = PassDate,
+                        MerName = MerName,
+                        SendMan = Name,
+                        PrizeDate = PrizeDate,
+                        PrizeAmount = decimal.Parse(function.CheckNum(PrizeAmt)),
+                        DepositAmount = decimal.Parse(function.CheckNum(Deposit)),
+                        ActDate = ActDate,
+                        DeviceKind = PosKind,
+                        DepositActCode = DepositActCode,
+                        MerNo = MerNo,
+                    });
+                }
+                else
+                {
+                    MpMainModels2.HdDepositTmp edit = db.HdDepositTmp.FirstOrDefault(m => m.SnNo == SnNo);
+                    if (edit != null)
+                    {
+                        edit.Status = 0;
+                        edit.MerKind = MerKind;
+                        edit.PassDate = PassDate;
+                        edit.MerName = MerName;
+                        edit.SendMan = Name;
+                        edit.PrizeDate = PrizeDate;
+                        edit.PrizeAmount = decimal.Parse(function.CheckNum(PrizeAmt));
+                        edit.DepositAmount = decimal.Parse(function.CheckNum(Deposit));
+                        edit.ActDate = ActDate;
+                        edit.DeviceKind = PosKind;
+                        edit.DepositActCode = DepositActCode;
+                        edit.MerNo = MerNo;
+                    }
+                }
+            }
+            catch(Exception ex)
+            {
+                function.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "好哒押金数据入库new异常");
+            }
+        }
+
+
+
+
+
+
+
+
+
+        
+
         public void StartGetTradeData()
         {
             //每天凌晨执行获取好哒FTP昨日交易数据

+ 1 - 0
Startup.cs

@@ -158,6 +158,7 @@ namespace MySystem
             GetHaoDaFTPInfoService.Instance.StartListen();
             GetHaoDaFTPInfoService.Instance.StartTradeListen();
             GetHaoDaFTPInfoService.Instance.StartGetTradeData();
+            GetHaoDaFTPInfoService.Instance.StartDepositListenByOne();
             GetHaoDaFTPInfoService.Instance.StartTradeListenByOne();
 
             // GetHaoDaFTPInfoService.Instance.StartTrade();