浏览代码

修复运营中心奖励逻辑

lichunlei 2 年之前
父节点
当前提交
774f0e1eed

+ 58 - 34
AppStart/Helper/AlipayPayBack2Service.cs

@@ -206,13 +206,13 @@ namespace MySystem
                             //充值盟主储备金
                             OpReserve(db, order, order.UserId, order.TotalPrice, 1);
                             Users user = db.Users.FirstOrDefault(m => m.Id == order.UserId) ?? new Users();
-                            OperateReserveBackFor(db, user.ParentUserId, order.TotalPrice);
+                            if(pro.ProductId == 27) OperateReserveBackFor(db, user.Id, order.TotalPrice);
                         }
                         if (pro.ProductId == 28) //购买小盟主,给上级大盟主返储备金
                         {
                             LeaderBack(db, order);
                             Users user = db.Users.FirstOrDefault(m => m.Id == order.UserId) ?? new Users();
-                            OperateReserveBackFor(db, user.ParentUserId, order.TotalPrice);
+                            OperateReserveBackFor(db, user.Id, order.TotalPrice);
                         }
                     }
 
@@ -268,12 +268,16 @@ namespace MySystem
                                         {
                                             if(couponIds.Count > 0)
                                             {
+                                                UserAccount acccount = db.UserAccount.FirstOrDefault(m => m.Id == user.Id) ?? new UserAccount();
                                                 foreach(int couponId in couponIds)
                                                 {
                                                     PosCoupons coupon = db.PosCoupons.FirstOrDefault(m => m.Id == couponId);
                                                     if(coupon != null)
                                                     {
-                                                        coupon.LeaderUserId = user.Id;
+                                                        if(acccount.LeaderReserve >= 400 * pro.ProductCount)
+                                                        {
+                                                            coupon.LeaderUserId = user.Id;
+                                                        }
                                                         coupon.OpId = user.Id;
                                                     }
                                                 }
@@ -294,17 +298,20 @@ namespace MySystem
                                                     {
                                                         if(couponIds.Count > 0)
                                                         {
+                                                            UserAccount acccount = db.UserAccount.FirstOrDefault(m => m.Id == order.UserId) ?? new UserAccount();
                                                             foreach(int couponId in couponIds)
                                                             {
                                                                 PosCoupons coupon = db.PosCoupons.FirstOrDefault(m => m.Id == couponId);
                                                                 if(coupon != null)
                                                                 {
-                                                                    coupon.LeaderUserId = user.Id;
+                                                                    if(acccount.LeaderReserve >= 400 * pro.ProductCount)
+                                                                    {
+                                                                        coupon.LeaderUserId = user.Id;
+                                                                    }
                                                                     coupon.OpId = puser.Id;
                                                                 }
                                                             }
                                                             db.SaveChanges();
-                                                            UserAccount acccount = db.UserAccount.FirstOrDefault(m => m.Id == order.UserId) ?? new UserAccount();
                                                             if(acccount.LeaderReserve >= 400 * pro.ProductCount)
                                                             {
                                                                 //扣减备用金
@@ -350,10 +357,11 @@ namespace MySystem
                                                 {
                                                     if(couponIds.Count > 0)
                                                     {
+                                                        UserAccount pacccount = db.UserAccount.FirstOrDefault(m => m.Id == puser.Id) ?? new UserAccount();
                                                         foreach(int couponId in couponIds)
                                                         {
                                                             PosCoupons coupon = db.PosCoupons.FirstOrDefault(m => m.Id == couponId);
-                                                            if(coupon != null)
+                                                            if(coupon != null && pacccount.LeaderReserve >= 400 * pro.ProductCount)
                                                             {
                                                                 coupon.LeaderUserId = puser.Id;
                                                             }
@@ -382,35 +390,39 @@ namespace MySystem
                                     {
                                         //寻找最近储蓄金充足的大盟主及最近运营中心额度大于0的运营中心(含自身)
                                         int PUserId = user.Id;
-                                        bool LeaderFlag = true;
+                                        int LeaderFlag = 0;
                                         bool OperateFlag = true;
                                         while(PUserId > 0)
                                         {
                                             Users puser = db.Users.FirstOrDefault(m => m.Id == PUserId);
                                             if(puser != null)
                                             {
-                                                if(puser.LeaderLevel == 2 && LeaderFlag == true) //大盟主
+                                                if(puser.LeaderLevel > 0 && puser.LeaderLevel > LeaderFlag && LeaderFlag < 2) //大盟主
                                                 {
                                                     if(couponIds.Count > 0)
                                                     {
-                                                        foreach(int couponId in couponIds)
+                                                        if(puser.LeaderLevel == 2)
                                                         {
-                                                            PosCoupons coupon = db.PosCoupons.FirstOrDefault(m => m.Id == couponId);
-                                                            if(coupon != null)
+                                                            UserAccount pacccount = db.UserAccount.FirstOrDefault(m => m.Id == puser.Id) ?? new UserAccount();
+                                                            foreach(int couponId in couponIds)
                                                             {
-                                                                coupon.LeaderUserId = puser.Id;
+                                                                PosCoupons coupon = db.PosCoupons.FirstOrDefault(m => m.Id == couponId);
+                                                                if(coupon != null && pacccount.LeaderReserve >= 400 * pro.ProductCount)
+                                                                {
+                                                                    coupon.LeaderUserId = puser.Id;
+                                                                }
                                                             }
+                                                            db.SaveChanges();
                                                         }
-                                                        db.SaveChanges();
-                                                        UserAccount acccount = db.UserAccount.FirstOrDefault(m => m.Id == order.UserId) ?? new UserAccount();
+                                                        UserAccount acccount = db.UserAccount.FirstOrDefault(m => m.Id == puser.Id) ?? new UserAccount();
                                                         if(acccount.LeaderReserve >= 400 * pro.ProductCount)
                                                         {
                                                             //扣减备用金
-                                                            OpReserve(db, order, order.UserId, 400 * pro.ProductCount, 2, 0, "商城购机");
+                                                            OpReserve(db, order, puser.Id, 400 * pro.ProductCount, 2, 0, "商城购机");
                                                             //返回到余额
-                                                            OpLeaderAccount(db, order, order.UserId, 400, pro.ProductCount);
+                                                            OpLeaderAccount(db, order, puser.Id, 400, pro.ProductCount);
+                                                            LeaderFlag = puser.LeaderLevel;
                                                         }
-                                                        LeaderFlag = false;
                                                     }
                                                 }
                                                 if(puser.UserType == 1 && OperateFlag == true) //运营中心
@@ -500,7 +512,7 @@ namespace MySystem
                                             OpAccount(db, order, puser.Id, 100, pro.ProductCount);
                                             buyPrize = true;
                                         }
-                                        if(acccount.LeaderReserve >= 400 * pro.ProductCount && leaderFlag == 0)
+                                        if(acccount.LeaderReserve >= 400 * pro.ProductCount && puser.LeaderLevel > leaderFlag && leaderFlag < 2)
                                         {
                                             //扣减备用金
                                             OpReserve(db, order, puser.Id, 400 * pro.ProductCount, 2, order.UserId, "购机奖励");
@@ -611,15 +623,16 @@ namespace MySystem
                             {
                                 OpReserve(db, order, LeaderUserId, order.TotalPrice, 2, 0, "推荐小盟主");
                                 OpLeaderAccount(db, order, LeaderUserId, order.TotalPrice);
+                                LeaderUserId = 0;
                             }
                             else
                             {
-                                decimal LeaderReserve = account.LeaderReserve;
-                                OpReserve(db, order, LeaderUserId, LeaderReserve, 2, 0, "推荐小盟主");
-                                OpLeaderAccount(db, order, LeaderUserId, LeaderReserve);
+                                LeaderUserId = user.ParentUserId;
+                                // decimal LeaderReserve = account.LeaderReserve;
+                                // OpReserve(db, order, LeaderUserId, LeaderReserve, 2, 0, "推荐小盟主");
+                                // OpLeaderAccount(db, order, LeaderUserId, LeaderReserve);
                             }
                         }
-                        LeaderUserId = 0;
                     }
                     else
                     {
@@ -895,7 +908,15 @@ namespace MySystem
             }
             db.Dispose();
         }
-        public void OperateAmountChange(OpModels.WebCMSEntities db, int UserId, decimal Money, int OperateType, int AmountType, string Remark = "")
+        public void ActReserveBack(int UserId, decimal OpReserve1, decimal OpReserve2, decimal OpReserve3)
+        {
+            OpModels.WebCMSEntities db = new OpModels.WebCMSEntities();
+            if(OpReserve1 > 0) OperateAmountChange(db, UserId, OpReserve1, 1, 1, "机具激活", true);
+            if(OpReserve2 > 0) OperateAmountChange(db, UserId, OpReserve1, 1, 2, "机具激活", true);
+            if(OpReserve3 > 0) OperateAmountChange(db, UserId, OpReserve1, 1, 3, "机具激活", true);
+            db.Dispose();
+        }
+        public void OperateAmountChange(OpModels.WebCMSEntities db, int UserId, decimal Money, int OperateType, int AmountType, string Remark = "", bool record = false)
         {
             OpModels.UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId);
             if (account == null)
@@ -951,18 +972,21 @@ namespace MySystem
                     AfterAmount = account.ValidAmount;
                 }
             }
-            OpModels.AmountRecord add = db.AmountRecord.Add(new OpModels.AmountRecord()
+            if(record)
             {
-                CreateDate = DateTime.Now,
-                UpdateDate = DateTime.Now,
-                OperateType = OperateType,
-                AfterAmount = AfterAmount,
-                BeforeAmount = BeforeAmount,
-                UseAmount = Money,
-                UserId = UserId,
-                SeoDescription = Remark,
-                Version = AmountType,
-            }).Entity;
+                OpModels.AmountRecord add = db.AmountRecord.Add(new OpModels.AmountRecord()
+                {
+                    CreateDate = DateTime.Now,
+                    UpdateDate = DateTime.Now,
+                    OperateType = OperateType,
+                    AfterAmount = AfterAmount,
+                    BeforeAmount = BeforeAmount,
+                    UseAmount = Money,
+                    UserId = UserId,
+                    SeoDescription = Remark,
+                    Version = AmountType,
+                }).Entity;
+            }
             db.SaveChanges();
         }
 

+ 1 - 1
AppStart/Helper/Operate/OperateStockService.cs

@@ -30,7 +30,7 @@ namespace MySystem
                 {
                     string sql = "";
                     string conn = Library.ConfigurationManager.AppSettings["Pxc1SqlConnStr"].ToString();
-                    DataTable dt = CustomerSqlConn.dtable("select UserId,sum(LaveNum) from StoreHouse where `Status`>-1 group by UserId", conn);
+                    DataTable dt = CustomerSqlConn.dtable("select UserId,sum(LaveNum)+(select count(Id) from PreSendStockDetail where FromUserId=s.UserId and `Status`>=0 and `Status`<=1 and ApplyFlag=0) from StoreHouse s where `Status`>-1 group by UserId", conn);
                     foreach(DataRow dr in dt.Rows)
                     {
                         sql += "update Users set StoreStock=" + dr[1].ToString() + " where Id=" + dr["UserId"].ToString() + ";";

+ 0 - 1
AppStart/Helper/SetDepositPostService.cs

@@ -125,7 +125,6 @@ namespace MySystem
                                         // 大POS
                                         // 大POS标准0.6:713806109336940544 
                                         // 大POS优惠0.6:713806774515802112 
-                                        // S0大pos不加:698228081038991360
 
                                         // 电签POS
                                         // 电签标准0.6:712391426860134400 

+ 2 - 15
AppStart/Helper/SycnSpServer/SycnSpTradeService.cs

@@ -279,12 +279,6 @@ namespace MySystem
                                                 string SendData = "{\"Kind\":\"3\",\"Data\":{\"UserId\":\"" + pos.BuyUserId + "\",\"PosId\":\"" + pos.Id + "\",\"TradeMonth\":\"" + DateTime.Now.ToString("yyyyMM") + "\"}}";
                                                 RedisDbconn.Instance.AddList("RecommendActStatQueue", SendData);
 
-                                                // 激活返还运营中心额度
-                                                decimal OperateAmount = 200;
-                                                if(pos.BrandId == 3 || pos.BrandId == 5 || pos.BrandId == 9) OperateAmount = 300;
-                                                string OperateData = "{\"UserId\":\"" + pos.OpId + "\",\"DataId\":\"" + pos.Id + "\",\"Kind\":\"1\",\"Amount\":\"" + OperateAmount + "\"}";
-                                                RedisDbconn.Instance.AddList("OperateAmountQueue", OperateData);
-
                                                 //发放开机奖励
                                                 RedisDbconn.Instance.AddList("OpenRewardQueue", pos.Id.ToString());
                                             }
@@ -293,18 +287,11 @@ namespace MySystem
                                             {
                                                 RedisDbconn.Instance.AddList("LeaderPrizeQueue", pos.Id);
                                             }
-                                            //发放运营中奖励
+                                            //发放运营中奖励
                                             if(pos.OpId > 0)
                                             {
                                                 RedisDbconn.Instance.AddList("OperatePrizeQueue", pos.Id);
-                                                if(pos.BrandId == 3 || pos.BrandId == 5 || pos.BrandId == 9)
-                                                {
-                                                    AlipayPayBack2Service.Instance.OperateReserveBack(pos.OpId, 150);
-                                                }
-                                                else
-                                                {
-                                                    AlipayPayBack2Service.Instance.OperateReserveBack(pos.OpId, 100);
-                                                }
+                                                AlipayPayBack2Service.Instance.ActReserveBack(pos.OpId, pos.OpReserve1, pos.OpReserve2, pos.OpReserve3);
                                             }
                                         }
                                         // 立刷60天内刷满10000,再返40

+ 20 - 3
Controllers/HomeController.cs

@@ -1244,7 +1244,8 @@ namespace MySystem.Controllers
             // {
             //     content += SetDepositPostService.Instance.ModifyFee(snno, 0.0006M) + "\n";
             // }
-            content = SetDepositPostService.Instance.SetFeeForSft("38888910", "0.63");
+            // content = SetDepositPostService.Instance.SetFeeForSft("38888910", "0.63");
+            // content = SetDepositPostService.Instance.SetFeeForBrand("00003202D9625450004213", bzConfigId, yhConfigId, surfeeConfigId, "");
             return content;
         }
 
@@ -1263,11 +1264,27 @@ namespace MySystem.Controllers
         }
     
 
-        public string test3()
+        public string test3(string sn)
         {
             WebCMSEntities db = new WebCMSEntities();
             // StoreApplyHelper.Instance.DoSomething(db, 89);
-            AlipayPayBack2Service.Instance.DoOrderV2(db, 94525);
+            // AlipayPayBack2Service.Instance.DoOrderV2(db, 94559);
+            PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == sn);
+            if(pos != null)
+            {
+                //发放大盟主奖励
+                if(pos.LeaderUserId > 0)
+                {
+                    RedisDbconn.Instance.AddList("LeaderPrizeQueue", pos.Id);
+                }
+                //发放运营中心奖励
+                if(pos.OpId > 0)
+                {
+                    RedisDbconn.Instance.AddList("OperatePrizeQueue", pos.Id);
+                    AlipayPayBack2Service.Instance.ActReserveBack(pos.OpId, pos.OpReserve1, pos.OpReserve2, pos.OpReserve3);
+                }
+            }
+            db.Dispose();
             return "ok";
         }
     }

+ 3 - 1
Models/PosMachinesTwo.cs

@@ -53,6 +53,8 @@ namespace MySystem.Models
         public ulong DownFeeFlag { get; set; }
         public ulong UpFeeFlag { get; set; }
         public int OpId { get; set; }
-        public int OpReserveKind { get; set; }
+        public decimal OpReserve3 { get; set; }
+        public decimal OpReserve2 { get; set; }
+        public decimal OpReserve1 { get; set; }
     }
 }

+ 5 - 1
Models/WebCMSEntities.cs

@@ -8611,7 +8611,11 @@ namespace MySystem.Models
 
                 entity.Property(e => e.OpId).HasColumnType("int(11)");
 
-                entity.Property(e => e.OpReserveKind).HasColumnType("int(11)");
+                entity.Property(e => e.OpReserve1).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.OpReserve2).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.OpReserve3).HasColumnType("decimal(18,2)");
 
                 entity.Property(e => e.OrderId).HasColumnType("int(11)");
 

+ 3 - 1
PxcModels/PosMachinesTwo.cs

@@ -53,6 +53,8 @@ namespace MySystem.PxcModels
         public ulong DownFeeFlag { get; set; }
         public ulong UpFeeFlag { get; set; }
         public int OpId { get; set; }
-        public int OpReserveKind { get; set; }
+        public decimal OpReserve3 { get; set; }
+        public decimal OpReserve2 { get; set; }
+        public decimal OpReserve1 { get; set; }
     }
 }

+ 5 - 1
PxcModels/WebCMSEntities.cs

@@ -8611,7 +8611,11 @@ namespace MySystem.PxcModels
 
                 entity.Property(e => e.OpId).HasColumnType("int(11)");
 
-                entity.Property(e => e.OpReserveKind).HasColumnType("int(11)");
+                entity.Property(e => e.OpReserve1).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.OpReserve2).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.OpReserve3).HasColumnType("decimal(18,2)");
 
                 entity.Property(e => e.OrderId).HasColumnType("int(11)");
 

+ 2 - 2
Startup.cs

@@ -198,8 +198,8 @@ namespace MySystem
             // RedPackageV2Helper.Instance.StartSendPrize(); //红包活动发奖
             BalancePayBackService.Instance.Start(); //余额支付队列
             ReservePayBackService.Instance.Start(); //储备金支付队列
-            // LeaderPrizeService.Instance.Start(); //大盟主奖励发奖
-            // OperatePrizeService.Instance.Start(); //运营中心奖励发奖
+            LeaderPrizeService.Instance.Start(); //大盟主奖励发奖
+            OperatePrizeService.Instance.Start(); //运营中心奖励发奖
             // MessageCenterService.Instance.Start(); // 消息队列
             // RecommendActStatService.Instance.Start(); //推荐王奖励数据统计
             // StoreApplyHelper.Instance.Start(); // 每月1号重置仓库额度