浏览代码

修复激活奖励和开机奖励写入Redis的bug

lichunlei 3 年之前
父节点
当前提交
27ed2da87d

+ 11 - 8
AppStart/Helper/StatService.cs

@@ -27,6 +27,7 @@ namespace MySystem
                     dosomething1(doDate);
                     dosomething11(doDate);
                     dosomething2(doDate);
+                    dosomething4(doDate);
                 }
                 string Msg = "success";
                 jobInfo.Status = Msg == "success" ? 1 : 0;
@@ -158,7 +159,7 @@ namespace MySystem
             var users = db.Users.Select(m => new { m.Id, m.MerchantType }).Where(m => m.MerchantType == 1).ToList();
             foreach (var user in users)
             {
-                int machineCount = db.PosMachinesTwo.Count(m => m.UserId == user.Id && m.ActivationState == 1);
+                int machineCount = db.PosMachinesTwo.Count(m => m.UserId == user.Id && m.PosSnType == 0);
                 if (machineCount >= 3)
                 {
                     Users edit = db.Users.FirstOrDefault(m => m.Id == user.Id);
@@ -258,7 +259,7 @@ namespace MySystem
         public void dosomething3()
         { 
             WebCMSEntities db = new WebCMSEntities();
-            DateTime yesterday = DateTime.Now.AddHours(-1);
+            DateTime yesterday = DateTime.Now.AddHours(-3);
             DateTime today = DateTime.Now;
             List<PosMachinesTwo> posList = db.PosMachinesTwo.Where(m => m.ActivationState == 1 && m.ActivationTime >= yesterday && m.ActivationTime < today && !string.IsNullOrEmpty(m.SeoKeyword)).ToList();
             foreach (PosMachinesTwo pos in posList)
@@ -383,22 +384,23 @@ namespace MySystem
                                 if (!dates.Contains(dateString))
                                 {
                                     RedisDbconn.Instance.AddList("ActiveRewardDay:" + GetUserId + ":" + pos.BrandId, dateString);
-                                    RedisDbconn.Instance.AddNumber("ActiveRewardAmt:" + GetUserId + ":" + pos.BrandId + ":" + dateString, ActPrize);
                                 }
+                                RedisDbconn.Instance.AddNumber("ActiveRewardAmt:" + GetUserId + ":" + pos.BrandId + ":" + dateString, ActPrize);
+
                                 List<string> months = RedisDbconn.Instance.GetList<string>("ActiveRewardMonth:" + GetUserId + ":" + pos.BrandId);
                                 if (!months.Contains(monthString))
                                 {
                                     RedisDbconn.Instance.AddList("ActiveRewardMonth:" + GetUserId + ":" + pos.BrandId, monthString);
-                                    RedisDbconn.Instance.AddNumber("ActiveRewardAmt:" + GetUserId + ":" + pos.BrandId + ":" + monthString, ActPrize);
                                 }
+                                RedisDbconn.Instance.AddNumber("ActiveRewardAmt:" + GetUserId + ":" + pos.BrandId + ":" + monthString, ActPrize);
 
                                 // 激活奖励详情
                                 List<int> actPrizeList = RedisDbconn.Instance.GetList<int>("ActiveRewardDetail:" + GetUserId + ":" + pos.BrandId + ":" + dateString);
                                 if (!actPrizeList.Contains(pos.BindMerchantId))
                                 {
                                     RedisDbconn.Instance.AddList("ActiveRewardDetail:" + GetUserId + ":" + pos.BrandId + ":" + dateString, pos.BindMerchantId);
-                                    RedisDbconn.Instance.AddNumber("ActiveRewardAmt:mer:" + pos.BindMerchantId + ":" + pos.BrandId + ":" + dateString, ActPrize);
                                 }
+                                RedisDbconn.Instance.AddNumber("ActiveRewardAmt:mer:" + pos.BindMerchantId + ":" + pos.BrandId + ":" + dateString, ActPrize);
 
                                 //收支明细
                                 RedisDbconn.Instance.AddList("UserAccountRecord:" + GetUserId + ":1:" + monthString, userAccountRecord);
@@ -449,7 +451,7 @@ namespace MySystem
                                         Users puser = db.Users.FirstOrDefault(m => m.Id == UserId && m.AuthFlag == 1);
                                         if (puser != null && Prize > 0)
                                         {
-                                            int machineCount = db.PosMachinesTwo.Count(m => m.UserId == puser.Id && m.PosSnType == 0 && m.ActivationState == 1); //判断是否拥有3台激活机
+                                            int machineCount = db.PosMachinesTwo.Count(m => m.UserId == puser.Id && m.PosSnType == 0); //判断是否拥有3台激活机
                                             if (machineCount >= 3)
                                             {
                                                 int pTopUserId = 0;
@@ -557,14 +559,15 @@ namespace MySystem
                                                 if (!dates.Contains(dateString))
                                                 {
                                                     RedisDbconn.Instance.AddList("OpenRewardDay:" + puser.Id + ":" + pos.BrandId, dateString);
-                                                    RedisDbconn.Instance.AddNumber("OpenRewardAmt:" + puser.Id + ":" + pos.BrandId + ":" + dateString, Prize);
                                                 }
+                                                RedisDbconn.Instance.AddNumber("OpenRewardAmt:" + puser.Id + ":" + pos.BrandId + ":" + dateString, Prize);
+
                                                 List<string> months = RedisDbconn.Instance.GetList<string>("OpenRewardMonth:" + puser.Id + ":" + pos.BrandId);
                                                 if (!months.Contains(monthString))
                                                 {
                                                     RedisDbconn.Instance.AddList("OpenRewardMonth:" + puser.Id + ":" + pos.BrandId, monthString);
-                                                    RedisDbconn.Instance.AddNumber("OpenRewardAmt:" + puser.Id + ":" + pos.BrandId + ":" + monthString, Prize);
                                                 }
+                                                RedisDbconn.Instance.AddNumber("OpenRewardAmt:" + puser.Id + ":" + pos.BrandId + ":" + monthString, Prize);
 
                                                 // 开机奖励详情
                                                 RedisDbconn.Instance.AddList("OpenRewardDetail:" + puser.Id + ":" + pos.BrandId + ":" + dateString, detail);

+ 14 - 5
AppStart/Helper/SycnSpServer/SycnSpActiveService.cs

@@ -13,20 +13,29 @@ namespace MySystem
         private SycnSpActiveService()
         { }
 
-        public void Start()
+        public void Start(int Id = 0)
         {
             WebCMSEntities spdb = new WebCMSEntities();
             PxcModels.WebCMSEntities db = new PxcModels.WebCMSEntities();
             string Month = DateTime.Now.ToString("yyyyMM");
             string Date = DateTime.Now.ToString("yyyyMMdd");
-            DateTime start = DateTime.Now.AddDays(-2);
-            List<ActivateRecord> acts = spdb.ActivateRecord.Where(m => m.ActivateDate >= start && m.Status == 1).OrderByDescending(m => m.Id).ToList();
-            foreach (ActivateRecord act in acts)
+            DateTime start = DateTime.Now.AddDays(-5);
+            IQueryable<ActivateRecord> acts = spdb.ActivateRecord;
+            if (Id > 0)
+            {
+                acts = acts.Where(m => m.Id == Id && m.Status == 1);
+            }
+            else
+            { 
+                acts = acts.Where(m => m.ActivateDate >= start && m.Status == 1);
+            }
+            acts = acts.OrderByDescending(m => m.Id);
+            foreach (ActivateRecord act in acts.ToList())
             {
                 if (act.ActivateStatus == "00")
                 {
                     PxcModels.MachineForMerNo posFor = db.MachineForMerNo.FirstOrDefault(m => m.MerNo == act.MerNo) ?? new PxcModels.MachineForMerNo();
-                    PxcModels.PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == posFor.SnId && m.ActivationState == 0);
+                    PxcModels.PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == posFor.SnId);
                     if (pos != null)
                     {
                         // pos.ActivationState = 1;

+ 91 - 65
AppStart/Helper/SycnSpServer/SycnSpTradeService.cs

@@ -13,87 +13,113 @@ namespace MySystem
         private SycnSpTradeService()
         { }
 
-        public void Start()
+        public void Start(int Id = 0)
         {
             WebCMSEntities spdb = new WebCMSEntities();
             PxcModels.WebCMSEntities db = new PxcModels.WebCMSEntities();
-            DateTime start = DateTime.Now.AddDays(-2);
-            List<TradeRecord> trades = spdb.TradeRecord.Where(m => m.CreateDate >= start && m.Status == 1).OrderByDescending(m => m.Id).ToList();
-            foreach (TradeRecord trade in trades)
+            DateTime start = DateTime.Now.AddDays(-5);
+            IQueryable<TradeRecord> trades = spdb.TradeRecord;
+            if (Id > 0)
             {
-                PxcModels.MachineForMerNo posFor = db.MachineForMerNo.FirstOrDefault(m => m.MerNo == trade.MerNo) ?? new PxcModels.MachineForMerNo();
-                PxcModels.PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == posFor.SnId);
-                if (pos != null)
+                trades = trades.Where(m => m.Id == Id && m.Status == 1);
+            }
+            else
+            { 
+                trades = trades.Where(m => m.CreateDate >= start && m.Status == 1);
+            }
+            trades = trades.OrderByDescending(m => m.Id);
+            foreach (TradeRecord trade in trades.ToList())
+            {
+                bool op = true;
+                if (trade.SerEntryMode == "N")
                 {
-                    if (pos.BindMerchantId > 0)
+                    if (trade.TradeAmount == 9900 || trade.TradeAmount == 19900 || trade.TradeAmount == 29900)
                     {
-                        PxcModels.Users user = db.Users.FirstOrDefault(m => m.Id == pos.UserId) ?? new PxcModels.Users();
-                        int TopUserId = 0;
-                        if (!string.IsNullOrEmpty(user.ParentNav))
+                        op = false;
+                        TradeRecord edit = spdb.TradeRecord.FirstOrDefault(m => m.Id == trade.Id);
+                        if (edit != null)
                         {
-                            TopUserId = int.Parse(user.ParentNav.Trim(',').Replace(",,", ",").Split(',')[0]);
+                            edit.Status = 2;
                         }
-                        bool check = db.TradeRecord.Any(m => m.RecordNo == trade.TradeSerialNo);
-                        if (!check)
+                        spdb.SaveChanges();
+                    }
+                }
+                if (op)
+                {
+                    PxcModels.MachineForMerNo posFor = db.MachineForMerNo.FirstOrDefault(m => m.MerNo == trade.MerNo) ?? new PxcModels.MachineForMerNo();
+                    PxcModels.PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == posFor.SnId);
+                    if (pos != null)
+                    {
+                        if (pos.BindMerchantId > 0)
                         {
-                            decimal TradeAmount = trade.TradeAmount / 100;
-                            int BankCardType = int.Parse(trade.BankCardType);
-                            db.TradeRecord.Add(new PxcModels.TradeRecord()
-                            {
-                                CreateDate = trade.CreateDate,
-                                UpdateDate = trade.UpdateDate,
-                                RecordNo = trade.TradeSerialNo, //单号
-                                UserId = pos.UserId, //创客
-                                MerchantId = pos.BindMerchantId, //商户
-                                MerNo = trade.MerNo, //渠道商户编号
-                                MerHelpFlag = 0, //是否属于扶持周期内商户
-                                HelpMonthCount = 0, //扶持第几个月
-                                MerBuddyType = user.MerchantType, //商户创客类型
-                                SnNo = trade.TradeSnNo, //渠道SN号
-                                                        // TradeDate = DateTime.Parse(trade.TradeTime), //交易日期
-                                TradeSerialNo = trade.ChannelSerial, //交易流水号
-                                TradeAmount = TradeAmount, //交易金额
-                                BankCardType = BankCardType, //银行卡类型
-                                QrPayFlag = trade.TradeType == "02" ? 1 : 0, //云闪付标识
-                                BrandId = int.Parse(trade.ProductType), //品牌
-                                Remark = trade.Remark, //备注
-                                TopUserId = TopUserId, //顶级创客
-                                MerUserId = pos.UserId, //商户直属创客
-                            });
-                            if (BankCardType == 1)
-                            {
-                                pos.CreditTrade += TradeAmount;
-                            }
-                            else if (BankCardType == 0)
-                            { 
-                                pos.DebitCardTrade += TradeAmount;
-                            }
-                            if (pos.CreditTrade < 1000)
+                            PxcModels.Users user = db.Users.FirstOrDefault(m => m.Id == pos.UserId) ?? new PxcModels.Users();
+                            int TopUserId = 0;
+                            if (!string.IsNullOrEmpty(user.ParentNav))
                             {
-                                pos.IsPurchase = 99;
+                                TopUserId = int.Parse(user.ParentNav.Trim(',').Replace(",,", ",").Split(',')[0]);
                             }
-                            else if(pos.CreditTrade >= 1000 && pos.ActivationState == 0 && pos.TransferTime > DateTime.Now.AddDays(-20))
+                            bool check = db.TradeRecord.Any(m => m.RecordNo == trade.TradeSerialNo);
+                            if (!check)
                             {
-                                pos.IsPurchase = 0;
-                                pos.ActivationState = 1;
-                                pos.ActivationTime = DateTime.Now;
-                                PxcModels.PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId);
-                                if (merchant != null)
+                                decimal TradeAmount = trade.TradeAmount / 100;
+                                int BankCardType = int.Parse(trade.BankCardType);
+                                db.TradeRecord.Add(new PxcModels.TradeRecord()
                                 {
-                                    merchant.ActiveStatus = 1;
-                                    merchant.MerStandardDate = DateTime.Now;
-                                    db.SaveChanges();
-                                    RedisDbconn.Instance.Set("PosMerchantInfo:" + merchant.Id, merchant);
+                                    CreateDate = trade.CreateDate,
+                                    UpdateDate = trade.UpdateDate,
+                                    RecordNo = trade.TradeSerialNo, //单号
+                                    UserId = pos.UserId, //创客
+                                    MerchantId = pos.BindMerchantId, //商户
+                                    MerNo = trade.MerNo, //渠道商户编号
+                                    MerHelpFlag = 0, //是否属于扶持周期内商户
+                                    HelpMonthCount = 0, //扶持第几个月
+                                    MerBuddyType = user.MerchantType, //商户创客类型
+                                    SnNo = trade.TradeSnNo, //渠道SN号
+                                    // TradeDate = DateTime.Parse(trade.TradeTime), //交易日期
+                                    TradeSerialNo = trade.ChannelSerial, //交易流水号
+                                    TradeAmount = TradeAmount, //交易金额
+                                    BankCardType = BankCardType, //银行卡类型
+                                    QrPayFlag = trade.TradeType == "02" ? 1 : 0, //云闪付标识
+                                    BrandId = int.Parse(trade.ProductType), //品牌
+                                    Remark = trade.Remark, //备注
+                                    TopUserId = TopUserId, //顶级创客
+                                    MerUserId = pos.UserId, //商户直属创客
+                                });
+                                if (BankCardType == 1)
+                                {
+                                    pos.CreditTrade += TradeAmount;
+                                }
+                                else if (BankCardType == 0)
+                                {
+                                    pos.DebitCardTrade += TradeAmount;
+                                }
+                                if (pos.CreditTrade < 1000)
+                                {
+                                    pos.IsPurchase = 99;
+                                }
+                                else if (pos.CreditTrade >= 1000 && pos.ActivationState == 0 && pos.TransferTime > DateTime.Now.AddDays(-20))
+                                {
+                                    pos.IsPurchase = 0;
+                                    pos.ActivationState = 1;
+                                    pos.ActivationTime = DateTime.Now;
+                                    PxcModels.PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId);
+                                    if (merchant != null)
+                                    {
+                                        merchant.ActiveStatus = 1;
+                                        merchant.MerStandardDate = DateTime.Now;
+                                        db.SaveChanges();
+                                        RedisDbconn.Instance.Set("PosMerchantInfo:" + merchant.Id, merchant);
+                                    }
                                 }
+                                db.SaveChanges();
                             }
-                            db.SaveChanges();
-                        }
-                        TradeRecord edit = spdb.TradeRecord.FirstOrDefault(m => m.Id == trade.Id);
-                        if (edit != null)
-                        {
-                            edit.Status = 2;
+                            TradeRecord edit = spdb.TradeRecord.FirstOrDefault(m => m.Id == trade.Id);
+                            if (edit != null)
+                            {
+                                edit.Status = 2;
+                            }
+                            spdb.SaveChanges();
                         }
-                        spdb.SaveChanges();
                     }
                 }
             }

+ 13 - 6
Controllers/HomeController.cs

@@ -138,13 +138,20 @@ namespace MySystem.Controllers
         }
 
 
-        public string test()
+        public string chkact(int Id = 0)
         {
-            // RedisDbconn.Instance.Clear("UserAccountRecord*");
-            // RedisDbconn.Instance.Clear("ActiveReward*");
-            // RedisDbconn.Instance.Clear("OpenReward*");
-            // StatService.Instance.dosomething3("2022-03-15");
-            // StatService.Instance.dosomething4("2022-03-15");
+            if (Id > 0)
+            {
+                SycnSpActiveService.Instance.Start(Id);
+            }
+            return "ok";
+        }
+        public string chktrade(int Id = 0)
+        {
+            if (Id > 0)
+            {
+                SycnSpTradeService.Instance.Start(Id);
+            }
             return "ok";
         }
     }

二进制
bin/Debug/netcoreapp3.0/MySystem.dll


二进制
bin/Debug/netcoreapp3.0/MySystem.pdb


二进制
bin/release/netcoreapp3.0/MySystem.dll


二进制
bin/release/netcoreapp3.0/MySystem.pdb


二进制
obj/Debug/netcoreapp3.0/MySystem.dll


二进制
obj/Debug/netcoreapp3.0/MySystem.pdb


二进制
obj/release/netcoreapp3.0/MySystem.dll


二进制
obj/release/netcoreapp3.0/MySystem.pdb