Forráskód Böngészése

未划拨不发激活奖励

lichunlei 3 éve
szülő
commit
f49691da46

+ 1 - 0
AppStart/Helper/Profit/ActiveService.cs

@@ -65,6 +65,7 @@ namespace MySystem
                         {
                             account = db.UserAccount.Add(new UserAccount()
                             {
+                                Id = sub.UserId,
                                 CreateDate = DateTime.Now,
                                 UserId = sub.UserId,
                                 UserProperty = 0,

+ 1 - 0
AppStart/Helper/Profit/DiviService.cs

@@ -59,6 +59,7 @@ namespace MySystem
                         {
                             account = db.UserAccount.Add(new UserAccount()
                             {
+                                Id = sub.UserId,
                                 CreateDate = DateTime.Now,
                                 UserId = sub.UserId,
                                 UserProperty = 0,

+ 1 - 0
AppStart/Helper/Profit/FluxService.cs

@@ -77,6 +77,7 @@ namespace MySystem
                             {
                                 account = db.UserAccount.Add(new UserAccount()
                                 {
+                                    Id = sub.UserId,
                                     CreateDate = DateTime.Now,
                                     UserId = sub.UserId,
                                     UserProperty = 0,

+ 1 - 0
AppStart/Helper/Profit/OpenService.cs

@@ -65,6 +65,7 @@ namespace MySystem
                         {
                             account = db.UserAccount.Add(new UserAccount()
                             {
+                                Id = sub.UserId,
                                 CreateDate = DateTime.Now,
                                 UserId = sub.UserId,
                                 UserProperty = 0,

+ 17 - 6
AppStart/Helper/Profit/ProfitHelper.cs

@@ -1772,7 +1772,7 @@ namespace MySystem
             }
             function.WritePage("/ProfitStat/", Month + ".txt", DateTime.Now.ToString());
             WebCMSEntities db = new WebCMSEntities();
-            for (int i = 3; i <= 5; i++) //品牌
+            for (int i = 1; i <= 5; i++) //品牌
             {
                 for (int j = 0; j <= 1; j++) //卡类型
                 {
@@ -1815,7 +1815,7 @@ namespace MySystem
                             }
                             MachineForSnNo forSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == sub.PosSn) ?? new MachineForSnNo();
                             PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == forSnNo.SnId) ?? new PosMachinesTwo(); 
-                            PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == sub.MerchantId) ?? new PosMerchantInfo(); 
+                            PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == sub.MerchantId) ?? new PosMerchantInfo();
                             db.ProfitSubsidyDetail.Add(new ProfitSubsidyDetail()
                             {
                                 CreateDate = DateTime.Now,
@@ -2071,14 +2071,23 @@ namespace MySystem
                     ORDER BY p.KqSnNo,u.MakerCode
 
                     //查补贴
-                    select u.MakerCode,u.RealName,u.UserLevel,m.KqSnNo,m.MerchantName,(case when SubsidyType=1 then '直营' else '团队' end) as DirectFlag,
+                    select u.MakerCode,u.RealName,u.UserLevel,r.Rank,m.KqSnNo,m.MerchantName,(case when SubsidyType=1 then '直营' else '团队' end) as DirectFlag,
                     k.Name,CreditTradeAmt,SubsidyProfit from (
                     select SubsidyUserId,MerchantId,BrandId,SubsidyType,
                     sum(CreditTradeAmt) as CreditTradeAmt,
                     sum(SubsidyProfitRate) as SubsidyProfit
                     from ProfitSubsidyDetail 
                     GROUP BY SubsidyUserId,MerchantId,BrandId,SubsidyType
-                    ) tb left join Users u on tb.SubsidyUserId=u.Id LEFT JOIN KqProducts k ON k.Id=tb.BrandId left join PosMerchantInfo m on tb.MerchantId=m.Id
+                    ) tb 
+                    left join Users u on tb.SubsidyUserId=u.Id 
+                    LEFT JOIN KqProducts k ON k.Id=tb.BrandId 
+                    left join PosMerchantInfo m on tb.MerchantId=m.Id 
+                    left join UserRankWhite r on u.Id=r.Id 
+
+                    // TODO:做到后台查询,换绑机器遗漏交易额补差
+                    select UserId,sum(TradeAmount) from TradeRecord where SnNo in (
+                    select PosSn from PosMachinesTwo where UserId=0 and BuyUserId=0 and CreditTrade>0
+                    ) and CreateDate>='2022-04-01 00:00:00' and CreateDate<'2022-05-01 00:00:00' and UserId>0 group by UserId
 
             */
 
@@ -2245,14 +2254,16 @@ namespace MySystem
                                                 //分润补贴
                                                 if (HelpTime == 1 && level == 1)
                                                 {
+                                                    int SubsidyUserId = pos.BuyUserId;
+                                                    Users subuser = dbnew.Users.FirstOrDefault(m => m.Id == SubsidyUserId) ?? new Users();
                                                     decimal otherPercent = 0.001M - objlevel.Percents;
                                                     decimal otherMoney = TradeAmt * otherPercent;
                                                     if (otherMoney >= obj.MinProfitVal)
                                                     {
                                                         result.Add(new ProfitResult()
                                                         {
-                                                            UserId = user.Id,
-                                                            UserNav = user.ParentNav,
+                                                            UserId = subuser.Id,
+                                                            UserNav = subuser.ParentNav,
                                                             Money = PublicFunction.NumberFormat(otherMoney),
                                                             ProfitRate = otherPercent,
                                                             Message = "分润补贴",

+ 1 - 0
AppStart/Helper/Profit/ProfitService.cs

@@ -90,6 +90,7 @@ namespace MySystem
                             {
                                 account = db.UserAccount.Add(new UserAccount()
                                 {
+                                    Id = sub.UserId,
                                     CreateDate = DateTime.Now,
                                     UserId = sub.UserId,
                                     UserProperty = 0,

+ 1 - 0
AppStart/Helper/Profit/StandardService.cs

@@ -73,6 +73,7 @@ namespace MySystem
                         {
                             account = db.UserAccount.Add(new UserAccount()
                             {
+                                Id = user.Id,
                                 CreateDate = DateTime.Now,
                                 UserId = user.Id,
                                 UserProperty = 0,

+ 4 - 1
AppStart/Helper/StatService.cs

@@ -290,7 +290,10 @@ namespace MySystem
                             {
                                 ActPrize = 260;
                             }
-                            doActiveReward(db, merchant, pos, GetUserId, ParentNav, TopUserId, ActPrize);
+                            if (GetUserId > 0)
+                            {
+                                doActiveReward(db, merchant, pos, GetUserId, ParentNav, TopUserId, ActPrize);
+                            }
                         }
                     }
                     // }

+ 131 - 3
Controllers/HomeController.cs

@@ -590,8 +590,8 @@ namespace MySystem.Controllers
                 }).Entity;
                 db.SaveChanges();
             }
-            machineData.BindCount = db.PosMachinesTwo.Count(m => (m.UserId == uid && m.BuyUserId == uid) && m.BrandId == kind && m.BindingState == 1);
-            machineData.UnBindCount = db.PosMachinesTwo.Count(m => (m.UserId == uid && m.BuyUserId == uid) && m.BrandId == kind && m.BindingState == 0);
+            machineData.BindCount = db.PosMachinesTwo.Count(m => m.Status > -1 && m.BuyUserId == uid && m.BrandId == kind && m.BindingState == 1);
+            machineData.UnBindCount = db.PosMachinesTwo.Count(m => m.Status > -1 && m.BuyUserId == uid && m.BrandId == kind && m.BindingState == 0);
             machineData.TotalMachineCount = machineData.BindCount + machineData.UnBindCount;
             db.SaveChanges();
             RedisDbconn.Instance.Set("UserMachineData:" + IdBrand, machineData);
@@ -670,7 +670,135 @@ namespace MySystem.Controllers
         public string test()
         {
             string result = "ok";
-            
+            OtherMySqlConn.connstr = "server=47.109.31.237;port=3306;user=KxsMainServer;password=Rw2imhXQQt5ODWIF;database=KxsMainServer;charset=utf8;";
+            DataTable dt = OtherMySqlConn.dtable("select * from ProfitSubsidyDetail where TradeMonth='202204'");
+            WebCMSEntities db = new WebCMSEntities();
+            foreach (DataRow dr in dt.Rows)
+            {
+                int BrandId = int.Parse(function.CheckInt(dr["BrandId"].ToString()));
+                int MerchantId = int.Parse(function.CheckInt(dr["MerchantId"].ToString()));
+                int SubsidyUserId = int.Parse(function.CheckInt(dr["SubsidyUserId"].ToString()));
+                int SubsidyType = int.Parse(function.CheckInt(dr["SubsidyType"].ToString()));
+                ulong MerHelpFlag = ulong.Parse(function.CheckInt(dr["MerHelpFlag"].ToString()));
+                decimal SubsidyProfitRate = decimal.Parse(function.CheckNum(dr["SubsidyProfitRate"].ToString()));
+                decimal CreditTradeAmt = decimal.Parse(function.CheckNum(dr["CreditTradeAmt"].ToString()));
+                decimal QrCreditTradeAmt = decimal.Parse(function.CheckNum(dr["QrCreditTradeAmt"].ToString()));
+                decimal NonQrCreditTradeAmt = decimal.Parse(function.CheckNum(dr["NonQrCreditTradeAmt"].ToString()));
+                decimal CreditProfitRate = decimal.Parse(function.CheckNum(dr["CreditProfitRate"].ToString()));
+                decimal SubsidyProfit = decimal.Parse(function.CheckNum(dr["SubsidyProfit"].ToString()));
+                string TradeMonth = dr["TradeMonth"].ToString();
+                string SnNo = dr["SnNo"].ToString();
+                string MerNo = dr["MerNo"].ToString();
+                string RecordNo = dr["RecordNo"].ToString();
+                
+                MachineForSnNo forSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == SnNo) ?? new MachineForSnNo();
+                PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == forSnNo.SnId) ?? new PosMachinesTwo(); 
+                PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == MerchantId) ?? new PosMerchantInfo();
+                ProfitSubsidyDetail item = db.ProfitSubsidyDetail.FirstOrDefault(m => m.SubsidyUserId == SubsidyUserId && m.TradeMonth == TradeMonth && m.MerchantId == MerchantId && m.SnNo == SnNo);
+                if (item == null)
+                {
+                    db.ProfitSubsidyDetail.Add(new ProfitSubsidyDetail()
+                    {
+                        CreateDate = DateTime.Now,
+                        UpdateDate = DateTime.Now,
+                        RecordNo = RecordNo, //流水号
+                        BrandId = BrandId, //品牌
+                        ProductName = RelationClass.GetKqProductBrandInfo(BrandId), //产品名称
+                        TradeMonth = TradeMonth, //交易月份
+                        MerchantId = MerchantId, //商户
+                        MerNo = MerNo, //渠道商户编号
+                        SnNo = SnNo, //渠道SN号
+                        MerRegTime = pos.BindingTime, //渠道注册时间
+                        MerStandardDate = merchant.MerStandardDate, //商户激活时间
+                        BelongUserId = merchant.UserId, //商户归属人
+                        MerHelpFlag = MerHelpFlag, //是否属于扶持周期内商户
+                        SubsidyUserId = SubsidyUserId, //补贴人
+                        SubsidyType = SubsidyType, //分润补贴类型
+                        SubsidyProfitRate = SubsidyProfitRate, //创客活动期内直营商户分润万分之十
+                        CreditTradeAmt = CreditTradeAmt, //商户贷记卡交易总金额
+                        QrCreditTradeAmt = QrCreditTradeAmt, //商户(云闪付)贷记卡交易总金额
+                        NonQrCreditTradeAmt = NonQrCreditTradeAmt, //商户(非云闪付)贷记卡交易总金额
+                        CreditProfitRate = CreditProfitRate, //(非云闪付)贷记卡交易分润比例
+                        SubsidyProfit = SubsidyProfit, //商户(非云闪付)贷记卡交易分润补贴金额
+                    });
+                    // db.SaveChanges();
+                    result += "增加--SubsidyUserId:" + SubsidyUserId + ";SnNo" + SnNo + ";SubsidyProfit" + SubsidyProfit + ";";
+                }
+                else
+                {
+                    if (item.SubsidyProfit < SubsidyProfit)
+                    {
+                        item.SubsidyProfitRate = SubsidyProfitRate; //创客活动期内直营商户分润万分之十
+                        item.SubsidyProfit = SubsidyProfit; //商户(非云闪付)贷记卡交易分润补贴金额
+                        result += "更新--SubsidyUserId:" + SubsidyUserId + ";SnNo" + SnNo + ";SubsidyProfit" + SubsidyProfit + ";";
+                        // db.SaveChanges();
+                    }
+                }
+            }
+            OtherMySqlConn.connstr = "";
+            db.Dispose();
+            return result;
+        }
+
+        public string test2()
+        {
+            string result = "ok";
+            OtherMySqlConn.connstr = "server=47.108.231.170;port=3306;user=KxsMainServer;password=Rw2imhXQQt5ODWIF;database=KxsMainServer;charset=utf8;";
+            DataTable dt = OtherMySqlConn.dtable("select SubsidyUserId,BrandId,sum(SubsidyProfitRate) as SubsidyProfit from ProfitSubsidyDetail where TradeMonth='202204' and SubsidyUserId>0 GROUP BY SubsidyUserId,BrandId");
+            WebCMSEntities db = new WebCMSEntities();
+            DateTime checkDate = DateTime.Parse("2022-05-20 00:00:00");
+            foreach (DataRow dr in dt.Rows)
+            {
+                int BrandId = int.Parse(function.CheckInt(dr["BrandId"].ToString()));
+                int SubsidyUserId = int.Parse(function.CheckInt(dr["SubsidyUserId"].ToString()));
+                decimal SubsidyProfit = decimal.Parse(function.CheckNum(dr["SubsidyProfit"].ToString()));
+                UserAccountRecord userAccountRecord = db.UserAccountRecord.FirstOrDefault(m => m.Id > 86538 && m.CreateDate > checkDate && m.UserId == SubsidyUserId && m.ProductType == BrandId && m.ChangeType == 111);
+                if (userAccountRecord == null)
+                {
+                    UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == SubsidyUserId);
+                    if (account == null)
+                    {
+                        account = db.UserAccount.Add(new UserAccount()
+                        {
+                            Id = SubsidyUserId,
+                            UserId = SubsidyUserId,
+                        }).Entity;
+                        db.SaveChanges();
+                    }
+                    decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额
+                    decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额
+                    decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额
+                    // account.BalanceAmount += SubsidyProfit;
+                    // account.TotalAmount += SubsidyProfit;
+                    decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
+                    decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
+                    decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
+                    userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord()
+                    {
+                        CreateDate = DateTime.Now,
+                        UpdateDate = DateTime.Now,
+                        UserId = SubsidyUserId, //创客
+                        ProductType = BrandId,
+                        ChangeType = 111, //变动类型
+                        ChangeAmount = SubsidyProfit, //变更金额
+                        BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
+                        AfterTotalAmount = AfterTotalAmount, //变更后总金额
+                        BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
+                        AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
+                        BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
+                        AfterBalanceAmount = AfterBalanceAmount, //变更后余额
+                        Remark = "直拓商户补贴",
+                    }).Entity;
+                    db.SaveChanges();
+                }
+                else
+                {
+                    userAccountRecord.ChangeAmount = SubsidyProfit;
+                    db.SaveChanges();
+                }
+            }
+            OtherMySqlConn.connstr = "";
+            db.Dispose();
             return result;
         }
     }

+ 12 - 12
Startup.cs

@@ -90,9 +90,9 @@ namespace MySystem
             // services.AddHostedService<PopService>();
             // services.AddHostedService<SycnSpTimer>(); //同步SP数据
             
-            // services.AddHostedService<TimerStatTimer>(); //实时统计创客、激活商户数
-            // services.AddHostedService<PosTradeStatTimer>(); // 统计头天的交易额、商户型创客、激活奖励、开机奖励
-            // services.AddHostedService<AlipayPayBack2Timer>(); //支付宝回调处理
+            services.AddHostedService<TimerStatTimer>(); //实时统计创客、激活商户数
+            services.AddHostedService<PosTradeStatTimer>(); // 统计头天的交易额、商户型创客、激活奖励、开机奖励
+            services.AddHostedService<AlipayPayBack2Timer>(); //支付宝回调处理
 
             //services.AddHttpContextAccessor();
 
@@ -220,20 +220,20 @@ namespace MySystem
             // TradeStatTimer2.Instance.Start(); //交易统计
 
             //必须打开的
-            // ActiveRewardTimer.Instance.Start(); //实时处理激活记录
-            // TradeStatTimer.Instance.Start(); //交易统计
-            // ChangePosTimer.Instance.Start(); //售后换新执行机具数据转移
-            // MakeReferenceQrCodeService.Instance.StartListen(); //生成创客邀请二维码
-            // SycnSpBindService.Instance.Start(); //同步SP绑定数据
-            // SycnSpMerchantService.Instance.Start(); //同步SP商户数据
-            // SycnSpActiveService.Instance.Start(); //同步SP激活数据
-            // SycnSpTradeService.Instance.Start(); //同步SP交易数据
+            ActiveRewardTimer.Instance.Start(); //实时处理激活记录
+            TradeStatTimer.Instance.Start(); //交易统计
+            ChangePosTimer.Instance.Start(); //售后换新执行机具数据转移
+            MakeReferenceQrCodeService.Instance.StartListen(); //生成创客邀请二维码
+            SycnSpBindService.Instance.Start(); //同步SP绑定数据
+            SycnSpMerchantService.Instance.Start(); //同步SP商户数据
+            SycnSpActiveService.Instance.Start(); //同步SP激活数据
+            SycnSpTradeService.Instance.Start(); //同步SP交易数据
             //必须打开的
 
 
             // StatService.Instance.StatUserLevel();
             // StatService.Instance.StartEverDay("2022-05-11");
-            ProfitHelper.Instance.StatProfit("202204"); //统计分润
+            // ProfitHelper.Instance.StatProfit("202204"); //统计分润
             // StatService.Instance.ListenFluxRecord();
             // StatService.Instance.StartEverDay2();
             // TestHelper.Instance.Start();

+ 1 - 1
appsettings.json

@@ -17,7 +17,7 @@
     "Host": "http://localhost:5047/",
     "SourceHost": "http://bs.kexiaoshuang.com/",
     "Database": "KxsMainServer",
-    "SqlConnStr": "server=47.108.207.184;port=3306;user=KxsMainServer;password=Rw2imhXQQt5ODWIF;database=KxsMainServer;charset=utf8;",
+    "SqlConnStr": "server=47.108.231.170;port=3306;user=KxsMainServer;password=Rw2imhXQQt5ODWIF;database=KxsMainServer;charset=utf8;",
     "Pxc1SqlConnStr": "server=47.108.231.170;port=3306;user=KxsMainServer;password=Rw2imhXQQt5ODWIF;database=KxsMainServer;charset=utf8;",
     "SpSqlConnStr": "server=localhost;port=3306;user=KxsSpServer;password=jJ9qKsvwWgQA9xWG;database=KxsSpServer;charset=utf8;",
     "RedisConnStr": "localhost:6379,password=,DefaultDatabase=0,poolsize=500,preheat=50,asyncPipeline=true",