Bläddra i källkod

Merge branch 'feat-lcl-盟主额度返还' into release-mainserver

lcl 11 månader sedan
förälder
incheckning
f9351c3325

+ 1 - 1
AppStart/Helper/AlipayPayBack2Service.cs

@@ -358,7 +358,7 @@ namespace MySystem
                                 if(account.LeaderReserve >= TotalPrice)
                                 {
                                     function.WriteLog("盟主储蓄金够,可返", "操作小盟主购买逻辑监控日志");
-                                    int ReserveRecordId = OpReserve(db, order, LeaderUserId, TotalPrice, 2, 0, "推荐小盟主");
+                                    int ReserveRecordId = OpReserve(db, order, LeaderUserId, TotalPrice, 2, order.UserId, "推荐小盟主");
                                     OpLeaderAccount(db, order, LeaderUserId, TotalPrice, 1, 1, ReserveRecordId);
                                     LeaderUserId = 0;
                                     result = false;

+ 13 - 3
AppStart/Helper/LeaderApplyCouponsHelper.cs

@@ -37,6 +37,8 @@ namespace MySystem
                         var queryList = db.LeaderReserveRecord.FirstOrDefault(m => m.Id == Id) ?? new LeaderReserveRecord();
 
                         List<int> couponIds = new List<int>();
+                        List<string> codes = new List<string>();                        
+                        int count = 0;
 
                         JsonData ApplyList = JsonMapper.ToObject(queryList.SeoTitle);
                         for (int i = 0; i < ApplyList.Count; i++)
@@ -58,7 +60,9 @@ namespace MySystem
                                         SnNo = posCoupon.ExchangeCode,
                                     });
                                     couponIds.Add(item.Id);
+                                    codes.Add(item.ExchangeCode);
                                 }
+                                count += couponIds.Count / 3;
                             }
                             //大机
                             if (type == 2)
@@ -75,13 +79,15 @@ namespace MySystem
                                         SnNo = posCoupon.ExchangeCode,
                                     });
                                     couponIds.Add(items.Id);
+                                    codes.Add(items.ExchangeCode);
                                 }
+                                count += couponIds.Count / 2;
                             }
                             db.SaveChanges();
                         }
                         db.SaveChanges();
                         
-                        dosomething(Id, couponIds);
+                        dosomething(Id, couponIds, codes, count);
                     }
                     catch (Exception ex)
                     {
@@ -95,7 +101,7 @@ namespace MySystem
             }
         }
 
-        public void dosomething(int Id, List<int> couponIds)
+        public void dosomething(int Id, List<int> couponIds, List<string> codes, int count = 0)
         { 
             WebCMSEntities db = new WebCMSEntities();
             OpModels.WebCMSEntities opdb = new OpModels.WebCMSEntities();
@@ -116,7 +122,11 @@ namespace MySystem
                     index += 1;
 
                     //给券打大盟主标记
-                    if(parentUser.LeaderLevel == 2 && !BigLeaderFlag)
+                    if(parentUser.LeaderLevel == 1 && PosCouponPrizeService.Instance.CheckLeaderReserve(db, count, parentUser.Id) && !BigLeaderFlag)
+                    {
+                        BigLeaderFlag = PosCouponPrizeService.Instance.CheckPosCouponLeaderFlag(db, parentUser.Id, count, codes);
+                    }
+                    else if(parentUser.LeaderLevel == 2 && !BigLeaderFlag)
                     {
                         for (int i = 0; i < ApplyList.Count; i++)
                         {

+ 89 - 3
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);
@@ -155,12 +156,15 @@ namespace MySystem
                             }
 
                             //给券打大盟主标记
-                            if(parentUser.LeaderLevel == 2 && !BigLeaderFlag)
+                            if(parentUser.LeaderLevel == 1 && CheckLeaderReserve(db, order.BuyCount, parentUser.Id) && !BigLeaderFlag)
+                            {
+                                BigLeaderFlag = CheckPosCouponLeaderFlag(db, parentUser.Id, order.BuyCount, codes);
+                            }
+                            else if(parentUser.LeaderLevel == 2 && !BigLeaderFlag)
                             {
                                 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);
                                 }
@@ -969,7 +973,40 @@ namespace MySystem
             foreach(int couponId in couponIds)
             {
                 PosCoupons coupon = db.PosCoupons.FirstOrDefault(m => m.Id == couponId);
-                if(coupon != null && pacccount.LeaderReserve >= 400 * Count)
+                decimal LeaderReserve = pacccount.LeaderReserve;
+                decimal CheckReserve = 400 * Count;
+                // 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;
@@ -979,6 +1016,55 @@ namespace MySystem
             return SetCount;
         }
 
+        public bool CheckPosCouponLeaderFlag(WebCMSEntities db, int UserId, int Count, List<string> codes)
+        {
+            int SetCount = 0;
+            decimal CheckReserve = 400 * Count;
+            // decimal LeaderReserve = 0;
+            LeaderReserveRecord ReserveRecord = db.LeaderReserveRecord.FirstOrDefault(m => m.SourceUserId == UserId && m.Remark == "推荐小盟主" && m.ChangeAmt - m.UsedReserve > CheckReserve);
+            if(ReserveRecord != null)
+            {
+                int LeaderUserId = ReserveRecord.UserId;
+                // 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;
+                //         }
+                //     }
+                // }
+
+                List<int> couponIds = db.PosCoupons.Where(m => codes.Contains(m.ExchangeCode)).OrderBy(m => m.Id).ToList().Select(m => m.Id).ToList();
+                foreach(int couponId in couponIds)
+                {
+                    PosCoupons coupon = db.PosCoupons.FirstOrDefault(m => m.Id == couponId);
+                    if(coupon != null)
+                    {
+                        coupon.LeaderUserId = LeaderUserId;
+                        SetCount += 1;
+                    }
+                }
+                db.SaveChanges();
+            }
+            return SetCount > 0;
+        }
+
         /// <summary>
         /// 获取购机奖金额
         /// </summary>