Эх сурвалжийг харах

更新分润算法,分润用新规则,补贴用老规则

lichunlei 2 жил өмнө
parent
commit
0319b250ab

+ 278 - 262
AppStart/Helper/Profit/ProfitHelper.cs

@@ -1756,15 +1756,15 @@ namespace MySystem
             }
             return result;
         }
-        public void StatProfit(string Month)
+        public void StatProfit()
         {
             Thread th = new Thread(StatProfitDo);
             th.IsBackground = true;
-            th.Start(Month);
+            th.Start();
         }
-        public void StatProfitDo(object sender)
+        public void StatProfitDo()
         {
-            string Month = sender.ToString();
+            string Month = DateTime.Now.AddMonths(-1).ToString("yyyyMM");
             string check = function.ReadInstance("/ProfitStat/" + Month + ".txt");
             if (!string.IsNullOrEmpty(check))
             {
@@ -1776,255 +1776,267 @@ namespace MySystem
             {
                 for (int j = 0; j <= 1; j++) //卡类型
                 {
-                    List<ProfitResult> result = StartProftForPosByMonth(i, j, Month);
-                    foreach (ProfitResult sub in result)
+                    int PageNum = 1;
+                    bool op = true;
+                    while(op)
                     {
-                        int TopUserId = 0;
-                        if (!string.IsNullOrEmpty(sub.UserNav))
-                        {
-                            string[] UserNavList = sub.UserNav.Trim(',').Replace(",,", ",").Split(',');
-                            if (UserNavList.Length > 1)
-                            {
-                                TopUserId = int.Parse(UserNavList[1]);
-                            }
-                            else
-                            {
-                                TopUserId = int.Parse(UserNavList[0]);
-                            }
-                        }
-                        string RecordNo = "P" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8);
-                        decimal ProfitAmt = sub.Money;
-                        decimal TradeAmt = sub.TradeAmount;
-                        decimal ProfitRate = sub.ProfitRate;
-                        if (sub.IsSubsidy == 1 && j == 1)
-                        {
-                            decimal CreditTradeAmt = TradeAmt; //商户贷记卡交易总金额
-                            decimal QrCreditTradeAmt = 0; //商户(云闪付)贷记卡交易总金额
-                            decimal NonQrCreditTradeAmt = 0; //商户(非云闪付)贷记卡交易总金额
-                            decimal CreditProfitRate = 0; //(非云闪付)贷记卡交易分润比例
-                            decimal SubsidyProfit = 0; //商户(非云闪付)贷记卡交易分润补贴金额
-                            if (sub.QrPayFlag == 1)
-                            {
-                                QrCreditTradeAmt = TradeAmt; //商户(云闪付)贷记卡交易总金额
-                            }
-                            else
-                            { 
-                                NonQrCreditTradeAmt = TradeAmt; //商户(非云闪付)贷记卡交易总金额
-                                CreditProfitRate = ProfitRate; //(非云闪付)贷记卡交易分润比例
-                                SubsidyProfit = ProfitAmt; //商户(非云闪付)贷记卡交易分润补贴金额
-                            }
-                            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();
-                            db.ProfitSubsidyDetail.Add(new ProfitSubsidyDetail()
-                            {
-                                CreateDate = DateTime.Now,
-                                UpdateDate = DateTime.Now,
-                                RecordNo = RecordNo, //流水号
-                                BrandId = sub.BrandId, //品牌
-                                ProductName = RelationClass.GetKqProductBrandInfo(sub.BrandId), //产品名称
-                                TradeMonth = Month, //交易月份
-                                MerchantId = sub.MerchantId, //商户
-                                MerNo = merchant.KqMerNo, //渠道商户编号
-                                SnNo = sub.PosSn, //渠道SN号
-                                MerRegTime = pos.BindingTime, //渠道注册时间
-                                MerStandardDate = merchant.MerStandardDate, //商户激活时间
-                                BelongUserId = merchant.UserId, //商户归属人
-                                MerHelpFlag = sub.HelpFlag == 1 ? 1u : 0u, //是否属于扶持周期内商户
-                                SubsidyUserId = sub.UserId, //补贴人
-                                SubsidyType = sub.DirectFlag, //分润补贴类型
-                                SubsidyProfitRate = sub.Money, //创客活动期内直营商户分润万分之十
-                                CreditTradeAmt = CreditTradeAmt, //商户贷记卡交易总金额
-                                QrCreditTradeAmt = QrCreditTradeAmt, //商户(云闪付)贷记卡交易总金额
-                                NonQrCreditTradeAmt = NonQrCreditTradeAmt, //商户(非云闪付)贷记卡交易总金额
-                                CreditProfitRate = CreditProfitRate, //(非云闪付)贷记卡交易分润比例
-                                SubsidyProfit = SubsidyProfit, //商户(非云闪付)贷记卡交易分润补贴金额
-                            });
-                            db.SaveChanges();
-                        }
-                        else
+                        List<ProfitResult> result = StartProftForPosByMonth(i, j, Month, PageNum);
+                        if(result.Count > 0)
                         {
-                            decimal CreditTradeAmt = 0;
-                            decimal CreditTradeProfit = 0;
-                            decimal QrCreditTradeAmt = 0;
-                            decimal QrCreditProfitRate = 0;
-                            decimal QrCreditProfitStandardRate = 0;
-                            decimal QrCreditAddOrSubRate = 0;
-                            decimal QrCreditTradeProfit = 0;
-                            decimal NonQrCreditTradeAmt = 0;
-                            decimal NotHelpCreditTradeAmt = 0;
-                            decimal NotHelpCreditTradeProfit = 0;
-                            decimal NotHelpCreditProfitRate = 0;
-                            decimal NotHelpCreditProfitStandardRate = 0;
-                            decimal NotHelpCreditAddOrSubRate = 0;
-                            decimal HelpCreditTradeAmt = 0;
-                            decimal NonQrCreditTradeProfit = 0;
-                            decimal HelpCreditTradeProfit = 0;
-                            decimal HelpCreditProfitRate = 0;
-                            decimal HelpCreditProfitStandardRate = 0;
-                            decimal HelpCreditAddOrSubRate = 0;
-                            decimal DebitNonCapTradeAmt = 0;
-                            decimal DebitCapTradeAmt = 0;
-                            decimal QrDebitNotCapTradeAmt = 0;
-                            decimal NonQrDebitNotCapTradeAmt = 0;
-                            decimal NotHelpDebitNonCapTradeAmt = 0;
-                            decimal HelpDebitNonCapTradeAmt = 0;
-                            decimal DebitNonTradeCapProfit = 0;
-                            decimal QrDebitNonTradeCapProfit = 0;
-                            decimal NonQrDebitNonTradeCapProfit = 0;
-                            decimal NotHelpDebitNonTradeCapProfit = 0;
-                            decimal HelpDebitNonTradeCapProfit = 0;
-                            decimal DebitTradeCapProfit = 0;
-                            decimal NotHelpDebitProfitRate = 0;
-                            decimal NotHelpDebitProfitStandardRate = 0;
-                            decimal NotHelpDebitAddOrSubRate = 0;
-                            decimal HelpDebitProfitRate = 0;
-                            decimal HelpDebitProfitStandardRate = 0;
-                            decimal HelpDebitAddOrSubRate = 0;
-                            decimal DebitCapSingleReward = 0;
-                            decimal QrDebitProfitRate = 0;
-                            decimal QrDebitProfitStandardRate = 0;
-                            decimal QrDebitAddOrSubRate = 0;
-                            if (j == 1)
+                            foreach (ProfitResult sub in result)
                             {
-                                CreditTradeAmt = TradeAmt; //贷记卡交易总金额
-                                CreditTradeProfit = ProfitAmt; //贷记卡分润总金额
-                                if (sub.QrPayFlag == 1)
-                                {
-                                    QrCreditTradeAmt = TradeAmt; //(云闪付)贷记卡交易总金额
-                                    QrCreditProfitRate = ProfitRate; //(云闪付)贷记卡交易分润比例
-                                    QrCreditTradeProfit = ProfitAmt; //(云闪付)贷记卡交易分润
-                                }
-                                else
+                                int TopUserId = 0;
+                                if (!string.IsNullOrEmpty(sub.UserNav))
                                 {
-                                    NonQrCreditTradeAmt = TradeAmt; //(非云闪付)贷记卡交易总金额
-                                    NonQrCreditTradeProfit = ProfitAmt; //(非云闪付)贷记卡交易分润
-                                    if(sub.HelpFlag == 1)
+                                    string[] UserNavList = sub.UserNav.Trim(',').Replace(",,", ",").Split(',');
+                                    if (UserNavList.Length > 1)
                                     {
-                                        HelpCreditTradeProfit = ProfitAmt; //(扶持期)(非云闪付)贷记卡分润总金额
-                                        HelpCreditProfitRate = ProfitRate; //(扶持期)(非云闪付)贷记卡商户交易对应分润比例
-                                        HelpCreditTradeAmt = TradeAmt; //(扶持期)(非云闪付)贷记卡交易总金额
+                                        TopUserId = int.Parse(UserNavList[1]);
                                     }
                                     else
                                     {
-                                        NotHelpCreditTradeAmt = TradeAmt; //(非扶持期)(非云闪付)贷记卡交易总金额
-                                        NotHelpCreditTradeProfit = ProfitAmt; //(非扶持期)(非云闪付)贷记卡分润总金额
-                                        NotHelpCreditProfitRate = ProfitRate; //(非扶持期)(非云闪付)贷记卡商户交易对应分润比例
+                                        TopUserId = int.Parse(UserNavList[0]);
                                     }
                                 }
-                            }
-                            if (j == 0)
-                            {
-                                if (sub.Money < 1)
+                                string RecordNo = "P" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8);
+                                decimal ProfitAmt = sub.Money;
+                                decimal TradeAmt = sub.TradeAmount;
+                                decimal ProfitRate = sub.ProfitRate;
+                                if (sub.IsSubsidy == 1 && j == 1)
                                 {
-                                    DebitNonCapTradeAmt = TradeAmt; //商户非封顶借记卡交易总额
-                                    DebitNonTradeCapProfit = ProfitAmt; //借记卡非封顶交易分润总金额
-                                }
-                                else
-                                {
-                                    DebitCapTradeAmt = TradeAmt; //商户借记卡封顶交易总额
-                                    DebitCapSingleReward = ProfitAmt; //借记卡合伙人直营封顶交易奖励金额
-                                    DebitTradeCapProfit = ProfitAmt; //借记卡封顶交易分润总金额
-                                }
-                                if (sub.QrPayFlag == 1)
-                                {
-                                    if (sub.Money < 1)
-                                    {
-                                        QrDebitNotCapTradeAmt = TradeAmt; //(云闪付)商户非封顶借记卡交易总额
-                                        QrDebitProfitRate = ProfitRate; //(云闪付)借记卡非封顶交易分润比例
-                                        QrDebitNonTradeCapProfit = ProfitAmt; //(云闪付)借记卡非封顶交易分润总金额
-                                    }
-                                }
-                                else
-                                {
-                                    if (sub.Money < 1)
-                                    {
-                                        NonQrDebitNonTradeCapProfit = ProfitAmt; //(非云闪付)借记卡非封顶交易分润总金额
-                                        NonQrDebitNotCapTradeAmt = TradeAmt; //(非云闪付)商户非封顶借记卡交易总额
-                                    }
-                                    if (sub.HelpFlag == 1)
+                                    decimal CreditTradeAmt = TradeAmt; //商户贷记卡交易总金额
+                                    decimal QrCreditTradeAmt = 0; //商户(云闪付)贷记卡交易总金额
+                                    decimal NonQrCreditTradeAmt = 0; //商户(非云闪付)贷记卡交易总金额
+                                    decimal CreditProfitRate = 0; //(非云闪付)贷记卡交易分润比例
+                                    decimal SubsidyProfit = 0; //商户(非云闪付)贷记卡交易分润补贴金额
+                                    if (sub.QrPayFlag == 1)
                                     {
-                                        if (sub.Money < 1)
-                                        {
-                                            HelpDebitNonCapTradeAmt = TradeAmt; //(扶持期)(非云闪付)借记卡非封顶交易总金额
-                                            HelpDebitNonTradeCapProfit = ProfitAmt; //(扶持期)(非云闪付)借记卡非封顶交易分润总金额
-                                        }
-                                        HelpDebitProfitRate = ProfitRate; //(扶持期)(非云闪付)借记卡商户交易对应分润比例
+                                        QrCreditTradeAmt = TradeAmt; //商户(云闪付)贷记卡交易总金额
                                     }
                                     else
-                                    {
-                                        if (sub.Money < 1)
-                                        {
-                                            NotHelpDebitNonCapTradeAmt = TradeAmt; //(非扶持期)(非云闪付)借记卡非封顶交易总金额
-                                            NotHelpDebitNonTradeCapProfit = ProfitAmt; //(非扶持期)(非云闪付)借记卡非封顶交易分润总金额
-                                        }
-                                        NotHelpDebitProfitRate = ProfitRate; //(非扶持期)(非云闪付)借记卡商户交易对应分润比例
+                                    { 
+                                        NonQrCreditTradeAmt = TradeAmt; //商户(非云闪付)贷记卡交易总金额
+                                        CreditProfitRate = ProfitRate; //(非云闪付)贷记卡交易分润比例
+                                        SubsidyProfit = ProfitAmt; //商户(非云闪付)贷记卡交易分润补贴金额
                                     }
+                                    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();
+                                    db.ProfitSubsidyDetail.Add(new ProfitSubsidyDetail()
+                                    {
+                                        CreateDate = DateTime.Now,
+                                        UpdateDate = DateTime.Now,
+                                        RecordNo = RecordNo, //流水号
+                                        BrandId = sub.BrandId, //品牌
+                                        ProductName = RelationClass.GetKqProductBrandInfo(sub.BrandId), //产品名称
+                                        TradeMonth = Month, //交易月份
+                                        MerchantId = sub.MerchantId, //商户
+                                        MerNo = merchant.KqMerNo, //渠道商户编号
+                                        SnNo = sub.PosSn, //渠道SN号
+                                        MerRegTime = pos.BindingTime, //渠道注册时间
+                                        MerStandardDate = merchant.MerStandardDate, //商户激活时间
+                                        BelongUserId = merchant.UserId, //商户归属人
+                                        MerHelpFlag = sub.HelpFlag == 1 ? 1u : 0u, //是否属于扶持周期内商户
+                                        SubsidyUserId = sub.UserId, //补贴人
+                                        SubsidyType = sub.DirectFlag, //分润补贴类型
+                                        SubsidyProfitRate = sub.Money, //创客活动期内直营商户分润万分之十
+                                        CreditTradeAmt = CreditTradeAmt, //商户贷记卡交易总金额
+                                        QrCreditTradeAmt = QrCreditTradeAmt, //商户(云闪付)贷记卡交易总金额
+                                        NonQrCreditTradeAmt = NonQrCreditTradeAmt, //商户(非云闪付)贷记卡交易总金额
+                                        CreditProfitRate = CreditProfitRate, //(非云闪付)贷记卡交易分润比例
+                                        SubsidyProfit = SubsidyProfit, //商户(非云闪付)贷记卡交易分润补贴金额
+                                    });
                                 }
+                                // else
+                                // {
+                                //     decimal CreditTradeAmt = 0;
+                                //     decimal CreditTradeProfit = 0;
+                                //     decimal QrCreditTradeAmt = 0;
+                                //     decimal QrCreditProfitRate = 0;
+                                //     decimal QrCreditProfitStandardRate = 0;
+                                //     decimal QrCreditAddOrSubRate = 0;
+                                //     decimal QrCreditTradeProfit = 0;
+                                //     decimal NonQrCreditTradeAmt = 0;
+                                //     decimal NotHelpCreditTradeAmt = 0;
+                                //     decimal NotHelpCreditTradeProfit = 0;
+                                //     decimal NotHelpCreditProfitRate = 0;
+                                //     decimal NotHelpCreditProfitStandardRate = 0;
+                                //     decimal NotHelpCreditAddOrSubRate = 0;
+                                //     decimal HelpCreditTradeAmt = 0;
+                                //     decimal NonQrCreditTradeProfit = 0;
+                                //     decimal HelpCreditTradeProfit = 0;
+                                //     decimal HelpCreditProfitRate = 0;
+                                //     decimal HelpCreditProfitStandardRate = 0;
+                                //     decimal HelpCreditAddOrSubRate = 0;
+                                //     decimal DebitNonCapTradeAmt = 0;
+                                //     decimal DebitCapTradeAmt = 0;
+                                //     decimal QrDebitNotCapTradeAmt = 0;
+                                //     decimal NonQrDebitNotCapTradeAmt = 0;
+                                //     decimal NotHelpDebitNonCapTradeAmt = 0;
+                                //     decimal HelpDebitNonCapTradeAmt = 0;
+                                //     decimal DebitNonTradeCapProfit = 0;
+                                //     decimal QrDebitNonTradeCapProfit = 0;
+                                //     decimal NonQrDebitNonTradeCapProfit = 0;
+                                //     decimal NotHelpDebitNonTradeCapProfit = 0;
+                                //     decimal HelpDebitNonTradeCapProfit = 0;
+                                //     decimal DebitTradeCapProfit = 0;
+                                //     decimal NotHelpDebitProfitRate = 0;
+                                //     decimal NotHelpDebitProfitStandardRate = 0;
+                                //     decimal NotHelpDebitAddOrSubRate = 0;
+                                //     decimal HelpDebitProfitRate = 0;
+                                //     decimal HelpDebitProfitStandardRate = 0;
+                                //     decimal HelpDebitAddOrSubRate = 0;
+                                //     decimal DebitCapSingleReward = 0;
+                                //     decimal QrDebitProfitRate = 0;
+                                //     decimal QrDebitProfitStandardRate = 0;
+                                //     decimal QrDebitAddOrSubRate = 0;
+                                //     if (j == 1)
+                                //     {
+                                //         CreditTradeAmt = TradeAmt; //贷记卡交易总金额
+                                //         CreditTradeProfit = ProfitAmt; //贷记卡分润总金额
+                                //         if (sub.QrPayFlag == 1)
+                                //         {
+                                //             QrCreditTradeAmt = TradeAmt; //(云闪付)贷记卡交易总金额
+                                //             QrCreditProfitRate = ProfitRate; //(云闪付)贷记卡交易分润比例
+                                //             QrCreditTradeProfit = ProfitAmt; //(云闪付)贷记卡交易分润
+                                //         }
+                                //         else
+                                //         {
+                                //             NonQrCreditTradeAmt = TradeAmt; //(非云闪付)贷记卡交易总金额
+                                //             NonQrCreditTradeProfit = ProfitAmt; //(非云闪付)贷记卡交易分润
+                                //             if(sub.HelpFlag == 1)
+                                //             {
+                                //                 HelpCreditTradeProfit = ProfitAmt; //(扶持期)(非云闪付)贷记卡分润总金额
+                                //                 HelpCreditProfitRate = ProfitRate; //(扶持期)(非云闪付)贷记卡商户交易对应分润比例
+                                //                 HelpCreditTradeAmt = TradeAmt; //(扶持期)(非云闪付)贷记卡交易总金额
+                                //             }
+                                //             else
+                                //             {
+                                //                 NotHelpCreditTradeAmt = TradeAmt; //(非扶持期)(非云闪付)贷记卡交易总金额
+                                //                 NotHelpCreditTradeProfit = ProfitAmt; //(非扶持期)(非云闪付)贷记卡分润总金额
+                                //                 NotHelpCreditProfitRate = ProfitRate; //(非扶持期)(非云闪付)贷记卡商户交易对应分润比例
+                                //             }
+                                //         }
+                                //     }
+                                //     if (j == 0)
+                                //     {
+                                //         if (sub.Money < 1)
+                                //         {
+                                //             DebitNonCapTradeAmt = TradeAmt; //商户非封顶借记卡交易总额
+                                //             DebitNonTradeCapProfit = ProfitAmt; //借记卡非封顶交易分润总金额
+                                //         }
+                                //         else
+                                //         {
+                                //             DebitCapTradeAmt = TradeAmt; //商户借记卡封顶交易总额
+                                //             DebitCapSingleReward = ProfitAmt; //借记卡合伙人直营封顶交易奖励金额
+                                //             DebitTradeCapProfit = ProfitAmt; //借记卡封顶交易分润总金额
+                                //         }
+                                //         if (sub.QrPayFlag == 1)
+                                //         {
+                                //             if (sub.Money < 1)
+                                //             {
+                                //                 QrDebitNotCapTradeAmt = TradeAmt; //(云闪付)商户非封顶借记卡交易总额
+                                //                 QrDebitProfitRate = ProfitRate; //(云闪付)借记卡非封顶交易分润比例
+                                //                 QrDebitNonTradeCapProfit = ProfitAmt; //(云闪付)借记卡非封顶交易分润总金额
+                                //             }
+                                //         }
+                                //         else
+                                //         {
+                                //             if (sub.Money < 1)
+                                //             {
+                                //                 NonQrDebitNonTradeCapProfit = ProfitAmt; //(非云闪付)借记卡非封顶交易分润总金额
+                                //                 NonQrDebitNotCapTradeAmt = TradeAmt; //(非云闪付)商户非封顶借记卡交易总额
+                                //             }
+                                //             if (sub.HelpFlag == 1)
+                                //             {
+                                //                 if (sub.Money < 1)
+                                //                 {
+                                //                     HelpDebitNonCapTradeAmt = TradeAmt; //(扶持期)(非云闪付)借记卡非封顶交易总金额
+                                //                     HelpDebitNonTradeCapProfit = ProfitAmt; //(扶持期)(非云闪付)借记卡非封顶交易分润总金额
+                                //                 }
+                                //                 HelpDebitProfitRate = ProfitRate; //(扶持期)(非云闪付)借记卡商户交易对应分润比例
+                                //             }
+                                //             else
+                                //             {
+                                //                 if (sub.Money < 1)
+                                //                 {
+                                //                     NotHelpDebitNonCapTradeAmt = TradeAmt; //(非扶持期)(非云闪付)借记卡非封顶交易总金额
+                                //                     NotHelpDebitNonTradeCapProfit = ProfitAmt; //(非扶持期)(非云闪付)借记卡非封顶交易分润总金额
+                                //                 }
+                                //                 NotHelpDebitProfitRate = ProfitRate; //(非扶持期)(非云闪付)借记卡商户交易对应分润比例
+                                //             }
+                                //         }
+                                //     }
+                                //     db.ProfitRewardRecord.Add(new ProfitRewardRecord()
+                                //     {
+                                //         CreateDate = DateTime.Now,
+                                //         UpdateDate = DateTime.Now,
+                                //         UserId = sub.UserId, //创客
+                                //         MerchantId = sub.MerchantId, //商户
+                                //         BrandId = sub.BrandId, //品牌
+                                //         ProfitType = sub.DirectFlag, //创客分润类型
+                                //         TradeAmt = sub.TradeAmount, //商户交易总额
+                                //         TradeProfit = sub.Money, //交易分润
+                                //         TradeMonth = Month, //交易月
+                                //         RecordNo = RecordNo, //记录单号
+                                //         TopUserId = TopUserId, //顶级创客
+                                //         CreditTradeAmt = CreditTradeAmt, //贷记卡交易总金额
+                                //         QrCreditTradeAmt = QrCreditTradeAmt, //(云闪付)贷记卡交易总金额
+                                //         NonQrCreditTradeAmt = NonQrCreditTradeAmt, //(非云闪付)贷记卡交易总金额
+                                //         NotHelpCreditTradeAmt = NotHelpCreditTradeAmt, //(非扶持期)(非云闪付)贷记卡交易总金额
+                                //         HelpCreditTradeAmt = HelpCreditTradeAmt, //(扶持期)(非云闪付)贷记卡交易总金额
+                                //         DebitNonCapTradeAmt = DebitNonCapTradeAmt, //商户非封顶借记卡交易总额
+                                //         QrDebitNotCapTradeAmt = QrDebitNotCapTradeAmt, //(云闪付)商户非封顶借记卡交易总额
+                                //         NonQrDebitNotCapTradeAmt = NonQrDebitNotCapTradeAmt, //(非云闪付)商户非封顶借记卡交易总额
+                                //         NotHelpDebitNonCapTradeAmt = NotHelpDebitNonCapTradeAmt, //(非扶持期)(非云闪付)借记卡非封顶交易总金额
+                                //         HelpDebitNonCapTradeAmt = HelpDebitNonCapTradeAmt, //(扶持期)(非云闪付)借记卡非封顶交易总金额
+                                //         DebitCapTradeAmt = DebitCapTradeAmt, //商户借记卡封顶交易总额
+                                //         CreditTradeProfit = CreditTradeProfit, //贷记卡分润总金额
+                                //         QrCreditTradeProfit = QrCreditTradeProfit, //(云闪付)贷记卡交易分润
+                                //         NonQrCreditTradeProfit = NonQrCreditTradeProfit, //(非云闪付)贷记卡交易分润
+                                //         NotHelpCreditTradeProfit = NotHelpCreditTradeProfit, //(非扶持期)(非云闪付)贷记卡分润总金额
+                                //         HelpCreditTradeProfit = HelpCreditTradeProfit, //(扶持期)(非云闪付)贷记卡分润总金额
+                                //         DebitNonTradeCapProfit = DebitNonTradeCapProfit, //借记卡非封顶交易分润总金额
+                                //         QrDebitNonTradeCapProfit = QrDebitNonTradeCapProfit, //(云闪付)借记卡非封顶交易分润总金额
+                                //         NonQrDebitNonTradeCapProfit = NonQrDebitNonTradeCapProfit, //(非云闪付)借记卡非封顶交易分润总金额
+                                //         NotHelpDebitNonTradeCapProfit = NotHelpDebitNonTradeCapProfit, //(非扶持期)(非云闪付)借记卡非封顶交易分润总金额
+                                //         HelpDebitNonTradeCapProfit = HelpDebitNonTradeCapProfit, //(扶持期)(非云闪付)借记卡非封顶交易分润总金额
+                                //         DebitTradeCapProfit = DebitTradeCapProfit, //借记卡封顶交易分润总金额
+                                //         NotHelpCreditProfitRate = NotHelpCreditProfitRate, //(非扶持期)(非云闪付)贷记卡商户交易对应分润比例
+                                //         NotHelpCreditProfitStandardRate = NotHelpCreditProfitStandardRate, //(非扶持期)(非云闪付)贷记卡标准分润比例
+                                //         NotHelpCreditAddOrSubRate = NotHelpCreditAddOrSubRate, //(非扶持期)(非云闪付)贷记卡成本或增或减比例
+                                //         HelpCreditProfitRate = HelpCreditProfitRate, //(扶持期)(非云闪付)贷记卡商户交易对应分润比例
+                                //         HelpCreditProfitStandardRate = HelpCreditProfitStandardRate, //(扶持期)(非云闪付)贷记卡-标准分润比例
+                                //         HelpCreditAddOrSubRate = HelpCreditAddOrSubRate, //(扶持期)(非云闪付)贷记卡成本或增或减比例
+                                //         NotHelpDebitProfitRate = NotHelpDebitProfitRate, //(非扶持期)(非云闪付)借记卡商户交易对应分润比例
+                                //         NotHelpDebitProfitStandardRate = NotHelpDebitProfitStandardRate, //(非扶持期)(非云闪付)借记卡标准分润比例
+                                //         NotHelpDebitAddOrSubRate = NotHelpDebitAddOrSubRate, //(非扶持期)(非云闪付)借记卡成本或增或减比例
+                                //         HelpDebitProfitRate = HelpDebitProfitRate, //(扶持期)(非云闪付)借记卡商户交易对应分润比例
+                                //         HelpDebitProfitStandardRate = HelpDebitProfitStandardRate, //(扶持期)(非云闪付)借记卡-标准分润比例
+                                //         HelpDebitAddOrSubRate = HelpDebitAddOrSubRate, //(扶持期)(非云闪付)借记卡成本或增或减比例
+                                //         DebitCapSingleReward = DebitCapSingleReward, //借记卡合伙人直营封顶交易奖励金额
+                                //         QrCreditProfitRate = QrCreditProfitRate, //(云闪付)贷记卡交易分润比例
+                                //         QrCreditProfitStandardRate = QrCreditProfitStandardRate, //(云闪付)贷记卡分润基准
+                                //         QrCreditAddOrSubRate = QrCreditAddOrSubRate, //(云闪付)贷记卡分润比例或增或减
+                                //         QrDebitProfitRate = QrDebitProfitRate, //(云闪付)借记卡非封顶交易分润比例
+                                //         QrDebitProfitStandardRate = QrDebitProfitStandardRate, //(云闪付)借记卡非封顶交易分润基准
+                                //         QrDebitAddOrSubRate = QrDebitAddOrSubRate, //(云闪付)借记卡非封顶交易分润比例或增或减
+                                //     });
+                                // }
                             }
-                            db.ProfitRewardRecord.Add(new ProfitRewardRecord()
-                            {
-                                CreateDate = DateTime.Now,
-                                UpdateDate = DateTime.Now,
-                                UserId = sub.UserId, //创客
-                                MerchantId = sub.MerchantId, //商户
-                                BrandId = sub.BrandId, //品牌
-                                ProfitType = sub.DirectFlag, //创客分润类型
-                                TradeAmt = sub.TradeAmount, //商户交易总额
-                                TradeProfit = sub.Money, //交易分润
-                                TradeMonth = Month, //交易月
-                                RecordNo = RecordNo, //记录单号
-                                TopUserId = TopUserId, //顶级创客
-                                CreditTradeAmt = CreditTradeAmt, //贷记卡交易总金额
-                                QrCreditTradeAmt = QrCreditTradeAmt, //(云闪付)贷记卡交易总金额
-                                NonQrCreditTradeAmt = NonQrCreditTradeAmt, //(非云闪付)贷记卡交易总金额
-                                NotHelpCreditTradeAmt = NotHelpCreditTradeAmt, //(非扶持期)(非云闪付)贷记卡交易总金额
-                                HelpCreditTradeAmt = HelpCreditTradeAmt, //(扶持期)(非云闪付)贷记卡交易总金额
-                                DebitNonCapTradeAmt = DebitNonCapTradeAmt, //商户非封顶借记卡交易总额
-                                QrDebitNotCapTradeAmt = QrDebitNotCapTradeAmt, //(云闪付)商户非封顶借记卡交易总额
-                                NonQrDebitNotCapTradeAmt = NonQrDebitNotCapTradeAmt, //(非云闪付)商户非封顶借记卡交易总额
-                                NotHelpDebitNonCapTradeAmt = NotHelpDebitNonCapTradeAmt, //(非扶持期)(非云闪付)借记卡非封顶交易总金额
-                                HelpDebitNonCapTradeAmt = HelpDebitNonCapTradeAmt, //(扶持期)(非云闪付)借记卡非封顶交易总金额
-                                DebitCapTradeAmt = DebitCapTradeAmt, //商户借记卡封顶交易总额
-                                CreditTradeProfit = CreditTradeProfit, //贷记卡分润总金额
-                                QrCreditTradeProfit = QrCreditTradeProfit, //(云闪付)贷记卡交易分润
-                                NonQrCreditTradeProfit = NonQrCreditTradeProfit, //(非云闪付)贷记卡交易分润
-                                NotHelpCreditTradeProfit = NotHelpCreditTradeProfit, //(非扶持期)(非云闪付)贷记卡分润总金额
-                                HelpCreditTradeProfit = HelpCreditTradeProfit, //(扶持期)(非云闪付)贷记卡分润总金额
-                                DebitNonTradeCapProfit = DebitNonTradeCapProfit, //借记卡非封顶交易分润总金额
-                                QrDebitNonTradeCapProfit = QrDebitNonTradeCapProfit, //(云闪付)借记卡非封顶交易分润总金额
-                                NonQrDebitNonTradeCapProfit = NonQrDebitNonTradeCapProfit, //(非云闪付)借记卡非封顶交易分润总金额
-                                NotHelpDebitNonTradeCapProfit = NotHelpDebitNonTradeCapProfit, //(非扶持期)(非云闪付)借记卡非封顶交易分润总金额
-                                HelpDebitNonTradeCapProfit = HelpDebitNonTradeCapProfit, //(扶持期)(非云闪付)借记卡非封顶交易分润总金额
-                                DebitTradeCapProfit = DebitTradeCapProfit, //借记卡封顶交易分润总金额
-                                NotHelpCreditProfitRate = NotHelpCreditProfitRate, //(非扶持期)(非云闪付)贷记卡商户交易对应分润比例
-                                NotHelpCreditProfitStandardRate = NotHelpCreditProfitStandardRate, //(非扶持期)(非云闪付)贷记卡标准分润比例
-                                NotHelpCreditAddOrSubRate = NotHelpCreditAddOrSubRate, //(非扶持期)(非云闪付)贷记卡成本或增或减比例
-                                HelpCreditProfitRate = HelpCreditProfitRate, //(扶持期)(非云闪付)贷记卡商户交易对应分润比例
-                                HelpCreditProfitStandardRate = HelpCreditProfitStandardRate, //(扶持期)(非云闪付)贷记卡-标准分润比例
-                                HelpCreditAddOrSubRate = HelpCreditAddOrSubRate, //(扶持期)(非云闪付)贷记卡成本或增或减比例
-                                NotHelpDebitProfitRate = NotHelpDebitProfitRate, //(非扶持期)(非云闪付)借记卡商户交易对应分润比例
-                                NotHelpDebitProfitStandardRate = NotHelpDebitProfitStandardRate, //(非扶持期)(非云闪付)借记卡标准分润比例
-                                NotHelpDebitAddOrSubRate = NotHelpDebitAddOrSubRate, //(非扶持期)(非云闪付)借记卡成本或增或减比例
-                                HelpDebitProfitRate = HelpDebitProfitRate, //(扶持期)(非云闪付)借记卡商户交易对应分润比例
-                                HelpDebitProfitStandardRate = HelpDebitProfitStandardRate, //(扶持期)(非云闪付)借记卡-标准分润比例
-                                HelpDebitAddOrSubRate = HelpDebitAddOrSubRate, //(扶持期)(非云闪付)借记卡成本或增或减比例
-                                DebitCapSingleReward = DebitCapSingleReward, //借记卡合伙人直营封顶交易奖励金额
-                                QrCreditProfitRate = QrCreditProfitRate, //(云闪付)贷记卡交易分润比例
-                                QrCreditProfitStandardRate = QrCreditProfitStandardRate, //(云闪付)贷记卡分润基准
-                                QrCreditAddOrSubRate = QrCreditAddOrSubRate, //(云闪付)贷记卡分润比例或增或减
-                                QrDebitProfitRate = QrDebitProfitRate, //(云闪付)借记卡非封顶交易分润比例
-                                QrDebitProfitStandardRate = QrDebitProfitStandardRate, //(云闪付)借记卡非封顶交易分润基准
-                                QrDebitAddOrSubRate = QrDebitAddOrSubRate, //(云闪付)借记卡非封顶交易分润比例或增或减
-                            });
                             db.SaveChanges();
+                            PageNum += 1;
+                        }
+                        else
+                        {
+                            op = false;
                         }
                     }
                 }
             }
             db.Dispose();
         }
-        public List<ProfitResult> StartProftForPosByMonth(int BrandId, int BankCardType, string Month)
+        public List<ProfitResult> StartProftForPosByMonth(int BrandId, int BankCardType, string Month, int PageNum = 1)
         {
             // 级差
             /*   
@@ -2091,7 +2103,16 @@ namespace MySystem
 
             */
 
-
+            int PageSize = 500;
+            int SkipNum = (PageNum - 1) * PageSize;
+            string LimitString = " limit " + PageSize;
+            if(PageNum > 1)
+            {
+                LimitString = " limit " + SkipNum + "," + PageSize;
+            }
+            function.WriteLog(DateTime.Now.ToString(), "老规则分润日志");
+            function.WriteLog(BankCardType.ToString(), "老规则分润日志");
+            function.WriteLog(BrandId.ToString(), "老规则分润日志");
             List<ProfitResult> result = new List<ProfitResult>();
             ProfitObjects obj = RedisDbconn.Instance.Get<ProfitObjects>("pobj" + BrandId);
             if (obj.Status == 1) //判断分润是否开启
@@ -2101,46 +2122,39 @@ namespace MySystem
                 DataTable dt = new DataTable();
                 if (BankCardType == 1)
                 {
-                    dt = dbconn.dtable("select SnNo,QrPayFlag,sum(TradeAmount) from TradeRecord where CreateDate>='" + start + "' and CreateDate<'" + end + "' and BankCardType>=1 and BankCardType<=2 and BrandId=" + BrandId + " group by SnNo,QrPayFlag");
+                    dt = dbconn.dtable("select SnNo,UserId,QrPayFlag,MerHelpFlag,sum(TradeAmount) from TradeRecord where CreateDate>='" + start + "' and CreateDate<'" + end + "' and BankCardType!=0 and BrandId=" + BrandId + " group by SnNo,UserId,QrPayFlag,MerHelpFlag" + LimitString);
                 }
                 if (BankCardType == 0)
                 {
-                    dt = dbconn.dtable("select SnNo,QrPayFlag,TradeAmount from TradeRecord where CreateDate>='" + start + "' and CreateDate<'" + end + "' and BankCardType=0 and BrandId=" + BrandId + "");
+                    dt = dbconn.dtable("select SnNo,UserId,QrPayFlag,MerHelpFlag,TradeAmount from TradeRecord where CreateDate>='" + start + "' and CreateDate<'" + end + "' and BankCardType=0 and BrandId=" + BrandId + LimitString);
                 }
+                function.WriteLog("记录条数:" + dt.Rows.Count.ToString(), "老规则分润日志");
                 foreach (DataRow dr in dt.Rows)
                 {
                     WebCMSEntities dbnew = new WebCMSEntities();
                     try
                     {
                         string SnNo = dr["SnNo"].ToString();
+                        int UserId = int.Parse(dr["UserId"].ToString());
+                        int HelpTime = int.Parse(dr["MerHelpFlag"].ToString());
                         MachineForSnNo forSnNo = dbnew.MachineForSnNo.FirstOrDefault(m => m.SnNo == SnNo) ?? new MachineForSnNo();
                         PosMachinesTwo pos = dbnew.PosMachinesTwo.FirstOrDefault(m => m.Id == forSnNo.SnId) ?? new PosMachinesTwo();
                         decimal Deposit = decimal.Parse(function.CheckNum(pos.SeoKeyword));
-                        int UserId = pos.UserId;
-                        int MerchantTypeUserId = int.Parse(function.CheckInt(pos.SeoTitle));
-                        if (MerchantTypeUserId > 0)
-                        {
-                            Users merchantUser = dbnew.Users.FirstOrDefault(m => m.Id == MerchantTypeUserId && m.MerchantType == 1);
-                            if (merchantUser != null)
-                            {
-                                UserId = MerchantTypeUserId;
-                            }
-                        }
                         if (pos.BindingState == 1)
                         {
                             int QrPayFlag = int.Parse(dr["QrPayFlag"].ToString());
-                            decimal TradeAmt = decimal.Parse(dr[2].ToString());
+                            decimal TradeAmt = decimal.Parse(dr[4].ToString());
                             List<UserLevelSet> levels = dbnew.UserLevelSet.ToList();
                             Users selfUser = dbnew.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
                             int Days = int.Parse(RedisDbconn.Instance.Get<string>("pobjrule:" + BrandId + ":HelpPolicy:Days")); //天数
                             if (BankCardType == 0)
                             {
                                 int UserLevel = selfUser.UserLevel; //当前会员等级
-                                int HelpTime = 0; //扶持期-1,稳定期=0
-                                if (pos.BindingTime.Value.AddDays(Days) > DateTime.Now && Deposit > 0 && pos.ActivationState == 1)
-                                {
-                                    HelpTime = 1;
-                                }
+                                // int HelpTime = 0; //扶持期-1,稳定期=0
+                                // if (pos.BindingTime.Value.AddDays(Days) > DateTime.Now && Deposit > 0 && pos.ActivationState == 1)
+                                // {
+                                //     HelpTime = 1;
+                                // }
                                 // int LevelKindId = GetLevelKindId(BrandId, HelpTime, 0);
                                 // ProfitObjectLevels objlevel = RedisDbconn.Instance.Get<ProfitObjectLevels>("pobjlv" + LevelKindId + ":" + UserLevel); //获取当前等级参数
                                 decimal getLevelProfit = TradeAmt * 0.0006M;
@@ -2169,15 +2183,15 @@ namespace MySystem
                                 decimal diffLevelProfit = 0;  //等级级差
                                 int curLevel = 0; //当前层级的会员等级
                                 string ParentNav = selfUser.ParentNav;
-                                if (UserId != pos.UserId)
-                                {
-                                    Users user = dbnew.Users.FirstOrDefault(m => m.Id == pos.UserId);
-                                    if (user != null)
-                                    { 
-                                        ParentNav = user.ParentNav;
-                                        UserId = pos.UserId;
-                                    }
-                                }
+                                // if (UserId != pos.UserId)
+                                // {
+                                //     Users user = dbnew.Users.FirstOrDefault(m => m.Id == pos.UserId);
+                                //     if (user != null)
+                                //     { 
+                                //         ParentNav = user.ParentNav;
+                                //         UserId = pos.UserId;
+                                //     }
+                                // }
                                 if (string.IsNullOrEmpty(ParentNav) && pos.BuyUserId == 1 && pos.UserId == 1)
                                 {
                                     ParentNav = ",0,";
@@ -2209,11 +2223,11 @@ namespace MySystem
                                         }
                                         if (UserLevel <= maxLevel && UserLevel > curLevel)
                                         {
-                                            int HelpTime = 0; //扶持期-1,稳定期=0
-                                            if (pos.BindingTime.Value.AddDays(Days) > DateTime.Now && Deposit > 0 && pos.ActivationState == 1)
-                                            {
-                                                HelpTime = 1;
-                                            }
+                                            // int HelpTime = 0; //扶持期-1,稳定期=0
+                                            // if (pos.BindingTime.Value.AddDays(Days) > DateTime.Now && Deposit > 0 && pos.ActivationState == 1)
+                                            // {
+                                            //     HelpTime = 1;
+                                            // }
                                             int LevelKindId = GetLevelKindId(BrandId, HelpTime, 1);
                                             ProfitObjectLevels objlevel = RedisDbconn.Instance.Get<ProfitObjectLevels>("pobjlv" + LevelKindId + ":" + UserLevel); //获取当前等级参数
                                             if (objlevel != null)
@@ -2317,6 +2331,8 @@ namespace MySystem
                     dbnew.Dispose();
                 }
             }
+            function.WriteLog(DateTime.Now.ToString(), "老规则分润日志");
+            function.WriteLog("\r\n\r\n", "老规则分润日志");
             return result;
         }
         #endregion

+ 82 - 71
AppStart/Helper/Profit/ProfitHelperV2.cs

@@ -19,7 +19,7 @@ namespace MySystem
         
         #region 获取分润规则Id
 
-        public int GetLevelKindId(int BrandId, int Help, int BankCardType)
+        private int GetLevelKindId(int BrandId, int Help, int BankCardType)
         {
             return RedisDbconn.Instance.Get<int>("pobjlv:kid:" + BrandId + ":" + Help + ":" + BankCardType);
         }
@@ -35,13 +35,15 @@ namespace MySystem
         }
         public void StatProfitDo()
         {
-            DateTime end = DateTime.Parse("2022-06-30 00:00:00");
-            DateTime check = DateTime.Parse("2022-06-01");
+            DateTime check = DateTime.Parse(DateTime.Now.AddMonths(-1).ToString("yyyy-MM-dd") + " 00:00:00");
+            DateTime end = DateTime.Parse(check.AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd") + " 00:00:00");
             while (check <= end)
             {
                 StatProfitEveryDay(check.ToString("yyyyMMdd"));
                 check = check.AddDays(1);
             }
+
+            ProfitHelper.Instance.StatProfit();
         }
         public void StatProfitEveryDay(object sender)
         {
@@ -62,9 +64,9 @@ namespace MySystem
                     bool op = true;
                     while(op)
                     {
-                        function.WriteLog("BrandId:" + i + ",BankCardType:" + j + ",Date:" + Date + ",PageNum:" + PageNum, "分润监控日志");
+                        function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + ":" + "BrandId:" + i + ",BankCardType:" + j + ",Date:" + Date + ",PageNum:" + PageNum, "分润监控日志");
                         List<ProfitResult> result = StartProftForPosByDate(i, j, Date, PageNum);
-                        function.WriteLog("result:" + result.Count, "分润监控日志");
+                        function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + ":" + "result:" + result.Count, "分润监控日志");
                         function.WriteLog("\r\n", "分润监控日志");
                         if(result.Count > 0)
                         {
@@ -89,50 +91,50 @@ namespace MySystem
                                 decimal ProfitRate = sub.ProfitRate;
                                 if (sub.IsSubsidy == 1 && j == 1)
                                 {
-                                    decimal CreditTradeAmt = TradeAmt; //商户贷记卡交易总金额
-                                    decimal QrCreditTradeAmt = 0; //商户(云闪付)贷记卡交易总金额
-                                    decimal NonQrCreditTradeAmt = 0; //商户(非云闪付)贷记卡交易总金额
-                                    decimal CreditProfitRate = 0; //(非云闪付)贷记卡交易分润比例
-                                    decimal SubsidyProfit = 0; //商户(非云闪付)贷记卡交易分润补贴金额
-                                    if (sub.QrPayFlag == 1)
-                                    {
-                                        QrCreditTradeAmt = TradeAmt; //商户(云闪付)贷记卡交易总金额
-                                    }
-                                    else
-                                    { 
-                                        NonQrCreditTradeAmt = TradeAmt; //商户(非云闪付)贷记卡交易总金额
-                                        CreditProfitRate = ProfitRate; //(非云闪付)贷记卡交易分润比例
-                                        SubsidyProfit = ProfitAmt; //商户(非云闪付)贷记卡交易分润补贴金额
-                                    }
-                                    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();
-                                    db.ProfitSubsidyDetail.Add(new ProfitSubsidyDetail()
-                                    {
-                                        CreateDate = DateTime.Now,
-                                        UpdateDate = DateTime.Now,
-                                        RecordNo = RecordNo, //流水号
-                                        BrandId = sub.BrandId, //品牌
-                                        ProductName = RelationClass.GetKqProductBrandInfo(sub.BrandId), //产品名称
-                                        TradeMonth = Month, //交易月份
-                                        SeoTitle = Date,
-                                        MerchantId = sub.MerchantId, //商户
-                                        MerNo = merchant.KqMerNo, //渠道商户编号
-                                        SnNo = sub.PosSn, //渠道SN号
-                                        MerRegTime = pos.BindingTime, //渠道注册时间
-                                        MerStandardDate = merchant.MerStandardDate, //商户激活时间
-                                        BelongUserId = merchant.UserId, //商户归属人
-                                        MerHelpFlag = sub.HelpFlag == 1 ? 1u : 0u, //是否属于扶持周期内商户
-                                        SubsidyUserId = sub.UserId, //补贴人
-                                        SubsidyType = sub.DirectFlag, //分润补贴类型
-                                        SubsidyProfitRate = sub.Money, //创客活动期内直营商户分润万分之十
-                                        CreditTradeAmt = CreditTradeAmt, //商户贷记卡交易总金额
-                                        QrCreditTradeAmt = QrCreditTradeAmt, //商户(云闪付)贷记卡交易总金额
-                                        NonQrCreditTradeAmt = NonQrCreditTradeAmt, //商户(非云闪付)贷记卡交易总金额
-                                        CreditProfitRate = CreditProfitRate, //(非云闪付)贷记卡交易分润比例
-                                        SubsidyProfit = SubsidyProfit, //商户(非云闪付)贷记卡交易分润补贴金额
-                                    });
-                                    db.SaveChanges();
+                                    // decimal CreditTradeAmt = TradeAmt; //商户贷记卡交易总金额
+                                    // decimal QrCreditTradeAmt = 0; //商户(云闪付)贷记卡交易总金额
+                                    // decimal NonQrCreditTradeAmt = 0; //商户(非云闪付)贷记卡交易总金额
+                                    // decimal CreditProfitRate = 0; //(非云闪付)贷记卡交易分润比例
+                                    // decimal SubsidyProfit = 0; //商户(非云闪付)贷记卡交易分润补贴金额
+                                    // if (sub.QrPayFlag == 1)
+                                    // {
+                                    //     QrCreditTradeAmt = TradeAmt; //商户(云闪付)贷记卡交易总金额
+                                    // }
+                                    // else
+                                    // { 
+                                    //     NonQrCreditTradeAmt = TradeAmt; //商户(非云闪付)贷记卡交易总金额
+                                    //     CreditProfitRate = ProfitRate; //(非云闪付)贷记卡交易分润比例
+                                    //     SubsidyProfit = ProfitAmt; //商户(非云闪付)贷记卡交易分润补贴金额
+                                    // }
+                                    // // 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();
+                                    // db.ProfitSubsidyDetail.Add(new ProfitSubsidyDetail()
+                                    // {
+                                    //     CreateDate = DateTime.Now,
+                                    //     UpdateDate = DateTime.Now,
+                                    //     RecordNo = RecordNo, //流水号
+                                    //     BrandId = sub.BrandId, //品牌
+                                    //     ProductName = RelationClass.GetKqProductBrandInfo(sub.BrandId), //产品名称
+                                    //     TradeMonth = Month, //交易月份
+                                    //     SeoTitle = Date,
+                                    //     MerchantId = sub.MerchantId, //商户
+                                    //     // MerNo = merchant.KqMerNo, //渠道商户编号
+                                    //     SnNo = sub.PosSn, //渠道SN号
+                                    //     // MerRegTime = pos.BindingTime, //渠道注册时间
+                                    //     // MerStandardDate = merchant.MerStandardDate, //商户激活时间
+                                    //     // BelongUserId = merchant.UserId, //商户归属人
+                                    //     MerHelpFlag = sub.HelpFlag == 1 ? 1u : 0u, //是否属于扶持周期内商户
+                                    //     SubsidyUserId = sub.UserId, //补贴人
+                                    //     SubsidyType = sub.DirectFlag, //分润补贴类型
+                                    //     SubsidyProfitRate = sub.Money, //创客活动期内直营商户分润万分之十
+                                    //     CreditTradeAmt = CreditTradeAmt, //商户贷记卡交易总金额
+                                    //     QrCreditTradeAmt = QrCreditTradeAmt, //商户(云闪付)贷记卡交易总金额
+                                    //     NonQrCreditTradeAmt = NonQrCreditTradeAmt, //商户(非云闪付)贷记卡交易总金额
+                                    //     CreditProfitRate = CreditProfitRate, //(非云闪付)贷记卡交易分润比例
+                                    //     SubsidyProfit = SubsidyProfit, //商户(非云闪付)贷记卡交易分润补贴金额
+                                    // });
+                                    // db.SaveChanges();
                                 }
                                 else
                                 {
@@ -310,9 +312,10 @@ namespace MySystem
                                         QrDebitProfitStandardRate = QrDebitProfitStandardRate, //(云闪付)借记卡非封顶交易分润基准
                                         QrDebitAddOrSubRate = QrDebitAddOrSubRate, //(云闪付)借记卡非封顶交易分润比例或增或减
                                     });
-                                    db.SaveChanges();
+                                    // db.SaveChanges();
                                 }
                             }
+                            db.SaveChanges();
                             PageNum += 1;
                         }
                         else
@@ -350,38 +353,40 @@ namespace MySystem
                     若创客为商户型创客,则机具UserId的创客获得万4分润
 
                     //查分润
-                    select u.MakerCode,u.RealName,u.UserLevel,r.Rank,pos.SeoKeyword,p.KqSnNo,(case when ProfitType=1 then '直营' else '团队' end) as DirectFlag,
-                    k.Name,CreditTradeAmt,CreditTradeProfit,DebitTradeAmt,DebitTradeProfit,QrCreditTradeAmt,QrCreditTradeProfit from (
-                    select UserId,ProfitType,BrandId,MerchantId,
+                    select u.MakerCode,u.RealName,u.UserLevel,r.Rank,(case when ProfitType=1 then '直营' else '团队' end) as DirectFlag,
+                    k.Name,CreditTradeAmt,CreditTradeProfit,QrCreditTradeAmt,QrCreditTradeProfit,NonQrCreditTradeAmt,NonQrCreditTradeProfit,HelpCreditTradeAmt,HelpCreditTradeProfit,NotHelpCreditTradeAmt,NotHelpCreditTradeProfit,DebitTradeAmt,DebitTradeProfit from (
+                    select UserId,ProfitType,BrandId,
                     sum(CreditTradeAmt) as CreditTradeAmt,
                     sum(CreditTradeProfit) as CreditTradeProfit,
-                    sum(DebitNonCapTradeAmt+DebitCapTradeAmt) as DebitTradeAmt,
-                    sum(DebitNonTradeCapProfit+DebitTradeCapProfit) as DebitTradeProfit,
                     sum(QrCreditTradeAmt) as QrCreditTradeAmt,
-                    sum(QrCreditTradeProfit) as QrCreditTradeProfit
-                    from ProfitRewardRecord where MerchantId>0
-                    GROUP BY UserId,ProfitType,BrandId,MerchantId
+                    sum(QrCreditTradeProfit) as QrCreditTradeProfit,
+                    sum(NonQrCreditTradeAmt) as NonQrCreditTradeAmt,
+                    sum(NonQrCreditTradeProfit) as NonQrCreditTradeProfit,
+                    sum(HelpCreditTradeAmt) as HelpCreditTradeAmt,
+                    sum(HelpCreditTradeProfit) as HelpCreditTradeProfit,
+                    sum(NotHelpCreditTradeAmt) as NotHelpCreditTradeAmt,
+                    sum(NotHelpCreditTradeProfit) as NotHelpCreditTradeProfit,
+                    sum(DebitNonCapTradeAmt+DebitCapTradeAmt) as DebitTradeAmt,
+                    sum(DebitNonTradeCapProfit+DebitTradeCapProfit) as DebitTradeProfit 
+                    from ProfitRewardRecord where TradeMonth='202206' 
+                    GROUP BY UserId,ProfitType,BrandId
                     ) tb 
                     left join Users u on tb.UserId=u.Id 
                     LEFT JOIN KqProducts k ON k.Id=tb.BrandId 
-                    left join PosMerchantInfo p on tb.MerchantId=p.Id 
-                    left join MachineForSnNo fp on fp.SnNo=p.KqSnNo 
-                    left join PosMachinesTwo pos on pos.Id=fp.SnId 
                     left join UserRankWhite r on u.Id=r.Id 
-                    ORDER BY p.KqSnNo,u.MakerCode
+                    ORDER BY u.MakerCode
 
                     //查补贴
-                    select u.MakerCode,u.RealName,u.UserLevel,r.Rank,m.KqSnNo,m.MerchantName,(case when SubsidyType=1 then '直营' else '团队' end) as DirectFlag,
+                    select u.MakerCode,u.RealName,u.UserLevel,r.Rank,(case when SubsidyType=1 then '直营' else '团队' end) as DirectFlag,
                     k.Name,CreditTradeAmt,SubsidyProfit from (
-                    select SubsidyUserId,MerchantId,BrandId,SubsidyType,
+                    select SubsidyUserId,BrandId,SubsidyType,
                     sum(CreditTradeAmt) as CreditTradeAmt,
                     sum(SubsidyProfitRate) as SubsidyProfit
-                    from ProfitSubsidyDetail 
-                    GROUP BY SubsidyUserId,MerchantId,BrandId,SubsidyType
+                    from ProfitSubsidyDetail where TradeMonth='202206' 
+                    GROUP BY SubsidyUserId,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 
                     left join UserRankWhite r on u.Id=r.Id 
 
                     // TODO:做到后台查询,换绑机器遗漏交易额补差
@@ -391,7 +396,7 @@ namespace MySystem
 
             */
 
-            int PageSize = 20;
+            int PageSize = 500;
             int SkipNum = (PageNum - 1) * PageSize;
             string LimitString = " limit " + PageSize;
             if(PageNum > 1)
@@ -411,9 +416,9 @@ namespace MySystem
                 {
                     sqlstr = "select UserId,QueryCount,sum(HelpDirectDebitTradeAmt),sum(NotHelpDirectDebitTradeAmt),sum(HelpDirectDebitCapTradeAmt),sum(NotHelpDirectDebitCapTradeAmt),sum(HelpDirectDebitCapNum),sum(NotHelpDirectDebitCapNum) from TradeDaySummary where TradeDate='" + Date + "' and SeoTitle='self' and BrandId=" + BrandId + " group by UserId,QueryCount having sum(HelpDirectDebitTradeAmt)>0 or sum(NotHelpDirectDebitTradeAmt)>0 or sum(HelpDirectDebitCapTradeAmt)>0 or sum(NotHelpDirectDebitCapTradeAmt)>0 order by UserId" + LimitString;
                 }
-                function.WriteLog(sqlstr, "分润监控日志");
+                function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + ":" + sqlstr, "分润监控日志");
                 DataTable dt = dbconn.dtable(sqlstr);
-                function.WriteLog(dt.Rows.Count.ToString(), "分润监控日志");
+                function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + ":" + dt.Rows.Count.ToString(), "分润监控日志");
                 if(dt.Rows.Count > 0)
                 {
                     foreach (DataRow dr in dt.Rows)
@@ -428,6 +433,7 @@ namespace MySystem
                             int Days = int.Parse(RedisDbconn.Instance.Get<string>("pobjrule:" + BrandId + ":HelpPolicy:Days")); //天数
                             if (BankCardType == 0)
                             {
+                                function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + ":借记卡", "分润监控日志");
                                 decimal HelpDirectDebitTradeAmt = decimal.Parse(dr[2].ToString()); //借记卡扶持期交易额
                                 decimal NotHelpDirectDebitTradeAmt = decimal.Parse(dr[3].ToString()); //借记卡稳定期交易额
                                 decimal HelpDirectDebitCapTradeAmt = decimal.Parse(dr[4].ToString()); //借记卡扶持期封顶交易额
@@ -455,6 +461,7 @@ namespace MySystem
                             }
                             else
                             {
+                                function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + ":贷记卡", "分润监控日志");
                                 decimal HelpDirectTradeAmt = decimal.Parse(dr[2].ToString()); //贷记卡扶持期交易额
                                 decimal NotHelpDirectTradeAmt = decimal.Parse(dr[3].ToString()); //贷记卡稳定期交易额
                                 int maxLevel = obj.MaxLevel; //最大等级
@@ -465,7 +472,7 @@ namespace MySystem
                                 {
                                     ParentNav = ",0,";
                                 }
-                                function.WriteLog(ParentNav, "分润监控日志");
+                                function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + ":" + ParentNav, "分润监控日志");
                                 if (!string.IsNullOrEmpty(ParentNav))
                                 {
                                     ParentNav += "," + UserId + ",";
@@ -473,6 +480,7 @@ namespace MySystem
                                     Array.Reverse(ParentNavList); //反转顺序
                                     int level = 0;
                                     DateTime now = DateTime.Now;
+                                    function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + ":扶持期:" + HelpDirectTradeAmt, "分润监控日志");
                                     if (HelpDirectTradeAmt > 0)
                                     {
                                         foreach (string UserIdString in ParentNavList)
@@ -584,10 +592,12 @@ namespace MySystem
                                             curLevel = UserLevel;
                                         }
                                     }
+                                    function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + ":稳定期:" + NotHelpDirectTradeAmt, "分润监控日志");
                                     if (NotHelpDirectTradeAmt > 0)
                                     {
                                         level = 0;
                                         curLevel = 0;
+                                        diffLevelProfit = 0;  //等级级差
                                         foreach (string UserIdString in ParentNavList)
                                         {
                                             level += 1;
@@ -653,6 +663,7 @@ namespace MySystem
                                     }
                                 }
                             }
+                            function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + ":over", "分润监控日志");
                         }
                         catch (Exception ex)
                         {