Преглед на файлове

开机奖励逻辑调整

lcl преди 7 месеца
родител
ревизия
e347dd88b4

BIN
AppStart/.DS_Store


BIN
AppStart/Helper/.DS_Store


+ 23 - 0
AppStart/Helper/AlipayPayBack2Service.cs

@@ -205,6 +205,7 @@ namespace MySystem
                                 {
                                     item.CreateDate = DateTime.Now;
                                     item.UserId = order.UserId;
+                                    item.OpenPrizeUserId = NearLeaderUserId(db, order);
                                     item.Sort = 1;
                                     item.UpdateDate = DateTime.Now.AddDays(180);
                                     if(pro.ProductId == 34 || pro.ProductId == -2)
@@ -1018,5 +1019,27 @@ namespace MySystem
 
         #endregion
 
+
+        #region 查找最近一层盟主
+
+        public int NearLeaderUserId(WebCMSEntities db, Orders order)
+        {
+            int UserId = 0;
+            UserRankItem orderUser = PosCouponPrizeService.Instance.GetUserLevel(order.UserId);
+            string ParentNav = orderUser.ParentNav + "," + orderUser.Id + ",";
+            string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(',');
+            foreach(string ParentId in ParentNavList)
+            {
+                UserRankItem parentUser = PosCouponPrizeService.Instance.GetUserLevel(int.Parse(ParentId));
+                if(parentUser.LeaderLevel > 0 || parentUser.OperateLevel > 0)
+                {
+                    if(UserId == 0) UserId = parentUser.Id;
+                }
+            }
+            return UserId;
+        }
+
+        #endregion
+
     }
 }

+ 61 - 32
AppStart/Helper/StatService.cs

@@ -1284,48 +1284,77 @@ namespace MySystem
                                                         Prize = trade.TradeAmount * 0.03M;
                                                     }                                                    
                                                 }
-                                                string[] ParentNavs = ParentNav.Trim(',').Replace(",,", ",").Split(',');
-                                                for (int i = ParentNavs.Length - 1; i >= 0; i--)
+                                                List<int> CheckUserIds = RedisDbconn.Instance.GetList<int>("OpenPrizeUserIds", 1, 1000);
+                                                if(CheckUserIds.Count > 0)
                                                 {
-                                                    int UserId = int.Parse(ParentNavs[i]);
-                                                    // Users puser = db.Users.FirstOrDefault(m => m.Id == UserId && m.AuthFlag == 1 && m.Status > -1);
-                                                    UserRankItem puser = PosCouponPrizeService.Instance.GetUserLevel(UserId);
-                                                    if (puser.Id > 0 && Prize > 0)
+                                                    PosMachines posItem = db.PosMachines.FirstOrDefault(m => m.Id == pos.Id) ?? new PosMachines();
+                                                    if(posItem.UserId > 0)
                                                     {
-                                                        function.WriteLog("上级:" + puser.MakerCode, "开机奖励发放日志");
-                                                        function.WriteLog("条件:LeaderLevel:" + puser.LeaderLevel + ",UserType:" + puser.UserType, "开机奖励发放日志");
-                                                        if(puser.UserType > 0 || puser.LeaderLevel > 0)
+                                                        UserRankItem puser = PosCouponPrizeService.Instance.GetUserLevel(posItem.UserId);
+                                                        if (puser.Id > 0 && Prize > 0)
                                                         {
-                                                            bool leaderOp = true;
-                                                            if(puser.LeaderLevel > 0 && puser.UserType == 0)
+                                                            bool op = false;
+                                                            foreach(int CheckUserId in CheckUserIds)
                                                             {
-                                                                DateTime now = DateTime.Now;
-                                                                leaderOp = db.Leaders.Any(m => m.Id == puser.Id && m.ExpiredDate >= now);
-                                                                function.WriteLog("条件:leaderOp:" + leaderOp, "开机奖励发放日志");
-                                                            }
-                                                            else if(puser.LeaderLevel == 0 && puser.UserType > 0)
-                                                            {
-                                                                DateTime now = DateTime.Now;
-                                                                leaderOp = opdb.SysAdmin.Any(m => m.UserId == puser.Id && m.ExpireDate >= now);
-                                                                function.WriteLog("条件:2-leaderOp:" + leaderOp, "盟主开机奖励发放日志");
+                                                                if(puser.ParentNav.Contains("," + CheckUserId + ","))
+                                                                {
+                                                                    op = true;
+                                                                    break;
+                                                                }
                                                             }
-                                                            else if(puser.LeaderLevel > 0 && puser.UserType > 0)
+                                                            if(op)
                                                             {
-                                                                DateTime now = DateTime.Now;
-                                                                leaderOp = db.Leaders.Any(m => m.Id == puser.Id && m.ExpiredDate >= now);
-                                                                if(!leaderOp) leaderOp = opdb.SysAdmin.Any(m => m.UserId == puser.Id && m.ExpireDate >= now);
+                                                                PostOpenReward(db, pos, merchant, puser, Prize);
+                                                                Prize = 0;
                                                             }
-                                                            if(leaderOp)
+                                                        }
+                                                    }
+                                                }
+                                                if(Prize > 0)
+                                                {
+                                                    string[] ParentNavs = ParentNav.Trim(',').Replace(",,", ",").Split(',');
+                                                    for (int i = ParentNavs.Length - 1; i >= 0; i--)
+                                                    {
+                                                        int UserId = int.Parse(ParentNavs[i]);
+                                                        // Users puser = db.Users.FirstOrDefault(m => m.Id == UserId && m.AuthFlag == 1 && m.Status > -1);
+                                                        UserRankItem puser = PosCouponPrizeService.Instance.GetUserLevel(UserId);
+                                                        if (puser.Id > 0 && Prize > 0)
+                                                        {
+                                                            function.WriteLog("上级:" + puser.MakerCode, "开机奖励发放日志");
+                                                            function.WriteLog("条件:LeaderLevel:" + puser.LeaderLevel + ",UserType:" + puser.UserType, "开机奖励发放日志");
+                                                            if(puser.UserType > 0 || puser.LeaderLevel > 0)
                                                             {
-                                                                function.WriteLog("满足条件", "开机奖励发放日志");
-                                                                int pTopUserId = 0;
-                                                                if (!string.IsNullOrEmpty(puser.ParentNav))
+                                                                bool leaderOp = true;
+                                                                if(puser.LeaderLevel > 0 && puser.UserType == 0)
                                                                 {
-                                                                    pTopUserId = int.Parse(puser.ParentNav.Trim(',').Replace(",,", ",").Split(',')[0]);
+                                                                    DateTime now = DateTime.Now;
+                                                                    leaderOp = db.Leaders.Any(m => m.Id == puser.Id && m.ExpiredDate >= now);
+                                                                    function.WriteLog("条件:leaderOp:" + leaderOp, "开机奖励发放日志");
+                                                                }
+                                                                else if(puser.LeaderLevel == 0 && puser.UserType > 0)
+                                                                {
+                                                                    DateTime now = DateTime.Now;
+                                                                    leaderOp = opdb.SysAdmin.Any(m => m.UserId == puser.Id && m.ExpireDate >= now);
+                                                                    function.WriteLog("条件:2-leaderOp:" + leaderOp, "盟主开机奖励发放日志");
+                                                                }
+                                                                else if(puser.LeaderLevel > 0 && puser.UserType > 0)
+                                                                {
+                                                                    DateTime now = DateTime.Now;
+                                                                    leaderOp = db.Leaders.Any(m => m.Id == puser.Id && m.ExpiredDate >= now);
+                                                                    if(!leaderOp) leaderOp = opdb.SysAdmin.Any(m => m.UserId == puser.Id && m.ExpireDate >= now);
+                                                                }
+                                                                if(leaderOp)
+                                                                {
+                                                                    function.WriteLog("满足条件", "开机奖励发放日志");
+                                                                    int pTopUserId = 0;
+                                                                    if (!string.IsNullOrEmpty(puser.ParentNav))
+                                                                    {
+                                                                        pTopUserId = int.Parse(puser.ParentNav.Trim(',').Replace(",,", ",").Split(',')[0]);
+                                                                    }
+                                                                    PostOpenReward(db, pos, merchant, puser, Prize);
+                                                                    
+                                                                    Prize = 0;
                                                                 }
-                                                                PostOpenReward(db, pos, merchant, puser, Prize);
-                                                                
-                                                                Prize = 0;
                                                             }
                                                         }
                                                     }

+ 1 - 0
PxcModels/Leaders.cs

@@ -18,5 +18,6 @@ namespace MySystem.PxcModels
         public int UserId { get; set; }
         public DateTime? ExpiredDate { get; set; }
         public DateTime? LastBuyDate { get; set; }
+        public int BusinessFlag { get; set; }
     }
 }

+ 1 - 0
PxcModels/PosCoupons.cs

@@ -25,5 +25,6 @@ namespace MySystem.PxcModels
         public ulong HelpProfitFlag { get; set; }
         public int OpId { get; set; }
         public int OrderId { get; set; }
+        public int OpenPrizeUserId { get; set; }
     }
 }

+ 14 - 0
PxcModels/PosMachineOther.cs

@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem.PxcModels
+{
+    public partial class PosMachineOther
+    {
+        public int Id { get; set; }
+        public string CustomerNo { get; set; }
+        public string LeMerNo { get; set; }
+        public string LeMerNo4 { get; set; }
+        public int LeMerchantId { get; set; }
+    }
+}

+ 40 - 102
PxcModels/WebCMSEntities.cs

@@ -154,6 +154,7 @@ namespace MySystem.PxcModels
         public virtual DbSet<PosCouponRecord> PosCouponRecord { get; set; }
         public virtual DbSet<PosCoupons> PosCoupons { get; set; }
         public virtual DbSet<PosFeeWarningRecord> PosFeeWarningRecord { get; set; }
+        public virtual DbSet<PosMachineOther> PosMachineOther { get; set; }
         public virtual DbSet<PosMachines> PosMachines { get; set; }
         public virtual DbSet<PosMachinesFeeChangeRecord> PosMachinesFeeChangeRecord { get; set; }
         public virtual DbSet<PosMachinesTwo> PosMachinesTwo { get; set; }
@@ -262,7 +263,6 @@ namespace MySystem.PxcModels
         public virtual DbSet<TradeDaySummaryBefore> TradeDaySummaryBefore { get; set; }
         public virtual DbSet<TradeFilterRecord> TradeFilterRecord { get; set; }
         public virtual DbSet<TradeRecord> TradeRecord { get; set; }
-        public virtual DbSet<TradeRecordTest> TradeRecordTest { get; set; }
         public virtual DbSet<UpUserRelation> UpUserRelation { get; set; }
         public virtual DbSet<UploadParams> UploadParams { get; set; }
         public virtual DbSet<UserAccount> UserAccount { get; set; }
@@ -5526,6 +5526,10 @@ namespace MySystem.PxcModels
             {
                 entity.Property(e => e.Id).HasColumnType("int(11)");
 
+                entity.Property(e => e.BusinessFlag)
+                    .HasColumnType("int(11)")
+                    .HasComment("对公标记");
+
                 entity.Property(e => e.CreateDate).HasColumnType("datetime");
 
                 entity.Property(e => e.ExpiredDate).HasColumnType("datetime");
@@ -10370,6 +10374,10 @@ namespace MySystem.PxcModels
 
                 entity.Property(e => e.OpId).HasColumnType("int(11)");
 
+                entity.Property(e => e.OpenPrizeUserId)
+                    .HasColumnType("int(11)")
+                    .HasComment("开机奖励标记");
+
                 entity.Property(e => e.OrderId).HasColumnType("int(11)");
 
                 entity.Property(e => e.QueryCount).HasColumnType("int(11)");
@@ -10488,6 +10496,37 @@ namespace MySystem.PxcModels
                     .HasComment("版本号");
             });
 
+            modelBuilder.Entity<PosMachineOther>(entity =>
+            {
+                entity.HasComment("机具扩展表");
+
+                entity.Property(e => e.Id)
+                    .HasColumnType("int(11)")
+                    .HasComment("机具Id");
+
+                entity.Property(e => e.CustomerNo)
+                    .HasColumnType("varchar(50)")
+                    .HasComment("客户号")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.LeMerNo)
+                    .HasColumnType("varchar(50)")
+                    .HasComment("乐刷商编")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.LeMerNo4)
+                    .HasColumnType("varchar(50)")
+                    .HasComment("四方商编")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.LeMerchantId)
+                    .HasColumnType("int(11)")
+                    .HasComment("商户Id");
+            });
+
             modelBuilder.Entity<PosMachines>(entity =>
             {
                 entity.Property(e => e.Id).HasColumnType("int(11)");
@@ -18438,107 +18477,6 @@ namespace MySystem.PxcModels
                 entity.Property(e => e.VipFlag).HasColumnType("int(11)");
             });
 
-            modelBuilder.Entity<TradeRecordTest>(entity =>
-            {
-                entity.Property(e => e.Id).HasColumnType("int(11)");
-
-                entity.Property(e => e.BankCardType).HasColumnType("int(11)");
-
-                entity.Property(e => e.BrandId).HasColumnType("int(11)");
-
-                entity.Property(e => e.CapFlag).HasColumnType("int(11)");
-
-                entity.Property(e => e.ClearDate).HasColumnType("datetime");
-
-                entity.Property(e => e.CreateDate).HasColumnType("datetime");
-
-                entity.Property(e => e.CreateMan)
-                    .HasColumnType("varchar(50)")
-                    .HasCharSet("utf8")
-                    .HasCollation("utf8_general_ci");
-
-                entity.Property(e => e.DirectFlag)
-                    .HasColumnType("bit(1)")
-                    .HasDefaultValueSql("b'0'");
-
-                entity.Property(e => e.HelpMonthCount).HasColumnType("int(11)");
-
-                entity.Property(e => e.MerBuddyType).HasColumnType("int(11)");
-
-                entity.Property(e => e.MerHelpFlag)
-                    .HasColumnType("bit(1)")
-                    .HasDefaultValueSql("b'0'");
-
-                entity.Property(e => e.MerNo)
-                    .HasColumnType("varchar(32)")
-                    .HasCharSet("utf8")
-                    .HasCollation("utf8_general_ci");
-
-                entity.Property(e => e.MerUserId).HasColumnType("int(11)");
-
-                entity.Property(e => e.MerchantId).HasColumnType("int(11)");
-
-                entity.Property(e => e.QrPayFlag).HasColumnType("int(11)");
-
-                entity.Property(e => e.QueryCount).HasColumnType("int(11)");
-
-                entity.Property(e => e.RecordNo)
-                    .HasColumnType("varchar(100)")
-                    .HasCharSet("utf8")
-                    .HasCollation("utf8_general_ci");
-
-                entity.Property(e => e.Remark)
-                    .HasColumnType("varchar(64)")
-                    .HasCharSet("utf8")
-                    .HasCollation("utf8_general_ci");
-
-                entity.Property(e => e.SeoDescription)
-                    .HasColumnType("varchar(500)")
-                    .HasCharSet("utf8")
-                    .HasCollation("utf8_general_ci");
-
-                entity.Property(e => e.SeoKeyword)
-                    .HasColumnType("varchar(200)")
-                    .HasCharSet("utf8")
-                    .HasCollation("utf8_general_ci");
-
-                entity.Property(e => e.SeoTitle)
-                    .HasColumnType("varchar(100)")
-                    .HasCharSet("utf8")
-                    .HasCollation("utf8_general_ci");
-
-                entity.Property(e => e.SnNo)
-                    .HasColumnType("varchar(32)")
-                    .HasCharSet("utf8")
-                    .HasCollation("utf8_general_ci");
-
-                entity.Property(e => e.Sort).HasColumnType("int(11)");
-
-                entity.Property(e => e.Status).HasColumnType("int(11)");
-
-                entity.Property(e => e.TopUserId).HasColumnType("int(11)");
-
-                entity.Property(e => e.TradeAmount).HasColumnType("decimal(18,2)");
-
-                entity.Property(e => e.TradeDate).HasColumnType("datetime");
-
-                entity.Property(e => e.TradeSerialNo)
-                    .HasColumnType("varchar(48)")
-                    .HasCharSet("utf8")
-                    .HasCollation("utf8_general_ci");
-
-                entity.Property(e => e.UpdateDate).HasColumnType("datetime");
-
-                entity.Property(e => e.UpdateMan)
-                    .HasColumnType("varchar(50)")
-                    .HasCharSet("utf8")
-                    .HasCollation("utf8_general_ci");
-
-                entity.Property(e => e.UserId).HasColumnType("int(11)");
-
-                entity.Property(e => e.Version).HasColumnType("int(11)");
-            });
-
             modelBuilder.Entity<UpUserRelation>(entity =>
             {
                 entity.HasKey(e => new { e.UserId, e.UpUserId })