فهرست منبع

广电卡单独分润

lcl 1 سال پیش
والد
کامیت
04ce18ee4b
1فایلهای تغییر یافته به همراه207 افزوده شده و 1 حذف شده
  1. 207 1
      AppStart/Helper/Profit/ProfitHelperV2.cs

+ 207 - 1
AppStart/Helper/Profit/ProfitHelperV2.cs

@@ -70,7 +70,15 @@ namespace MySystem
                         while(op)
                         {
                             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);
+                            List<ProfitResult> result = new List<ProfitResult>();
+                            if(i == 14)
+                            {
+                                result = StartProftForSimByDate(Month, i, PageNum);
+                            }
+                            else
+                            {
+                                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)
@@ -694,6 +702,204 @@ namespace MySystem
             }
             return result;
         }
+
+        public List<ProfitResult> StartProftForSimByDate(string Month, int BrandId = 14, int PageNum = 1)
+        {
+            int PageSize = 200;
+            int SkipNum = (PageNum - 1) * PageSize;
+            string LimitString = " limit " + PageSize;
+            if(PageNum > 1)
+            {
+                LimitString = " limit " + SkipNum + "," + PageSize;
+            }
+            List<ProfitResult> result = new List<ProfitResult>();
+            ProfitObjects obj = RedisDbconn.Instance.Get<ProfitObjects>("pobj" + BrandId);
+            if (obj.Status == 1) //判断分润是否开启
+            {
+                string sqlstr = "select UserId,sum(HelpTradeAmount),sum(NotHelpTradeAmount) from SimCardDaySummary where TradeMonth='" + Month + "' and SeoTitle='self'" + LimitString;
+                function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + ":" + 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)
+                {
+                    foreach (DataRow dr in dt.Rows)
+                    {
+                        WebCMSEntities dbnew = new WebCMSEntities();
+                        try
+                        {
+                            int UserId = int.Parse(dr["UserId"].ToString());
+                            List<UserLevelSet> levels = dbnew.UserLevelSet.ToList();
+                            SubUser selfUser = GetUser(UserId, Month) ?? new SubUser();
+                            int Days = int.Parse(RedisDbconn.Instance.Get<string>("pobjrule:" + BrandId + ":HelpPolicy:Days")); //天数
+                            
+                            function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "", "广电卡分润监控日志");
+                            decimal HelpDirectTradeAmt = decimal.Parse(dr[1].ToString()); //扶持期交易额
+                            decimal NotHelpDirectTradeAmt = decimal.Parse(dr[2].ToString()); //稳定期交易额
+                            int maxLevel = obj.MaxLevel; //最大等级
+                            decimal diffLevelProfit = 0;  //等级级差
+                            int curLevel = 0; //当前层级的会员等级
+                            string ParentNav = selfUser.ParentNav;
+                            if (string.IsNullOrEmpty(ParentNav))
+                            {
+                                ParentNav = ",0,";
+                            }
+                            function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + ":" + ParentNav, "广电卡分润监控日志");
+                            if (!string.IsNullOrEmpty(ParentNav))
+                            {
+                                ParentNav += "," + UserId + ",";
+                                string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(',');
+                                Array.Reverse(ParentNavList); //反转顺序
+                                int level = 0;
+                                DateTime now = DateTime.Now;
+                                DateTime ThisMonth = DateTime.Parse(DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00");
+                                function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + ":扶持期:" + HelpDirectTradeAmt, "广电卡分润监控日志");
+                                if (HelpDirectTradeAmt > 0)
+                                {
+                                    level = 0;
+                                    curLevel = 0;
+                                    diffLevelProfit = 0;  //等级级差
+                                    decimal curProfit = 0;
+                                    foreach (string UserIdString in ParentNavList)
+                                    {
+                                        level += 1;
+                                        int uid = int.Parse(UserIdString);
+                                        SubUser user = 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 LevelKindId = GetLevelKindId(BrandId, 1, 1);
+                                            ProfitObjectLevels objlevel = RedisDbconn.Instance.Get<ProfitObjectLevels>("pobjlv" + LevelKindId + ":" + UserLevel); //获取当前等级参数
+                                            if (objlevel != null)
+                                            {
+                                                decimal getLevelProfit = 0;  //等级分润
+                                                if (objlevel.Percents > 0)
+                                                {
+                                                    //获取创客分润规则,注册日开始算起,3个自然月内算扶持期
+                                                    getLevelProfit += HelpDirectTradeAmt * objlevel.Percents;
+                                                }
+                                                if (objlevel.AddProfitVal > 0)
+                                                {
+                                                    getLevelProfit += objlevel.AddProfitVal;
+                                                }
+                                                decimal money = getLevelProfit;
+                                                getLevelProfit -= diffLevelProfit;
+                                                if (objlevel.LevelDiff == 1)  //判断是否有级差
+                                                {
+                                                    diffLevelProfit = money;
+                                                }
+                                                if (getLevelProfit >= obj.MinProfitVal)
+                                                {
+                                                    int DirectFlag = selfUser.Id == user.Id ? 1 : 0;
+                                                    result.Add(new ProfitResult()
+                                                    {
+                                                        UserId = user.Id,
+                                                        UserNav = user.ParentNav,
+                                                        Money = PublicFunction.NumberFormat(getLevelProfit),
+                                                        ProfitRate = objlevel.Percents,
+                                                        Message = "交易分润",
+                                                        BankCardType = 0,
+                                                        QrPayFlag = 0,
+                                                        DirectFlag = DirectFlag,
+                                                        BrandId = BrandId,
+                                                        IsSubsidy = 0,
+                                                        TradeAmount = HelpDirectTradeAmt,
+                                                        HelpFlag = 1,
+                                                    });
+                                                    curProfit += getLevelProfit;
+                                                    function.WriteLog(user.Id + "-" + UserLevel + "-" + HelpDirectTradeAmt + "-" + DirectFlag + "-扶持期分润:" + getLevelProfit, "广电卡分润监控日志");
+                                                }
+                                            }
+                                        }
+                                        if(curLevel < UserLevel)
+                                        {
+                                            curLevel = UserLevel;
+                                        }
+                                    }
+                                }
+                                function.WriteLog("------------------------", "广电卡分润监控日志");
+                                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;
+                                        int uid = int.Parse(UserIdString);
+                                        SubUser user = 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 LevelKindId = GetLevelKindId(BrandId, 0, 1);
+                                            ProfitObjectLevels objlevel = RedisDbconn.Instance.Get<ProfitObjectLevels>("pobjlv" + LevelKindId + ":" + UserLevel); //获取当前等级参数
+                                            if (objlevel != null)
+                                            {
+                                                decimal getLevelProfit = 0;  //等级分润
+                                                if (objlevel.Percents > 0)
+                                                {
+                                                    //获取创客分润规则,注册日开始算起,3个自然月内算扶持期
+                                                    getLevelProfit += NotHelpDirectTradeAmt * objlevel.Percents;
+                                                }
+                                                if (objlevel.AddProfitVal > 0)
+                                                {
+                                                    getLevelProfit += objlevel.AddProfitVal;
+                                                }
+                                                decimal money = getLevelProfit;
+                                                getLevelProfit -= diffLevelProfit;
+                                                if (objlevel.LevelDiff == 1)  //判断是否有级差
+                                                {
+                                                    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 = 0,
+                                                        QrPayFlag = 0,
+                                                        BrandId = BrandId,
+                                                        DirectFlag = selfUser.Id == user.Id ? 1 : 0,
+                                                        IsSubsidy = 0,
+                                                        TradeAmount = NotHelpDirectTradeAmt,
+                                                        HelpFlag = 0,
+                                                    });
+                                                }
+                                            }
+                                        }
+                                        if(curLevel < UserLevel)
+                                        {
+                                            curLevel = UserLevel;
+                                        }
+                                    }
+                                }
+                                function.WriteLog("------------------------", "广电卡分润监控日志");
+                            }
+                            function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + ":over", "广电卡分润监控日志");
+                        }
+                        catch (Exception ex)
+                        {
+                            function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "广电卡分润异常");
+                        }
+                        dbnew.Dispose();
+                    }
+                }
+            }
+            return result;
+        }
+
         #endregion
 
         public SubUser GetUser(int UserId, string Month)