Răsfoiți Sursa

金控解绑逻辑

lichunlei 2 ani în urmă
părinte
comite
96cf7ca830
1 a modificat fișierele cu 91 adăugiri și 36 ștergeri
  1. 91 36
      AppStart/Helper/SycnSpServer/SycnSpBindService.cs

+ 91 - 36
AppStart/Helper/SycnSpServer/SycnSpBindService.cs

@@ -30,58 +30,113 @@ namespace MySystem
                     WebCMSEntities spdb = new WebCMSEntities();
                     PxcModels.WebCMSEntities db = new PxcModels.WebCMSEntities();
                     DateTime start = DateTime.Now.AddDays(-5);
-                    var Binds = spdb.BindRecord.Select(m => new { m.Id, m.CreateTime, m.Status, m.MerNo, m.MerSnNo }).Where(m => m.CreateTime >= start && m.Status == 1).OrderByDescending(m => m.Id).ToList();
+                    var Binds = spdb.BindRecord.Select(m => new { m.Id, m.CreateTime, m.Status, m.MerNo, m.MerSnNo, m.Field1 }).Where(m => m.CreateTime >= start && m.Status == 1).OrderByDescending(m => m.Id).ToList();
                     foreach (var Bind in Binds)
                     {
                         var tran = db.Database.BeginTransaction();
                         try
                         {
-                            PxcModels.MachineForSnNo posFor = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == Bind.MerSnNo) ?? new PxcModels.MachineForSnNo();
-                            PxcModels.PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == posFor.SnId);
-                            if (pos != null)
+                            if(Bind.Field1 == "解绑")
                             {
-                                pos.BindingState = 1;
-                                pos.BindingTime = Bind.CreateTime;
-                                pos.Status = 0;
-                                PxcModels.MachineForMerNo merFor = db.MachineForMerNo.FirstOrDefault(m => m.MerNo == Bind.MerNo);
-                                if (merFor == null)
+                                string PosSn = Bind.MerSnNo;
+                                string MerNo = Bind.MerNo;
+                                PxcModels.MachineForSnNo forSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == PosSn);
+                                PxcModels.MachineForMerNo forMerNo = db.MachineForMerNo.FirstOrDefault(m => m.MerNo == MerNo);
+                                PxcModels.PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == forSnNo.SnId);
+                                if (pos.ActivationState == 0 && pos.BuyUserId > 0 && pos.BindingState == 0)
                                 {
-                                    merFor = db.MachineForMerNo.Add(new PxcModels.MachineForMerNo()
+                                    if (forMerNo != null)
                                     {
-                                        MerNo = Bind.MerNo,
-                                        SnId = pos.Id,
-                                    }).Entity;
+                                        db.MachineForMerNo.Remove(forMerNo);
+                                        db.SaveChanges();
+                                    }
+                                    db.MachineUnBind.Add(new PxcModels.MachineUnBind()
+                                    {
+                                        CreateDate = DateTime.Now,
+                                        MerchantId = pos.BindMerchantId,
+                                        AuditDate = DateTime.Now,
+                                        AuditDesc = "金控推送解绑",
+                                        AuditStatus = 1,
+                                        SnNo = pos.PosSn,
+                                        BrandId = pos.BrandId,
+                                        UserId = pos.BuyUserId,
+                                        ApplyNo = "U" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8),
+                                    });
+                                    pos.BindMerchantId = 0;
+                                    pos.BindingState = 0;
+                                    pos.BindingTime = DateTime.Parse("1900-01-01");
+                                    pos.UserId = pos.BuyUserId;
+                                    string IdBrand = pos.BuyUserId + "_" + pos.BrandId;
+                                    PxcModels.UserMachineData userData = db.UserMachineData.FirstOrDefault(m => m.IdBrand == IdBrand);
+                                    if (userData == null)
+                                    {
+                                        userData = db.UserMachineData.Add(new PxcModels.UserMachineData()
+                                        {
+                                            IdBrand = IdBrand,
+                                        }).Entity;
+                                        db.SaveChanges();
+                                    }
+                                    userData.BindCount -= 1;
+                                    userData.UnBindCount += 1;
+                                    db.SaveChanges();
+
+                                    BindRecord edit = spdb.BindRecord.FirstOrDefault(m => m.Id == Bind.Id);
+                                    if (edit != null)
+                                    {
+                                        edit.Status = 2;
+                                        spdb.SaveChanges();
+                                    }
                                 }
-                                else
+                            }
+                            else
+                            {
+                                PxcModels.MachineForSnNo posFor = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == Bind.MerSnNo) ?? new PxcModels.MachineForSnNo();
+                                PxcModels.PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == posFor.SnId);
+                                if (pos != null)
                                 {
-                                    merFor.SnId = pos.Id;
-                                }
-                                db.SaveChanges();
-                                RedisDbconn.Instance.Set("PosMachinesTwo", pos);
+                                    pos.BindingState = 1;
+                                    pos.BindingTime = Bind.CreateTime;
+                                    pos.Status = 0;
+                                    PxcModels.MachineForMerNo merFor = db.MachineForMerNo.FirstOrDefault(m => m.MerNo == Bind.MerNo);
+                                    if (merFor == null)
+                                    {
+                                        merFor = db.MachineForMerNo.Add(new PxcModels.MachineForMerNo()
+                                        {
+                                            MerNo = Bind.MerNo,
+                                            SnId = pos.Id,
+                                        }).Entity;
+                                    }
+                                    else
+                                    {
+                                        merFor.SnId = pos.Id;
+                                    }
+                                    db.SaveChanges();
+                                    RedisDbconn.Instance.Set("PosMachinesTwo", pos);
 
-                                BindRecord edit = spdb.BindRecord.FirstOrDefault(m => m.Id == Bind.Id);
-                                if (edit != null)
-                                {
-                                    edit.Status = 2;
-                                    spdb.SaveChanges();
-                                }
+                                    BindRecord edit = spdb.BindRecord.FirstOrDefault(m => m.Id == Bind.Id);
+                                    if (edit != null)
+                                    {
+                                        edit.Status = 2;
+                                        spdb.SaveChanges();
+                                    }
 
-                                string IdBrand = pos.UserId + "_" + pos.BrandId;
-                                PxcModels.UserMachineData MachineData = db.UserMachineData.FirstOrDefault(m => m.IdBrand == IdBrand);
-                                if (MachineData == null)
-                                {
-                                    MachineData = db.UserMachineData.Add(new PxcModels.UserMachineData()
+                                    string IdBrand = pos.UserId + "_" + pos.BrandId;
+                                    PxcModels.UserMachineData MachineData = db.UserMachineData.FirstOrDefault(m => m.IdBrand == IdBrand);
+                                    if (MachineData == null)
                                     {
-                                        IdBrand = IdBrand,
-                                    }).Entity;
+                                        MachineData = db.UserMachineData.Add(new PxcModels.UserMachineData()
+                                        {
+                                            IdBrand = IdBrand,
+                                        }).Entity;
+                                        db.SaveChanges();
+                                    }
+                                    MachineData.BindCount += 1;
+                                    MachineData.UnBindCount -= 1;
                                     db.SaveChanges();
+                                    RedisDbconn.Instance.Set("UserMachineData:" + IdBrand, MachineData);
                                 }
-                                MachineData.BindCount += 1;
-                                MachineData.UnBindCount -= 1;
-                                db.SaveChanges();
-                                tran.Commit();
-                                RedisDbconn.Instance.Set("UserMachineData:" + IdBrand, MachineData);
                             }
+                            tran.Commit();
                         }
                         catch (Exception ex)
                         {