Forráskód Böngészése

分账队列监听方式更改,提交分账成功后,等待两分钟直接进行返现流程

lcl 1 éve
szülő
commit
f7021a8f6b

+ 2 - 0
Models/Main/ConsumerOrders.cs

@@ -29,5 +29,7 @@ namespace MySystem.Models.Main
         public ulong IsAct { get; set; }
         public int UserId { get; set; }
         public decimal MerchantActualAmount { get; set; }
+        public int DivideFlag { get; set; }
+        public DateTime? DivideDate { get; set; }
     }
 }

+ 8 - 0
Models/Main/WebCMSEntities.cs

@@ -2257,6 +2257,14 @@ namespace MySystem.Models.Main
 
                 entity.Property(e => e.CurDivi).HasColumnType("decimal(18,2)");
 
+                entity.Property(e => e.DivideDate)
+                    .HasColumnType("datetime")
+                    .HasComment("提交分账时间");
+
+                entity.Property(e => e.DivideFlag)
+                    .HasColumnType("int(11)")
+                    .HasComment("分账标记");
+
                 entity.Property(e => e.IsAct)
                     .HasColumnType("bit(1)")
                     .HasDefaultValueSql("b'0'");

+ 61 - 7
Util/HaoDa/ProfitShareService.cs

@@ -26,15 +26,21 @@ namespace MySystem
         {
             while (true)
             {
-                string content = RedisDbconn.Instance.RPop<string>("ProfitShareHdQueue");
-                if (!string.IsNullOrEmpty(content))
+                WebCMSEntities db = new WebCMSEntities();
+                DateTime checkDate = DateTime.Now.AddMinutes(-2);
+                var list = db.ConsumerOrders.Select(m => new { m.Id, m.DivideDate, m.DivideFlag, m.IsAct, m.PayMode }).Where(m => m.DivideFlag == 1 && m.IsAct == 1 && m.DivideDate < checkDate).OrderBy(m => m.Id).Take(100).ToList();
+                foreach (var sub in list)
                 {
-                    StartDo(content);
-                }
-                else
-                {
-                    Thread.Sleep(2000);
+                    RedisDbconn.Instance.AddList("ConsumerOrdersHd:Divi:" + sub.PayMode + ":List", sub.Id.ToString());
+                    ConsumerOrders order = db.ConsumerOrders.FirstOrDefault(m => m.Id == sub.Id);
+                    if (order != null)
+                    {
+                        order.DivideFlag = 2;
+                        db.SaveChanges();
+                    }
                 }
+                db.Dispose();
+                Thread.Sleep(5000);
             }
         }
 
@@ -68,5 +74,53 @@ namespace MySystem
                 LogHelper.Instance.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "分账队列异常");
             }
         }
+
+
+        // public void StartListen()
+        // {
+        //     while (true)
+        //     {
+        //         string content = RedisDbconn.Instance.RPop<string>("ProfitShareHdQueue");
+        //         if (!string.IsNullOrEmpty(content))
+        //         {
+        //             StartDo(content);
+        //         }
+        //         else
+        //         {
+        //             Thread.Sleep(2000);
+        //         }
+        //     }
+        // }
+
+        // public void StartDo(string content)
+        // {
+        //     try
+        //     {
+        //         JsonData jsonObj = JsonMapper.ToObject(content);
+        //         string ApplyNo = jsonObj["ApplyNo"].ToString(); //微信订单号
+        //         string MchtNo = jsonObj["MchtNo"].ToString(); //商户订单号
+        //         string OrderNo = jsonObj["OrderNo"].ToString(); //商户订单号
+        //         JsonData result = JsonMapper.ToObject(HaoDaHelper.Instance.OrderDivideAccountsQuery(ApplyNo, MchtNo));
+        //         string state = result["data"]["status"].ToString();
+        //         if (result["data"]["status"].ToString() == "0")
+        //         {
+        //             WebCMSEntities db = new WebCMSEntities();
+        //             ConsumerOrders order = db.ConsumerOrders.FirstOrDefault(m => m.OrderNo == OrderNo && m.Status == 2);
+        //             if (order != null)
+        //             {
+        //                 RedisDbconn.Instance.AddList("ConsumerOrdersHd:Divi:" + order.PayMode + ":List", order.Id.ToString());
+        //             }
+        //             db.Dispose();
+        //         }
+        //         else
+        //         {
+        //             RedisDbconn.Instance.AddList("ProfitShareHdQueue", content);
+        //         }
+        //     }
+        //     catch (Exception ex)
+        //     {
+        //         LogHelper.Instance.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "分账队列异常");
+        //     }
+        // }
     }
 }

+ 11 - 6
Util/HaoDa/WeChatPayBackService.cs

@@ -162,18 +162,23 @@ namespace MySystem
                                     }
 
                                     //开始监听分账状态
-                                    Dictionary<string, object> req = new Dictionary<string, object>();
-                                    req.Add("ApplyNo", applyNo);
-                                    req.Add("OrderNo", order.OrderNo);
-                                    req.Add("MchtNo", mchtNo);
-                                    RedisDbconn.Instance.AddList("ProfitShareHdQueue", Newtonsoft.Json.JsonConvert.SerializeObject(req));
+                                    // Dictionary<string, object> req = new Dictionary<string, object>();
+                                    // req.Add("ApplyNo", applyNo);
+                                    // req.Add("OrderNo", order.OrderNo);
+                                    // req.Add("MchtNo", mchtNo);
+                                    // RedisDbconn.Instance.AddList("ProfitShareHdQueue", Newtonsoft.Json.JsonConvert.SerializeObject(req));
                                 }
                                 else
                                 {
-                                    RedisDbconn.Instance.AddList("ConsumerOrdersHd:Divi:2:List", order.Id.ToString());
+                                    RedisDbconn.Instance.AddList("ConsumerOrdersHd:Divi:" + order.PayMode + ":List", order.Id.ToString());
                                 }
                             }
                             order.Status = Status;
+                            if(Status == 2)
+                            {
+                                order.DivideFlag = 1;
+                                order.DivideDate = DateTime.Now;
+                            }
                         }
                     }
                     db.SaveChanges();