Explorar o código

预发机预扣款队列调整

lcl hai 1 ano
pai
achega
46f386d54f
Modificáronse 2 ficheiros con 58 adicións e 23 borrados
  1. 38 23
      AppStart/Helper/PrePosWithholdService.cs
  2. 20 0
      Util/Utils.cs

+ 38 - 23
AppStart/Helper/PrePosWithholdService.cs

@@ -28,7 +28,7 @@ namespace MySystem
             {
                 try
                 {
-                    if(DateTime.Now.Hour > 3 && DateTime.Now.Hour < 19)
+                    if(DateTime.Now.Hour > 3 && DateTime.Now.Hour < 20 && DateTime.Now >= DateTime.Parse("2023-09-20 11:00:00"))
                     {
                         string chk = function.ReadInstance("/PrePosWithhold/" + DateTime.Now.ToString("yyyyMMdd") + ".txt");
                         if(string.IsNullOrEmpty(chk))
@@ -51,37 +51,41 @@ namespace MySystem
         {
             WebCMSEntities db = new WebCMSEntities();
             DateTime end = DateTime.Parse(DateTime.Now.AddDays(-29).ToString("yyyy-MM-dd") + " 00:00:00");
+            int Id = 0;
             bool op = true;
             while(op)
             {
-                var PrePosList = db.PreSendStockDetail.Where(m => m.ApplyFlag == 0 && m.CreateDate < end && m.Status >= 0 && m.Status <= 1 && m.WithholdFlag == 0).OrderBy(m => m.Id).Take(20).ToList();
+                var PrePosList = db.PreSendStockDetail.Where(m => m.Id > Id && m.ApplyFlag == 0 && m.CreateDate < end && m.Status >= 0 && m.Status <= 1 && m.WithholdFlag == 0).OrderBy(m => m.Id).Take(20).ToList();
                 if(PrePosList.Count > 0)
                 {
                     foreach(var Pos in PrePosList)
                     {
-                        KqProducts brand = db.KqProducts.FirstOrDefault(m => m.Id == Pos.BrandId) ?? new KqProducts();
-                        decimal ChargeAmount = brand.Kind == 2 ? 300 : 200;
-                        db.ToChargeBackRecord.Add(new ToChargeBackRecord
-                        {
-                            CreateDate = DateTime.Now,
-                            SeoTitle = "系统",
-                            SeoDescription = "预发机超时未申请扣款",
-                            Remark = "预发机超时未申请扣款",
-                            ChargeType = 1,
-                            ChargeAmount = ChargeAmount,
-                            UserId = Pos.ToUserId,
-                            Field1 = Pos.SnNo,
-                        });
-                        PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == Pos.SnId);
+                        PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == Pos.SnId && m.BuyUserId == 0 && m.PreUserId > 0);
                         if(pos != null)
                         {
+                            KqProducts brand = db.KqProducts.FirstOrDefault(m => m.Id == Pos.BrandId) ?? new KqProducts();
+                            decimal ChargeAmount = brand.Kind == 2 ? 300 : 200;
+                            db.ToChargeBackRecord.Add(new ToChargeBackRecord
+                            {
+                                CreateDate = DateTime.Now,
+                                SeoTitle = "系统",
+                                SeoDescription = "预发机超时未申请扣款",
+                                Remark = "预发机超时未申请扣款",
+                                ChargeType = 1,
+                                ChargeAmount = ChargeAmount,
+                                UserId = Pos.ToUserId,
+                                Field1 = Pos.SnNo,
+                            });
                             pos.WithholdFlag = 1;
+                            PreSendStockDetail pre = db.PreSendStockDetail.FirstOrDefault(m => m.Id == Pos.Id);
+                            if(pre != null)
+                            {
+                                pre.WithholdFlag = 1;
+                            }
+                            //增加账户预扣总额
+                            Utils.Instance.ToChargeAmount(Pos.ToUserId, ChargeAmount);
                         }
-                        PreSendStockDetail pre = db.PreSendStockDetail.FirstOrDefault(m => m.Id == Pos.Id);
-                        if(pre != null)
-                        {
-                            pre.WithholdFlag = 1;
-                        }
+                        Id = Pos.Id;
                     }
                     db.SaveChanges();
                 }
@@ -121,24 +125,35 @@ namespace MySystem
                         int UserId = int.Parse(function.CheckInt(jsonObj["UserId"].ToString()));
                         string SnNo = jsonObj["SnNo"].ToString();
                         WebCMSEntities db = new WebCMSEntities();
+                        decimal ChargeAmount = 0;
                         ToChargeBackRecord back = db.ToChargeBackRecord.FirstOrDefault(m => m.UserId == UserId && m.Field1 == SnNo && m.Remark == "预发机超时未申请扣款");
                         if(back != null)
                         {
+                            ChargeAmount = back.ChargeAmount;
                             if(back.Status == 1)
                             {
-                                Utils.Instance.OpAccount(back.UserId, back.ChargeAmount, 134);
+                                Utils.Instance.OpAccount(back.UserId, ChargeAmount, 134);
                             }
                             db.ToChargeBackRecord.Remove(back);
                             db.SaveChanges();
                         }
                         db.Dispose();
+
+                        //减少账户预扣总额
+                        Utils.Instance.ToChargeAmount(UserId, -ChargeAmount);
+
+                        Thread.Sleep(500);
+                    }
+                    else
+                    {
+                        Thread.Sleep(30000);
                     }
                 }
                 catch (Exception ex)
                 {
                     function.WriteLog(DateTime.Now.ToString() + "\r\n" + ex.ToString(), "预发扣款机具申请异常");
+                    Thread.Sleep(300000);
                 }
-                Thread.Sleep(300000);
             }
         }
     }

+ 20 - 0
Util/Utils.cs

@@ -56,5 +56,25 @@ namespace MySystem
             db.Dispose();
         }
 
+
+
+        public void ToChargeAmount(int UserId, decimal Money)
+        {
+            WebCMSEntities db = new WebCMSEntities();
+            UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId);
+            if (account == null)
+            {
+                account = db.UserAccount.Add(new UserAccount()
+                {
+                    Id = UserId,
+                    UserId = UserId,
+                }).Entity;
+                db.SaveChanges();
+            }
+            account.ToChargeAmount += Money;
+            db.SaveChanges();
+            db.Dispose();
+        }
+
     }
 }