浏览代码

Merge branch 'feature-新分润' into develop

lichunlei 2 年之前
父节点
当前提交
69ecdc587b

+ 22 - 2
AppStart/Helper/Profit/ProfitCheckHelper.cs

@@ -41,8 +41,11 @@ namespace MySystem
             string StartId = function.CheckInt(function.ReadInstance("/PublicParam/ProfitRewardRecordId/" + Month + ".txt"));
             OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["Pxc1SqlConnStr"].ToString();
             DataTable dt = OtherMySqlConn.dtable("select u.MakerCode,u.RealName,u.UserLevel,r.Rank,(case when ProfitType=1 then '直营' else '团队' end) as DirectFlag,k.Name,BrandId,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(QrCreditTradeAmt) as QrCreditTradeAmt,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 Id>=" + StartId + " and TradeMonth='" + Month + "' 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 UserRankWhite r on u.Id=r.Id and r.CreateDate<'" + DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00' and r.UpdateDate>'" + DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00' ORDER BY u.MakerCode");
+            function.WriteLog(DateTime.Now.ToString() + ":" + dt.Rows.Count, "分润结果检查");
+            int index = 0;
             foreach(DataRow dr in dt.Rows)
             {
+                index += 1;
                 string MakerCode = dr["MakerCode"].ToString();
                 string RealName = dr["RealName"].ToString();
                 int UserLevel = int.Parse(function.CheckInt(dr["UserLevel"].ToString()));
@@ -86,8 +89,13 @@ namespace MySystem
                     DebitTradeAmt = DebitTradeAmt,
                     DebitTradeProfit = DebitTradeProfit,
                 });
-                db.SaveChanges();
+                if(index % 200 == 0)
+                {
+                    db.SaveChanges();
+                }
+                function.WriteLog(DateTime.Now.ToString() + ":" + index, "分润结果检查");
             }
+            db.SaveChanges();
             db.Dispose();
         }
 
@@ -98,8 +106,11 @@ namespace MySystem
             string StartId = function.CheckInt(function.ReadInstance("/PublicParam/ProfitSubsidyDetailId/" + Month + ".txt"));
             OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["Pxc1SqlConnStr"].ToString();
             DataTable dt = OtherMySqlConn.dtable("select u.MakerCode,u.RealName,u.UserLevel,r.Rank,m.KqSnNo,m.MerchantName,(case when SubsidyType=1 then '直营' else '团队' end) as DirectFlag,k.Name,tb.BrandId,CreditTradeAmt,SubsidyProfit from (select SubsidyUserId,MerchantId,BrandId,SubsidyType,sum(CreditTradeAmt) as CreditTradeAmt,sum(SubsidyProfitRate) as SubsidyProfit from ProfitSubsidyDetail where Id>=" + StartId + " and TradeMonth='" + Month + "' 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 left join UserRankWhite r on u.Id=r.Id and r.CreateDate<'" + DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00' and r.UpdateDate>'" + DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00'");
+            function.WriteLog(DateTime.Now.ToString() + ":" + dt.Rows.Count, "分润结果检查");
+            int index = 0;
             foreach(DataRow dr in dt.Rows)
             {
+                index += 1;
                 string MakerCode = dr["MakerCode"].ToString();
                 string RealName = dr["RealName"].ToString();
                 int UserLevel = int.Parse(function.CheckInt(dr["UserLevel"].ToString()));
@@ -127,8 +138,13 @@ namespace MySystem
                     CreditTradeAmt = CreditTradeAmt,
                     SubsidyProfit = SubsidyProfit,
                 });
-                db.SaveChanges();
+                if(index % 200 == 0)
+                {
+                    db.SaveChanges();
+                }
+                function.WriteLog(DateTime.Now.ToString() + ":" + index, "分润结果检查");
             }
+            db.SaveChanges();
             db.Dispose();
         }
 
@@ -143,10 +159,13 @@ namespace MySystem
             {
                 List<int> ids = new List<int>();
                 List<ProfitRewardExport> list = db.ProfitRewardExport.Where(m => m.SeoTitle == Month && m.Id > StartId && m.Status == 0).OrderBy(m => m.MakerCode).ThenBy(m => m.DirectFlag).ThenBy(m => m.BrandName).ThenBy(m => m.Id).Take(50).ToList();
+                function.WriteLog(DateTime.Now.ToString() + ":" + list.Count, "分润结果检查");
                 if(list.Count > 0)
                 {
+                    int index = 0;
                     foreach(ProfitRewardExport sub in list)
                     {
+                        index += 1;
                         int BrandId = sub.Sort;
                         string MakerCode = sub.MakerCode;
                         decimal TotalProfit = 0;
@@ -348,6 +367,7 @@ namespace MySystem
                             db.SaveChanges();
                         }
                         StartId = sub.Id;
+                        function.WriteLog(DateTime.Now.ToString() + "-" + index, "分润结果检查");
                     }
                 }
                 else

+ 27 - 287
AppStart/Helper/Profit/ProfitHelper.cs

@@ -1846,182 +1846,6 @@ namespace MySystem
                                         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.SaveChanges();
                             PageNum += 1;
@@ -2123,11 +1947,7 @@ namespace MySystem
                 DataTable dt = new DataTable();
                 if (BankCardType == 1)
                 {
-                    dt = dbconn.dtable("select SnNo,UserId,QrPayFlag,MerHelpFlag,sum(TradeAmount) from TradeRecord where Id>2030000 and 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,UserId,QrPayFlag,MerHelpFlag,TradeAmount from TradeRecord where Id>2030000 and CreateDate>='" + start + "' and CreateDate<'" + end + "' and BankCardType=0 and BrandId=" + BrandId + LimitString);
+                    dt = ProfitHelperV2.Instance.GetDataTable("select SnNo,UserId,QrPayFlag,MerHelpFlag,TradeAmount TradeAmount from TradeRecord" + Month + " where BrandId=" + BrandId + LimitString);
                 }
                 function.WriteLog("记录条数:" + dt.Rows.Count.ToString(), "老规则分润日志");
                 foreach (DataRow dr in dt.Rows)
@@ -2146,37 +1966,10 @@ namespace MySystem
                             int QrPayFlag = int.Parse(dr["QrPayFlag"].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();
+                            SubUser selfUser = ProfitHelperV2.Instance.GetUser(UserId, Month) ?? new SubUser();
                             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 LevelKindId = GetLevelKindId(BrandId, HelpTime, 0);
-                                // ProfitObjectLevels objlevel = RedisDbconn.Instance.Get<ProfitObjectLevels>("pobjlv" + LevelKindId + ":" + UserLevel); //获取当前等级参数
-                                decimal getLevelProfit = TradeAmt * 0.0006M;
-                                if (getLevelProfit > 1) getLevelProfit = 1;
-                                result.Add(new ProfitResult()
-                                {
-                                    UserId = selfUser.Id,
-                                    UserNav = selfUser.ParentNav,
-                                    Money = PublicFunction.NumberFormat(getLevelProfit),
-                                    ProfitRate = 0.0006M,
-                                    Message = "储蓄卡分润",
-                                    BankCardType = BankCardType,
-                                    QrPayFlag = QrPayFlag,
-                                    BrandId = pos.BrandId,
-                                    DirectFlag = 1,
-                                    IsSubsidy = 0,
-                                    MerchantId = pos.BindMerchantId,
-                                    TradeAmount = TradeAmt,
-                                    HelpFlag = HelpTime,
-                                    PosSn = pos.PosSn,
-                                });
                             }
                             else
                             {
@@ -2184,15 +1977,6 @@ 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 (string.IsNullOrEmpty(ParentNav) && pos.BuyUserId == 1 && pos.UserId == 1)
                                 {
                                     ParentNav = ",0,";
@@ -2209,27 +1993,14 @@ namespace MySystem
                                     {
                                         level += 1;
                                         int uid = int.Parse(UserIdString);
-                                        Users user = dbnew.Users.FirstOrDefault(m => m.Id == uid) ?? new Users();
-                                        int UserLevel = user.UserLevel; //当前会员等级
-                                        UserRankWhite rank = dbnew.UserRankWhite.FirstOrDefault(m => m.Id == user.Id && m.CreateDate < ThisMonth && m.UpdateDate > ThisMonth);
-                                        if (rank != null)
-                                        {
-                                            if (rank.Rank > UserLevel)
-                                            {
-                                                UserLevel = rank.Rank;
-                                            }
-                                        }
+                                        SubUser user = ProfitHelperV2.Instance.GetUser(uid, Month) ?? new SubUser();
+                                        int UserLevel = user.PreUserLevel > user.UserLevel ? user.PreUserLevel : user.UserLevel; //当前会员等级
                                         if (curLevel == maxLevel) //判断当前创客是否有直推的激活机具,并且在活动时间内
                                         {
                                             break;
                                         }
                                         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 LevelKindId = GetLevelKindId(BrandId, HelpTime, 1);
                                             ProfitObjectLevels objlevel = RedisDbconn.Instance.Get<ProfitObjectLevels>("pobjlv" + LevelKindId + ":" + UserLevel); //获取当前等级参数
                                             if (objlevel != null)
@@ -2250,70 +2021,39 @@ namespace MySystem
                                                 {
                                                     diffLevelProfit = money;
                                                 }
-                                                if (getLevelProfit >= obj.MinProfitVal)
-                                                {
-                                                    result.Add(new ProfitResult()
-                                                    {
-                                                        UserId = user.Id,
-                                                        UserNav = user.ParentNav,
-                                                        Money = PublicFunction.NumberFormat(getLevelProfit),
-                                                        ProfitRate = objlevel.Percents,
-                                                        Message = "交易分润",
-                                                        BankCardType = BankCardType,
-                                                        QrPayFlag = QrPayFlag,
-                                                        DirectFlag = selfUser.Id == user.Id ? 1 : 0,
-                                                        BrandId = pos.BrandId,
-                                                        IsSubsidy = 0,
-                                                        MerchantId = pos.BindMerchantId,
-                                                        TradeAmount = TradeAmt,
-                                                        HelpFlag = HelpTime,
-                                                        PosSn = pos.PosSn,
-                                                    });
-                                                }
 
                                                 // 分润补贴
                                                 if (HelpTime == 1 && level == 1)
                                                 {
                                                     int SubsidyUserId = pos.BuyUserId;
-                                                    Users subuser = dbnew.Users.FirstOrDefault(m => m.Id == SubsidyUserId) ?? new Users();
-                                                    int subUserLevel = subuser.UserLevel;
+                                                    SubUser subuser = ProfitHelperV2.Instance.GetUser(SubsidyUserId, Month) ?? new SubUser();
+                                                    int subUserLevel = subuser.PreUserLevel > subuser.UserLevel ? subuser.PreUserLevel : subuser.UserLevel;
                                                     if(subUserLevel < 5)
                                                     {
-                                                        UserRankWhite subrank = dbnew.UserRankWhite.FirstOrDefault(m => m.Id == subuser.Id && m.CreateDate < ThisMonth && m.UpdateDate > ThisMonth);
-                                                        if (subrank != null)
-                                                        {
-                                                            if (subrank.Rank > subUserLevel)
-                                                            {
-                                                                subUserLevel = subrank.Rank;
-                                                            }
-                                                        }
-                                                        if(subUserLevel < 5)
+                                                        ProfitObjectLevels sublevel = RedisDbconn.Instance.Get<ProfitObjectLevels>("pobjlv" + LevelKindId + ":" + subUserLevel); //获取当前等级参数
+                                                        if (sublevel != null)
                                                         {
-                                                            ProfitObjectLevels sublevel = RedisDbconn.Instance.Get<ProfitObjectLevels>("pobjlv" + LevelKindId + ":" + subUserLevel); //获取当前等级参数
-                                                            if (sublevel != null)
+                                                            decimal otherPercent = 0.001M - sublevel.Percents;
+                                                            decimal otherMoney = TradeAmt * otherPercent;
+                                                            if (otherMoney >= obj.MinProfitVal)
                                                             {
-                                                                decimal otherPercent = 0.001M - sublevel.Percents;
-                                                                decimal otherMoney = TradeAmt * otherPercent;
-                                                                if (otherMoney >= obj.MinProfitVal)
+                                                                result.Add(new ProfitResult()
                                                                 {
-                                                                    result.Add(new ProfitResult()
-                                                                    {
-                                                                        UserId = subuser.Id,
-                                                                        UserNav = subuser.ParentNav,
-                                                                        Money = PublicFunction.NumberFormat(otherMoney),
-                                                                        ProfitRate = otherPercent,
-                                                                        Message = "分润补贴",
-                                                                        BankCardType = BankCardType,
-                                                                        QrPayFlag = QrPayFlag,
-                                                                        DirectFlag = 1,
-                                                                        BrandId = pos.BrandId,
-                                                                        IsSubsidy = 1,
-                                                                        MerchantId = pos.BindMerchantId,
-                                                                        TradeAmount = TradeAmt,
-                                                                        HelpFlag = HelpTime,
-                                                                        PosSn = pos.PosSn,
-                                                                    });
-                                                                }
+                                                                    UserId = subuser.Id,
+                                                                    UserNav = subuser.ParentNav,
+                                                                    Money = PublicFunction.NumberFormat(otherMoney),
+                                                                    ProfitRate = otherPercent,
+                                                                    Message = "分润补贴",
+                                                                    BankCardType = BankCardType,
+                                                                    QrPayFlag = QrPayFlag,
+                                                                    DirectFlag = 1,
+                                                                    BrandId = pos.BrandId,
+                                                                    IsSubsidy = 1,
+                                                                    MerchantId = pos.BindMerchantId,
+                                                                    TradeAmount = TradeAmt,
+                                                                    HelpFlag = HelpTime,
+                                                                    PosSn = pos.PosSn,
+                                                                });
                                                             }
                                                         }
                                                     }

+ 95 - 143
AppStart/Helper/Profit/ProfitHelperV2.cs

@@ -35,27 +35,28 @@ namespace MySystem
         }
         public void StatProfitDo()
         {
-            DateTime check = DateTime.Parse(DateTime.Now.AddMonths(-1).ToString("yyyy-MM") + "-01 00:00:00");
-            DateTime end = DateTime.Parse(check.AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd") + " 00:00:00");
-            while (check <= end)
+            while (true)
             {
-                StatProfitEveryDay(check.ToString("yyyyMMdd"));
-                check = check.AddDays(1);
+                string content = RedisDbconn.Instance.RPop<string>("DoProfitQueue");
+                if(!string.IsNullOrEmpty(content))
+                {
+                    StatProfiting();
+                }
+                else
+                {
+                    Thread.Sleep(60000);
+                }
             }
-
-            RedisDbconn.Instance.AddList("ResetSmallStoreQueue", "1");
-            ProfitHelper.Instance.StatProfit();
         }
-        public void StatProfitEveryDay(object sender)
+        public void StatProfiting()
         {
-            string Date = sender.ToString();
-            string Month = Date.Substring(0, 6);
-            string check = function.ReadInstance("/ProfitStat/" + Date + ".txt");
+            string Month = DateTime.Now.AddMonths(-1).ToString("yyyyMM");
+            string check = function.ReadInstance("/ProfitStat/" + Month + "-1.txt");
             if (!string.IsNullOrEmpty(check))
             {
                 return;
             }
-            function.WritePage("/ProfitStat/", Date + ".txt", DateTime.Now.ToString());
+            function.WritePage("/ProfitStat/", Month + "-1.txt", DateTime.Now.ToString());
             WebCMSEntities db = new WebCMSEntities();
             for (int i = 1; i <= 9; i++) //品牌
             {
@@ -65,8 +66,8 @@ namespace MySystem
                     bool op = true;
                     while(op)
                     {
-                        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(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + ":" + "BrandId:" + i + ",BankCardType:" + j + ",Month:" + Month + ",PageNum:" + PageNum, "分润监控日志");
+                        List<ProfitResult> result = StartProftForPosByDate(i, j, Month, PageNum);
                         function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + ":" + "result:" + result.Count, "分润监控日志");
                         function.WriteLog("\r\n", "分润监控日志");
                         if(result.Count > 0)
@@ -92,50 +93,6 @@ 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();
                                 }
                                 else
                                 {
@@ -268,7 +225,6 @@ namespace MySystem
                                         TradeAmt = sub.TradeAmount, //商户交易总额
                                         TradeProfit = sub.Money, //交易分润
                                         TradeMonth = Month, //交易月
-                                        SeoTitle = Date,
                                         RecordNo = RecordNo, //记录单号
                                         TopUserId = TopUserId, //顶级创客
                                         CreditTradeAmt = CreditTradeAmt, //贷记卡交易总金额
@@ -327,8 +283,10 @@ namespace MySystem
                 }
             }
             db.Dispose();
+
+            ProfitHelper.Instance.StatProfit();
         }
-        public List<ProfitResult> StartProftForPosByDate(int BrandId, int BankCardType, string Date, int PageNum = 1)
+        public List<ProfitResult> StartProftForPosByDate(int BrandId, int BankCardType, string Month, int PageNum = 1)
         {
             // 级差
             /*   
@@ -411,14 +369,14 @@ namespace MySystem
                 string sqlstr = "";
                 if (BankCardType == 1)
                 {
-                    sqlstr = "select UserId,QueryCount,sum(HelpDirectTradeAmt),sum(NotHelpDirectTradeAmt),sum(ProfitDirectTradeAmt) from TradeDaySummary where Id>2194000 and TradeDate='" + Date + "' and SeoTitle='self' and BrandId=" + BrandId + " group by UserId,QueryCount having sum(HelpDirectTradeAmt)>0 or sum(NotHelpDirectTradeAmt)>0 or sum(ProfitDirectTradeAmt)>0 order by UserId" + LimitString;
+                    sqlstr = "select UserId,QrPayFlag,HelpDirectTradeAmt,NotHelpDirectTradeAmt,ProfitDirectTradeAmt from CreditTradeDaySummary" + Month + " where BrandId=" + BrandId + LimitString;
                 }
                 if (BankCardType == 0)
                 {
-                    sqlstr = "select UserId,QueryCount,sum(HelpDirectDebitTradeAmt),sum(NotHelpDirectDebitTradeAmt),sum(HelpDirectDebitCapTradeAmt),sum(NotHelpDirectDebitCapTradeAmt),sum(HelpDirectDebitCapNum),sum(NotHelpDirectDebitCapNum) from TradeDaySummary where  Id>2194000 and 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;
+                    sqlstr = "select UserId,QrPayFlag,HelpDirectDebitTradeAmt,NotHelpDirectDebitTradeAmt,HelpDirectDebitCapTradeAmt,NotHelpDirectDebitCapTradeAmt,HelpDirectDebitCapNum,NotHelpDirectDebitCapNum,ProfitDirectDebitTradeAmt,ProfitDirectDebitCapTradeAmt,ProfitDirectDebitCapNum from DebitTradeDaySummary" + Month + " where BrandId=" + BrandId + LimitString;
                 }
                 function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + ":" + sqlstr, "分润监控日志");
-                DataTable dt = dbconn.dtable(sqlstr);
+                DataTable dt = GetDataTable(sqlstr);
                 function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + ":" + dt.Rows.Count.ToString(), "分润监控日志");
                 if(dt.Rows.Count > 0)
                 {
@@ -428,9 +386,9 @@ namespace MySystem
                         try
                         {
                             int UserId = int.Parse(dr["UserId"].ToString());
-                            int QrPayFlag = int.Parse(dr["QueryCount"].ToString());
+                            int QrPayFlag = int.Parse(dr["QrPayFlag"].ToString());
                             List<UserLevelSet> levels = dbnew.UserLevelSet.ToList();
-                            Users selfUser = dbnew.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
+                            SubUser selfUser = GetUser(UserId, Month) ?? new SubUser();
                             int Days = int.Parse(RedisDbconn.Instance.Get<string>("pobjrule:" + BrandId + ":HelpPolicy:Days")); //天数
                             if (BankCardType == 0)
                             {
@@ -440,10 +398,8 @@ namespace MySystem
                                 decimal HelpDirectDebitCapTradeAmt = decimal.Parse(dr[4].ToString()); //借记卡扶持期封顶交易额
                                 decimal NotHelpDirectDebitCapTradeAmt = decimal.Parse(dr[5].ToString()); //借记卡稳定期封顶交易额
                                 int HelpDirectDebitCapNum = int.Parse(dr[6].ToString().Split('.')[0]); //借记卡扶持期封顶交易笔数
-                                int NotHelpDirectDebitCapNum = int.Parse(dr[7].ToString()); //借记卡稳定期封顶交易笔数
+                                int NotHelpDirectDebitCapNum = int.Parse(dr[7].ToString().Split('.')[0]); //借记卡稳定期封顶交易笔数
                                 int UserLevel = selfUser.UserLevel; //当前会员等级
-                                // int LevelKindId = GetLevelKindId(BrandId, HelpTime, 0);
-                                // ProfitObjectLevels objlevel = RedisDbconn.Instance.Get<ProfitObjectLevels>("pobjlv" + LevelKindId + ":" + UserLevel); //获取当前等级参数
                                 decimal getLevelProfit = (HelpDirectDebitTradeAmt + NotHelpDirectDebitTradeAmt - HelpDirectDebitCapTradeAmt - NotHelpDirectDebitCapTradeAmt) * 0.0006M + HelpDirectDebitCapNum + NotHelpDirectDebitCapNum;
                                 result.Add(new ProfitResult()
                                 {
@@ -490,16 +446,8 @@ namespace MySystem
                                         {
                                             level += 1;
                                             int uid = int.Parse(UserIdString);
-                                            Users user = dbnew.Users.FirstOrDefault(m => m.Id == uid) ?? new Users();
-                                            int UserLevel = user.UserLevel; //当前会员等级
-                                            UserRankWhite rank = dbnew.UserRankWhite.FirstOrDefault(m => m.Id == user.Id && m.CreateDate < ThisMonth && m.UpdateDate > ThisMonth);
-                                            if (rank != null)
-                                            {
-                                                if (rank.Rank > UserLevel)
-                                                {
-                                                    UserLevel = rank.Rank;
-                                                }
-                                            }
+                                            SubUser user = GetUser(uid, Month) ?? new SubUser();
+                                            int UserLevel = user.PreUserLevel > user.UserLevel ? user.PreUserLevel : user.UserLevel; //当前会员等级
                                             if (curLevel == maxLevel) //判断当前创客是否有直推的激活机具,并且在活动时间内
                                             {
                                                 break;
@@ -546,50 +494,50 @@ namespace MySystem
                                                     }
 
                                                     // 分润补贴
-                                                    if (level == 1)
-                                                    {
-                                                        int SubsidyUserId = selfUser.ParentUserId;
-                                                        Users subuser = dbnew.Users.FirstOrDefault(m => m.Id == SubsidyUserId) ?? new Users();
-                                                        int subUserLevel = subuser.UserLevel;
-                                                        if (subUserLevel < 5)
-                                                        {
-                                                            UserRankWhite subrank = dbnew.UserRankWhite.FirstOrDefault(m => m.Id == subuser.Id && m.CreateDate < ThisMonth && m.UpdateDate > ThisMonth);
-                                                            if (subrank != null)
-                                                            {
-                                                                if (subrank.Rank > subUserLevel)
-                                                                {
-                                                                    subUserLevel = subrank.Rank;
-                                                                }
-                                                            }
-                                                            if (subUserLevel < 5)
-                                                            {
-                                                                ProfitObjectLevels sublevel = RedisDbconn.Instance.Get<ProfitObjectLevels>("pobjlv" + LevelKindId + ":" + subUserLevel); //获取当前等级参数
-                                                                if (sublevel != null)
-                                                                {
-                                                                    decimal otherPercent = 0.001M - sublevel.Percents;
-                                                                    decimal otherMoney = HelpDirectTradeAmt * otherPercent;
-                                                                    if (otherMoney >= obj.MinProfitVal)
-                                                                    {
-                                                                        result.Add(new ProfitResult()
-                                                                        {
-                                                                            UserId = subuser.Id,
-                                                                            UserNav = subuser.ParentNav,
-                                                                            Money = PublicFunction.NumberFormat(otherMoney),
-                                                                            ProfitRate = otherPercent,
-                                                                            Message = "分润补贴",
-                                                                            BankCardType = BankCardType,
-                                                                            QrPayFlag = QrPayFlag,
-                                                                            DirectFlag = 1,
-                                                                            BrandId = BrandId,
-                                                                            IsSubsidy = 1,
-                                                                            TradeAmount = HelpDirectTradeAmt,
-                                                                            HelpFlag = 1,
-                                                                        });
-                                                                    }
-                                                                }
-                                                            }
-                                                        }
-                                                    }
+                                                    // if (level == 1)
+                                                    // {
+                                                    //     int SubsidyUserId = selfUser.ParentUserId;
+                                                    //     Users subuser = dbnew.Users.FirstOrDefault(m => m.Id == SubsidyUserId) ?? new Users();
+                                                    //     int subUserLevel = subuser.UserLevel;
+                                                    //     if (subUserLevel < 5)
+                                                    //     {
+                                                    //         UserRankWhite subrank = dbnew.UserRankWhite.FirstOrDefault(m => m.Id == subuser.Id && m.CreateDate < ThisMonth && m.UpdateDate > ThisMonth);
+                                                    //         if (subrank != null)
+                                                    //         {
+                                                    //             if (subrank.Rank > subUserLevel)
+                                                    //             {
+                                                    //                 subUserLevel = subrank.Rank;
+                                                    //             }
+                                                    //         }
+                                                    //         if (subUserLevel < 5)
+                                                    //         {
+                                                    //             ProfitObjectLevels sublevel = RedisDbconn.Instance.Get<ProfitObjectLevels>("pobjlv" + LevelKindId + ":" + subUserLevel); //获取当前等级参数
+                                                    //             if (sublevel != null)
+                                                    //             {
+                                                    //                 decimal otherPercent = 0.001M - sublevel.Percents;
+                                                    //                 decimal otherMoney = HelpDirectTradeAmt * otherPercent;
+                                                    //                 if (otherMoney >= obj.MinProfitVal)
+                                                    //                 {
+                                                    //                     result.Add(new ProfitResult()
+                                                    //                     {
+                                                    //                         UserId = subuser.Id,
+                                                    //                         UserNav = subuser.ParentNav,
+                                                    //                         Money = PublicFunction.NumberFormat(otherMoney),
+                                                    //                         ProfitRate = otherPercent,
+                                                    //                         Message = "分润补贴",
+                                                    //                         BankCardType = BankCardType,
+                                                    //                         QrPayFlag = QrPayFlag,
+                                                    //                         DirectFlag = 1,
+                                                    //                         BrandId = BrandId,
+                                                    //                         IsSubsidy = 1,
+                                                    //                         TradeAmount = HelpDirectTradeAmt,
+                                                    //                         HelpFlag = 1,
+                                                    //                     });
+                                                    //                 }
+                                                    //             }
+                                                    //         }
+                                                    //     }
+                                                    // }
                                                 }
                                             }
                                             curLevel = UserLevel;
@@ -605,16 +553,8 @@ namespace MySystem
                                         {
                                             level += 1;
                                             int uid = int.Parse(UserIdString);
-                                            Users user = dbnew.Users.FirstOrDefault(m => m.Id == uid) ?? new Users();
-                                            int UserLevel = user.UserLevel; //当前会员等级
-                                            UserRankWhite rank = dbnew.UserRankWhite.FirstOrDefault(m => m.Id == user.Id && m.CreateDate < ThisMonth && m.UpdateDate > ThisMonth);
-                                            if (rank != null)
-                                            {
-                                                if (rank.Rank > UserLevel)
-                                                {
-                                                    UserLevel = rank.Rank;
-                                                }
-                                            }
+                                            SubUser user = GetUser(uid, Month) ?? new SubUser();
+                                            int UserLevel = user.PreUserLevel > user.UserLevel ? user.PreUserLevel : user.UserLevel; //当前会员等级
                                             if (curLevel == maxLevel) //判断当前创客是否有直推的激活机具,并且在活动时间内
                                             {
                                                 break;
@@ -674,16 +614,8 @@ namespace MySystem
                                         {
                                             level += 1;
                                             int uid = int.Parse(UserIdString);
-                                            Users user = dbnew.Users.FirstOrDefault(m => m.Id == uid) ?? new Users();
-                                            int UserLevel = user.UserLevel; //当前会员等级
-                                            UserRankWhite rank = dbnew.UserRankWhite.FirstOrDefault(m => m.Id == user.Id && m.CreateDate < ThisMonth && m.UpdateDate > now);
-                                            if (rank != null)
-                                            {
-                                                if (rank.Rank > UserLevel)
-                                                {
-                                                    UserLevel = rank.Rank;
-                                                }
-                                            }
+                                            SubUser user = GetUser(uid, Month) ?? new SubUser();
+                                            int UserLevel = user.PreUserLevel > user.UserLevel ? user.PreUserLevel : user.UserLevel; //当前会员等级
                                             if (curLevel == maxLevel) //判断当前创客是否有直推的激活机具,并且在活动时间内
                                             {
                                                 break;
@@ -748,5 +680,25 @@ namespace MySystem
         }
         #endregion
 
+        public SubUser GetUser(int UserId, string Month)
+        {
+            SubUser user = new SubUser();
+            DataTable dt = GetDataTable("select * from Users" + Month + " where Id=" + UserId);
+            if(dt.Rows.Count > 0)
+            {
+                user.Id = int.Parse(dt.Rows[0]["Id"].ToString());
+                user.ParentUserId = int.Parse(dt.Rows[0]["ParentUserId"].ToString());
+                user.ParentNav = dt.Rows[0]["ParentNav"].ToString();
+                user.UserLevel = int.Parse(dt.Rows[0]["UserLevel"].ToString());
+                user.PreUserLevel = int.Parse(dt.Rows[0]["PreUserLevel"].ToString());
+            }
+            return user;
+        }
+
+        public DataTable GetDataTable(string sqlstr)
+        {
+            DataTable dt = CustomerSqlConn.dtable(sqlstr, Library.ConfigurationManager.AppSettings["MainSqlConnStr"].ToString());
+            return dt;
+        }
     }
 }

+ 8 - 9
AppStart/Helper/StatService.cs

@@ -1641,14 +1641,13 @@ namespace MySystem
             {
                 if(DateTime.Now.Day == 3 && DateTime.Now.Hour > 4)
                 {
-                    // string Month = DateTime.Now.AddDays(-1).ToString("yyyy-MM");
-                    // string flag = function.ReadInstance("/ProfitFlag/" + Month + ".txt");
-                    // if (string.IsNullOrEmpty(flag))
-                    // {
-                    //     function.WritePage("/ProfitFlag/", Month + ".txt", DateTime.Now.ToString("HH:mm:ss"));
-                    //     StatUserLevelStart();
-                    // }
-                    ProfitHelperV2.Instance.StatProfit();
+                    string Month = DateTime.Now.AddDays(-1).ToString("yyyy-MM");
+                    string flag = function.ReadInstance("/ProfitFlag/" + Month + ".txt");
+                    if (string.IsNullOrEmpty(flag))
+                    {
+                        function.WritePage("/ProfitFlag/", Month + ".txt", DateTime.Now.ToString("HH:mm:ss"));
+                        StatUserLevelStart();
+                    }
                 }
                 Thread.Sleep(600000);
             }
@@ -1779,7 +1778,7 @@ namespace MySystem
             }
             db.Dispose();
 
-            ProfitHelperV2.Instance.StatProfit(); //统计分润
+            RedisDbconn.Instance.AddList("DoTableEveryMonthQueue", "1");
         }
 
 

+ 13 - 0
AppStart/Tables/SubUser.cs

@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+namespace MySystem
+{
+    public class SubUser
+    {
+        public int Id { get; set; }
+        public int ParentUserId { get; set; }
+        public string ParentNav { get; set; }
+        public int UserLevel { get; set; }
+        public int PreUserLevel { get; set; }
+    }
+}

+ 22 - 21
Startup.cs

@@ -91,8 +91,8 @@ namespace MySystem
             // services.AddHostedService<SycnSpTimer>(); //同步SP数据
 
             // services.AddHostedService<TimerStatTimer>(); //实时统计创客、激活商户数
-            services.AddHostedService<PosTradeStatTimer>(); // 统计头天的交易额、商户型创客、激活奖励、开机奖励
-            services.AddHostedService<AlipayPayBack2Timer>(); //支付宝回调处理
+            // services.AddHostedService<PosTradeStatTimer>(); // 统计头天的交易额、商户型创客、激活奖励、开机奖励
+            // services.AddHostedService<AlipayPayBack2Timer>(); //支付宝回调处理
 
             //services.AddHttpContextAccessor();
 
@@ -185,25 +185,26 @@ namespace MySystem
             });
 
             //必须打开的
-            ActiveRewardTimer.Instance.Start(); //实时处理激活记录
-            ChangePosTimer.Instance.Start(); //售后换新执行机具数据转移
-            SycnSpBindService.Instance.Start(); //同步SP绑定数据
-            SycnSpMerchantService.Instance.Start(); //同步SP商户数据
-            SycnSpActiveService.Instance.Start(); //同步SP激活数据
-            SycnSpTradeService.Instance.Start(); //同步SP交易数据
-            SycnSpChangeBindService.Instance.Start(); //同步SP换绑数据
-            SycnSpUnBindService.Instance.Start(); //同步SP解绑数据
-            RedPackageV2Helper.Instance.Start(); //每天生成红包
-            RedPackageV2Helper.Instance.StartStatTop10(); //红包活动统计排行
-            RedPackageV2Helper.Instance.StartSendPrize(); //红包活动发奖
-            BalancePayBackService.Instance.Start(); //余额支付队列
-            ReservePayBackService.Instance.Start(); //储备金支付队列
-            LeaderPrizeService.Instance.Start(); //大盟主奖励发奖
-            MessageCenterService.Instance.Start(); // 消息队列
-            RecommendActStatService.Instance.Start(); //推荐王奖励数据统计
-            StoreApplyHelper.Instance.Start(); // 每月1号重置仓库额度
-            StoreApplyHelper.Instance.StartEverTime();
-            // StatService.Instance.StatUserLevel(); //升级并分润
+            // ActiveRewardTimer.Instance.Start(); //实时处理激活记录
+            // ChangePosTimer.Instance.Start(); //售后换新执行机具数据转移
+            // SycnSpBindService.Instance.Start(); //同步SP绑定数据
+            // SycnSpMerchantService.Instance.Start(); //同步SP商户数据
+            // SycnSpActiveService.Instance.Start(); //同步SP激活数据
+            // SycnSpTradeService.Instance.Start(); //同步SP交易数据
+            // SycnSpChangeBindService.Instance.Start(); //同步SP换绑数据
+            // SycnSpUnBindService.Instance.Start(); //同步SP解绑数据
+            // RedPackageV2Helper.Instance.Start(); //每天生成红包
+            // RedPackageV2Helper.Instance.StartStatTop10(); //红包活动统计排行
+            // RedPackageV2Helper.Instance.StartSendPrize(); //红包活动发奖
+            // BalancePayBackService.Instance.Start(); //余额支付队列
+            // ReservePayBackService.Instance.Start(); //储备金支付队列
+            // LeaderPrizeService.Instance.Start(); //大盟主奖励发奖
+            // MessageCenterService.Instance.Start(); // 消息队列
+            // RecommendActStatService.Instance.Start(); //推荐王奖励数据统计
+            // StoreApplyHelper.Instance.Start(); // 每月1号重置仓库额度
+            // StoreApplyHelper.Instance.StartEverTime();
+            StatService.Instance.StatUserLevel(); //升级并分润
+            // ProfitHelperV2.Instance.StatProfit();
             //必须打开的
 
             // HelpProfitHelper.Instance.Start(); //助利宝分润

+ 1 - 0
appsettings.json

@@ -19,6 +19,7 @@
     "Database": "KxsMainServer",
     "SqlConnStr": "server=47.109.31.237;port=3306;user=KxsMainServer2;password=FrW8ZfxlcaVdm1r0;database=KxsMainServer2;charset=utf8;",
     "Pxc1SqlConnStr": "server=47.109.31.237;port=3306;user=KxsMainServer2;password=FrW8ZfxlcaVdm1r0;database=KxsMainServer2;charset=utf8;",
+    "MainSqlConnStr": "server=47.109.31.237;port=3306;user=KxsMainServer;password=FrW8ZfxlcaVdm1r0;database=KxsMainServer;charset=utf8;",
     "SpSqlConnStr": "server=47.109.31.237;port=3306;user=KxsSpServer;password=jJ9qKsvwWgQA9xWG;database=KxsSpServer;charset=utf8;",
     "RedisConnStr": "47.109.31.237:6379,password=klm@redis,DefaultDatabase=1,poolsize=500,preheat=50,asyncPipeline=true",
     "IOSAppVersion": "1.0.0",