소스 검색

添加统计单个商户达标数据队列

lcl 1 년 전
부모
커밋
71c18eb6d5
2개의 변경된 파일101개의 추가작업 그리고 56개의 파일을 삭제
  1. 100 56
      AppStart/Helper/DepositReturnStatService.cs
  2. 1 0
      Startup.cs

+ 100 - 56
AppStart/Helper/DepositReturnStatService.cs

@@ -61,62 +61,7 @@ namespace MySystem
                 {
                     foreach(PosMerchantInfo merchant in merchants)
                     {
-                        function.WriteLog("商户ID:" + merchant.Id, "每月统计押金达标情况");
-                        // string start = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
-                        int StandardMonths = merchant.StandardMonths;
-                        int StandardStatus = merchant.StandardStatus;
-                        function.WriteLog("StandardMonths:" + StandardMonths, "每月统计押金达标情况");
-                        function.WriteLog("StandardStatus:" + StandardStatus, "每月统计押金达标情况");    
-                        DateTime ActDate = merchant.CreateDate.Value;
-                        if(merchant.MerStandardDate == null)
-                        {
-                            PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == merchant.KqSnNo && m.ActivationState == 1 && m.ActivationTime != null);
-                            if(pos != null)
-                            {
-                                ActDate = pos.ActivationTime.Value;
-                            }
-                        }
-                        else
-                        {
-                            ActDate = merchant.MerStandardDate.Value;
-                        }
-                        int MonthNum = StandardMonths;
-                        for (int i = StandardMonths + 1; i <= 10; i++)
-                        {
-                            string TradeMonth = ActDate.AddMonths(i).ToString("yyyyMM");
-                            if(int.Parse(TradeMonth) < int.Parse(DateTime.Now.ToString("yyyyMM")))
-                            {
-                                decimal TradeAmount = 0;
-                                bool CheckAmount = db.PosMerchantTradeSummay.Any(m => m.MerchantId == merchant.Id && m.TradeMonth == TradeMonth);
-                                if(CheckAmount)
-                                {
-                                    TradeAmount = db.PosMerchantTradeSummay.Where(m => m.MerchantId == merchant.Id && m.TradeMonth == TradeMonth).Sum(m => m.TradeAmount);
-                                }
-                                if(TradeAmount >= 10000)
-                                {
-                                    MonthNum = i;
-                                }
-                                else
-                                {
-                                    StandardStatus = -1;
-                                    break;
-                                }
-                            }
-                        }
-                        function.WriteLog("MonthNum:" + MonthNum, "每月统计押金达标情况"); 
-                        if(MonthNum >= 10)
-                        {
-                            StandardStatus = 4;
-                        }
-                        function.WriteLog("StandardStatus:" + StandardStatus + "\n\n", "每月统计押金达标情况"); 
-                        PosMerchantInfo edit = db.PosMerchantInfo.FirstOrDefault(m => m.Id == merchant.Id);
-                        if(edit != null)
-                        {
-                            edit.StandardMonths = MonthNum;
-                            edit.StandardStatus = StandardStatus;
-                            db.SaveChanges();
-                        }
-                        // string end = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
+                        DoSomething(db, merchant);
                         startid = merchant.Id;
                     }
                 }
@@ -128,5 +73,104 @@ namespace MySystem
             }
             db.Dispose();
         }
+
+
+        public void StartEverTime()
+        {
+            Thread th = new Thread(StartEverTimeDo);
+            th.IsBackground = true;
+            th.Start();
+        }
+
+        public void StartEverTimeDo()
+        {
+            while(true)
+            {
+                try
+                {
+                    string content = RedisDbconn.Instance.Get<string>("DepositReturnStatQueue");
+                    if(!string.IsNullOrEmpty(content))
+                    {
+                        int MerchantId = int.Parse(function.CheckInt(content));
+                        WebCMSEntities db = new WebCMSEntities();
+                        PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == MerchantId);
+                        if(merchant != null)
+                        {
+                            DoSomething(db, merchant);
+                        }
+                        db.Dispose();
+                    }
+                    else
+                    {
+                        Thread.Sleep(60000);
+                    }
+                }
+                catch(Exception ex)
+                {
+                    function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "统计单个商户押金达标数据异常");
+                }
+            }
+        }
+
+
+
+        private void DoSomething(WebCMSEntities db, PosMerchantInfo merchant)
+        {
+            function.WriteLog("商户ID:" + merchant.Id, "每月统计押金达标情况");
+            // string start = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
+            int StandardMonths = merchant.StandardMonths;
+            int StandardStatus = merchant.StandardStatus;
+            function.WriteLog("StandardMonths:" + StandardMonths, "每月统计押金达标情况");
+            function.WriteLog("StandardStatus:" + StandardStatus, "每月统计押金达标情况");    
+            DateTime ActDate = merchant.CreateDate.Value;
+            if(merchant.MerStandardDate == null)
+            {
+                PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == merchant.KqSnNo && m.ActivationState == 1 && m.ActivationTime != null);
+                if(pos != null)
+                {
+                    ActDate = pos.ActivationTime.Value;
+                }
+            }
+            else
+            {
+                ActDate = merchant.MerStandardDate.Value;
+            }
+            int MonthNum = StandardMonths;
+            for (int i = StandardMonths + 1; i <= 10; i++)
+            {
+                string TradeMonth = ActDate.AddMonths(i).ToString("yyyyMM");
+                if(int.Parse(TradeMonth) < int.Parse(DateTime.Now.ToString("yyyyMM")))
+                {
+                    decimal TradeAmount = 0;
+                    bool CheckAmount = db.PosMerchantTradeSummay.Any(m => m.MerchantId == merchant.Id && m.TradeMonth == TradeMonth);
+                    if(CheckAmount)
+                    {
+                        TradeAmount = db.PosMerchantTradeSummay.Where(m => m.MerchantId == merchant.Id && m.TradeMonth == TradeMonth).Sum(m => m.TradeAmount);
+                    }
+                    if(TradeAmount >= 10000)
+                    {
+                        MonthNum = i;
+                    }
+                    else
+                    {
+                        StandardStatus = -1;
+                        break;
+                    }
+                }
+            }
+            function.WriteLog("MonthNum:" + MonthNum, "每月统计押金达标情况"); 
+            if(MonthNum >= 10)
+            {
+                StandardStatus = 4;
+            }
+            function.WriteLog("StandardStatus:" + StandardStatus + "\n\n", "每月统计押金达标情况"); 
+            PosMerchantInfo edit = db.PosMerchantInfo.FirstOrDefault(m => m.Id == merchant.Id);
+            if(edit != null)
+            {
+                edit.StandardMonths = MonthNum;
+                edit.StandardStatus = StandardStatus;
+                db.SaveChanges();
+            }
+        }
     }
 }

+ 1 - 0
Startup.cs

@@ -224,6 +224,7 @@ namespace MySystem
                 StatService.Instance.Start(); //每日重置交易额
                 StoreApplyHelper.Instance.Start(); // 每月1号重置仓库额度
                 DepositReturnStatService.Instance.Start(); //每月1号统计达标商户(退押需要的)
+                DepositReturnStatService.Instance.StartEverTime(); //统计单个商户达标数据(退押需要的)
                 AutoOpOrderService.Instance.StartOrderCancel(); //自动取消超时订单(15分钟)
                 OperateStockService.Instance.Start(); //运营中心库存实时更新
                 ResetSmallStoreHelper.Instance.Start(); //每月重置小分仓额度