浏览代码

调整大盟主标记逻辑

lcl 1 年之前
父节点
当前提交
c6236973a7
共有 1 个文件被更改,包括 85 次插入27 次删除
  1. 85 27
      AppStart/Helper/PosCouponPrize/PosCouponPrizeService.cs

+ 85 - 27
AppStart/Helper/PosCouponPrize/PosCouponPrizeService.cs

@@ -89,6 +89,7 @@ namespace MySystem
                     {
                         PreUserLevel(db, order.UserId, 1, DateTime.Parse("2025-01-01 00:00:00"));
                     }
+                    List<string> codes = order.SnNos.Split(',').ToList();
                     string ParentNav = orderUser.ParentNav + "," + orderUser.Id + ",";
                     string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(',');
                     Array.Reverse(ParentNavList);
@@ -96,6 +97,7 @@ namespace MySystem
                     bool DirectPrizeFlag = false; //推荐奖励发放标识
                     bool BackAccountFlag = false; //备用金返余额标识
                     bool BigLeaderFlag = false; //大盟主标记
+                    BigLeaderFlag = CheckPosCouponLeaderFlag(db, order.UserId, order.BuyCount, codes);
                     decimal BuyPrize = 0; //购机奖励
                     foreach(string ParentId in ParentNavList)
                     {
@@ -160,7 +162,6 @@ namespace MySystem
                                 BigLeaderFlag = true;
                                 if(!string.IsNullOrEmpty(order.SnNos))
                                 {
-                                    List<string> codes = order.SnNos.Split(',').ToList();
                                     List<int> couponIds = db.PosCoupons.Where(m => codes.Contains(m.ExchangeCode)).OrderBy(m => m.Id).Take(CouponCount).ToList().Select(m => m.Id).ToList();
                                     SetPosCouponLeaderFlag(db, parentUser.Id, order.BuyCount, couponIds);
                                 }
@@ -770,45 +771,102 @@ namespace MySystem
                 PosCoupons coupon = db.PosCoupons.FirstOrDefault(m => m.Id == couponId);
                 decimal LeaderReserve = pacccount.LeaderReserve;
                 decimal CheckReserve = 400 * Count;
-                if(LeaderReserve < CheckReserve)
+                // if(LeaderReserve < CheckReserve)
+                // {
+                //     LeaderReserveRecord ReserveRecord = db.LeaderReserveRecord.FirstOrDefault(m => m.UserId == LeaderUserId && m.Remark == "推荐小盟主" && m.ChangeAmt - m.UsedReserve > 0);
+                //     if(ReserveRecord != null)
+                //     {
+                //         if(ReserveRecord.ChangeAmt - ReserveRecord.UsedReserve >= CheckReserve)
+                //         {
+                //             LeaderReserve = CheckReserve;
+                //             ReserveRecord.UsedReserve += CheckReserve;
+                //         }
+                //         else
+                //         {
+                //             decimal OtherLeaderReserve = ReserveRecord.ChangeAmt - ReserveRecord.UsedReserve;
+                //             ReserveRecord.UsedReserve += OtherLeaderReserve;
+                //             LeaderReserveRecord ReserveRecord2 = db.LeaderReserveRecord.FirstOrDefault(m => m.Id > ReserveRecord.Id && m.UserId == LeaderUserId && m.Remark == "推荐小盟主" && m.ChangeAmt - m.UsedReserve > 0);
+                //             if(ReserveRecord2 != null)
+                //             {
+                //                 if(ReserveRecord2.ChangeAmt - ReserveRecord2.UsedReserve >= CheckReserve - OtherLeaderReserve)
+                //                 {
+                //                     LeaderReserve = CheckReserve - OtherLeaderReserve;
+                //                     ReserveRecord2.UsedReserve += CheckReserve - OtherLeaderReserve;
+                //                 }
+                //                 else
+                //                 {
+                //                     OtherLeaderReserve = ReserveRecord2.ChangeAmt - ReserveRecord2.UsedReserve;
+                //                     ReserveRecord2.UsedReserve += OtherLeaderReserve;
+                //                 }
+                //             }
+                //         }
+                //     }
+                // }
+                if(coupon != null && LeaderReserve >= CheckReserve)
+                {
+                    coupon.LeaderUserId = LeaderUserId;
+                    SetCount += 1;
+                }
+            }
+            db.SaveChanges();
+            return SetCount;
+        }
+
+        public bool CheckPosCouponLeaderFlag(WebCMSEntities db, int UserId, int Count, List<string> codes)
+        {
+            int SetCount = 0;
+            Users user = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
+            string ParentNav = user.ParentNav + "," + UserId + ",";
+            List<int> UserIds = new List<int>();
+            string[] ParentNavList = ParentNav.Replace(",,", ",").Trim(',').Split(',');
+            foreach(string SubId in ParentNavList)
+            {
+                UserIds.Add(int.Parse(SubId));
+            }
+            decimal CheckReserve = 400 * Count;
+            decimal LeaderReserve = 0;
+            LeaderReserveRecord ReserveRecord = db.LeaderReserveRecord.FirstOrDefault(m => UserIds.Contains(m.UserId) && m.Remark == "推荐小盟主" && m.ChangeAmt - m.UsedReserve > 0);
+            if(ReserveRecord != null)
+            {
+                int LeaderUserId = ReserveRecord.UserId;
+                if(ReserveRecord.ChangeAmt - ReserveRecord.UsedReserve >= CheckReserve)
                 {
-                    LeaderReserveRecord ReserveRecord = db.LeaderReserveRecord.FirstOrDefault(m => m.UserId == LeaderUserId && m.Remark == "推荐小盟主" && m.ChangeAmt - m.UsedReserve > 0);
-                    if(ReserveRecord != null)
+                    LeaderReserve = CheckReserve;
+                    ReserveRecord.UsedReserve += CheckReserve;
+                }
+                else
+                {
+                    decimal OtherLeaderReserve = ReserveRecord.ChangeAmt - ReserveRecord.UsedReserve;
+                    ReserveRecord.UsedReserve += OtherLeaderReserve;
+                    LeaderReserveRecord ReserveRecord2 = db.LeaderReserveRecord.FirstOrDefault(m => m.Id > ReserveRecord.Id && m.UserId == LeaderUserId && m.Remark == "推荐小盟主" && m.ChangeAmt - m.UsedReserve > 0);
+                    if(ReserveRecord2 != null)
                     {
-                        if(ReserveRecord.ChangeAmt - ReserveRecord.UsedReserve >= CheckReserve)
+                        if(ReserveRecord2.ChangeAmt - ReserveRecord2.UsedReserve >= CheckReserve - OtherLeaderReserve)
                         {
-                            LeaderReserve = CheckReserve;
-                            ReserveRecord.UsedReserve += CheckReserve;
+                            LeaderReserve = CheckReserve - OtherLeaderReserve;
+                            ReserveRecord2.UsedReserve += CheckReserve - OtherLeaderReserve;
                         }
                         else
                         {
-                            decimal OtherLeaderReserve = ReserveRecord.ChangeAmt - ReserveRecord.UsedReserve;
-                            ReserveRecord.UsedReserve += OtherLeaderReserve;
-                            LeaderReserveRecord ReserveRecord2 = db.LeaderReserveRecord.FirstOrDefault(m => m.Id > ReserveRecord.Id && m.UserId == LeaderUserId && m.Remark == "推荐小盟主" && m.ChangeAmt - m.UsedReserve > 0);
-                            if(ReserveRecord2 != null)
-                            {
-                                if(ReserveRecord2.ChangeAmt - ReserveRecord2.UsedReserve >= CheckReserve - OtherLeaderReserve)
-                                {
-                                    LeaderReserve = CheckReserve - OtherLeaderReserve;
-                                    ReserveRecord2.UsedReserve += CheckReserve - OtherLeaderReserve;
-                                }
-                                else
-                                {
-                                    OtherLeaderReserve = ReserveRecord2.ChangeAmt - ReserveRecord2.UsedReserve;
-                                    ReserveRecord2.UsedReserve += OtherLeaderReserve;
-                                }
-                            }
+                            OtherLeaderReserve = ReserveRecord2.ChangeAmt - ReserveRecord2.UsedReserve;
+                            ReserveRecord2.UsedReserve += OtherLeaderReserve;
                         }
                     }
                 }
-                if(coupon != null && LeaderReserve >= CheckReserve)
+
+                List<int> couponIds = db.PosCoupons.Where(m => codes.Contains(m.ExchangeCode)).OrderBy(m => m.Id).Take(Count).ToList().Select(m => m.Id).ToList();
+                foreach(int couponId in couponIds)
                 {
-                    coupon.LeaderUserId = LeaderUserId;
-                    SetCount += 1;
+                    PosCoupons coupon = db.PosCoupons.FirstOrDefault(m => m.Id == couponId);
+                    if(coupon != null)
+                    {
+                        coupon.LeaderUserId = LeaderUserId;
+                        SetCount += 1;
+                    }
                 }
             }
             db.SaveChanges();
-            return SetCount;
+            return SetCount > 0;
         }
 
         /// <summary>