Kaynağa Gözat

整理升级体系

lichunlei 1 yıl önce
ebeveyn
işleme
ec77bfb6bf

BIN
.DS_Store


BIN
AppStart/.DS_Store


BIN
AppStart/Helper/.DS_Store


+ 36 - 0
AppStart/Helper/HelpProfitTradeSummaryDbconn.cs

@@ -0,0 +1,36 @@
+using System;
+using System.Collections.Generic;
+using Library;
+using System.Linq;
+using System.Data;
+
+namespace MySystem
+{
+    public class HelpProfitTradeSummaryDbconn
+    {
+        public readonly static HelpProfitTradeSummaryDbconn Instance = new HelpProfitTradeSummaryDbconn();
+        public HelpProfitTradeSummaryDbconn()
+        { }
+
+        public decimal GetTrade(int UserId, string TradeDateOrMonth, string kind = "self")
+        {
+            string condition = "";
+            if(TradeDateOrMonth.Length == 8)
+            {
+                condition = " and TradeDate='" + TradeDateOrMonth + "'";
+            }
+            else
+            {
+                condition = " and TradeMonth='" + TradeDateOrMonth + "'";
+            }
+            decimal amt = 0; 
+            DataTable dt = CustomerSqlConn.dtable("select sum(TradeAmount) from HelpProfitUserTradeSummay where UserId=" + UserId + " and SeoTitle='" + kind + "'" + condition, MysqlConn.ReadSqlConnStr);
+            if(dt.Rows.Count > 0)
+            {
+                amt = decimal.Parse(function.CheckNum(dt.Rows[0][0].ToString()));
+            }
+            return amt;
+        }
+
+    }
+}

+ 15 - 199
AppStart/Helper/StatService.cs

@@ -2001,207 +2001,26 @@ namespace MySystem
                 Thread.Sleep(600000);
             }
         }
-        public void StatUserLevelStart()
-        {
-            WebCMSEntities db = new WebCMSEntities();
-            MpMainModels.WebCMSEntities mpmaindb = new MpMainModels.WebCMSEntities();
-            try
-            {
-                OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["Pxc1SqlConnStr"].ToString();
-                function.WriteLog(DateTime.Now.ToString(), "创客升级日志");
-                DateTime start = DateTime.Parse(DateTime.Now.AddMonths(-1).ToString("yyyy-MM") + "-01 00:00:00");
-                DateTime end = start.AddDays(1);
-                string TradeMonth = DateTime.Now.AddMonths(-1).ToString("yyyyMM");
-                List<UserLevelSet> sets = db.UserLevelSet.ToList();
-                bool op = true;
-                int startid = 0;
-                while(op)
-                {
-                    var users = db.Users.Select(m => new { m.Id, m.AuthFlag }).Where(m => m.Id > startid && m.AuthFlag == 1).OrderBy(m => m.Id).Take(500).ToList();
-                    function.WriteLog(users.Count.ToString(), "创客升级日志");
-                    if(users.Count > 0)
-                    {
-                        foreach (var subuser in users)
-                        {
-                            Users user = db.Users.FirstOrDefault(m => m.Id == subuser.Id);
-                            if (user != null)
-                            {
-                                int BeforeLevel = user.UserLevel;
-                                int AfterLevel = 0;
-                                decimal TradeAmount = 0;
-                                //创客团队交易额
-                                bool check = db.TradeDaySummary.Any(m => m.UserId == user.Id && m.TradeMonth == TradeMonth && m.SeoTitle == "team");
-                                if (check)
-                                {
-                                    TradeAmount += db.TradeDaySummary.Where(m => m.UserId == user.Id && m.TradeMonth == TradeMonth && m.SeoTitle == "team").Sum(m => m.HelpNonDirectTradeAmt + m.HelpNonDirectDebitTradeAmt + m.NotHelpNonDirectTradeAmt + m.NotHelpNonDirectDebitTradeAmt + m.ProfitNonDirectTradeAmt + m.ProfitNonDirectDebitTradeAmt);
-                                }
-                                //助利宝团队交易额
-                                DataTable checkdt = OtherMySqlConn.dtable("SELECT SUM(TradeAmount) TradeAmount FROM HelpProfitMerTradeSummay WHERE (MerchantId IN(SELECT MerchantId FROM HelpProfitMerIds WHERE UserId IN(SELECT Id from Users WHERE ParentNav like '%," + user.Id + ",%' OR Id=" + user.Id + "))) AND TradeMonth=" + TradeMonth + "");
-                                if (checkdt.Rows.Count > 0)
-                                {
-                                    TradeAmount += decimal.Parse(function.CheckNum(checkdt.Rows[0]["TradeAmount"].ToString()));
-                                }
-                                //码牌团队交易额
-                                check = mpmaindb.UserAmountSummary.Any(m => m.UserId == user.Id && m.TradeMonth == TradeMonth && m.SeoTitle == "team");
-                                if (check)
-                                {
-                                    TradeAmount += mpmaindb.UserAmountSummary.Where(m => m.UserId == user.Id && m.TradeMonth == TradeMonth && m.SeoTitle == "team").Sum(m => m.TotalAmount);
-                                }
-                                UserLevelSet set = sets.FirstOrDefault(m => m.UpLevelGrowth <= TradeAmount && m.UpLevelIntegral > TradeAmount);
-                                if (set != null)
-                                {
-                                    AfterLevel = set.Id;
-                                }
-
-                                // K6以上计算小市场是否达标
-                                // 升级逻辑
-                                bool upFlag = true;
-                                if(AfterLevel > 5)
-                                {
-                                    DataTable dt = OtherMySqlConn.dtable("select UserId,sum(HelpNonDirectTradeAmt+NotHelpNonDirectTradeAmt+ProfitNonDirectTradeAmt+HelpNonDirectDebitTradeAmt+NotHelpNonDirectDebitTradeAmt+ProfitNonDirectDebitTradeAmt) from TradeDaySummary where UserId in (select Id from Users where ParentUserId=" + user.Id + ") and TradeMonth='" + TradeMonth + "' and SeoTitle='team' group by UserId order by sum(HelpNonDirectTradeAmt+NotHelpNonDirectTradeAmt+ProfitNonDirectTradeAmt+HelpNonDirectDebitTradeAmt+ProfitNonDirectDebitTradeAmt) desc");
-                                    int index = 0;
-                                    decimal TradeAmt = 0;
-                                    decimal BigTradeAmt = 0;
-                                    foreach(DataRow dr in dt.Rows)
-                                    {
-                                        index += 1;
-                                        if(index == 1)
-                                        {
-                                            BigTradeAmt = decimal.Parse(dr[1].ToString());
-                                        }
-                                        else if(index > 1)
-                                        {
-                                            TradeAmt += decimal.Parse(dr[1].ToString());
-                                        }
-                                    }
-                                    if(TradeAmt < 12000000 || BigTradeAmt < 30000000)
-                                    {
-                                        if(AfterLevel > BeforeLevel && BeforeLevel >= 5) //保级,只升不降
-                                        {
-                                            AfterLevel = BeforeLevel;
-                                        }
-                                        else if(AfterLevel > BeforeLevel && BeforeLevel < 5)
-                                        {
-                                            AfterLevel = 5;
-                                        }
-                                        else if(BeforeLevel > 5)
-                                        {
-                                            AfterLevel = 5;
-                                        }
-                                        else
-                                        {
-                                            upFlag = false;
-                                        }
-                                    }
-                                }
-                                if (AfterLevel > BeforeLevel && AfterLevel > 1 && upFlag)
-                                {
-                                    function.WriteLog("升级:" + user.Id.ToString() + BeforeLevel + "->" + AfterLevel, "创客升级日志");
-                                    user.UserLevel = AfterLevel;
-                                    DateTime checkTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00");
-                                    UserRank rank = db.UserRank.FirstOrDefault(m => m.CreateDate >= checkTime && m.UserId == user.Id);
-                                    if(rank == null)
-                                    {
-                                        db.UserRank.Add(new UserRank()
-                                        {
-                                            CreateDate = DateTime.Now,
-                                            UpdateDate = DateTime.Now,
-                                            UserId = user.Id, //创客
-                                            WhiteRank = BeforeLevel,
-                                            Rank = AfterLevel, //当前等级
-                                            StatYear = DateTime.Now.Year, //统计年份
-                                            StatMonth = DateTime.Now.Month, //统计月份
-                                            TradeAmt = TradeAmount, //团队交易总额
-                                            UpgradeFlag = 1, //升级标识
-                                            OperateDate = DateTime.Now, //操作时间
-                                            Status = 1,
-                                        });
-                                        db.SaveChanges();
-                                    }
-                                    else
-                                    {
-                                        rank.TradeAmt = TradeAmount;
-                                        rank.Rank = AfterLevel;
-                                        db.SaveChanges();
-                                    }
-                                }
-                                // 降级逻辑
-                                if(!upFlag && AfterLevel > 5)
-                                {
-                                    AfterLevel = 5;
-                                }
-                                if (AfterLevel < BeforeLevel && BeforeLevel > 1)
-                                {
-                                    function.WriteLog(user.MakerCode + "-" + user.RealName + ":K" + BeforeLevel + "->K" + AfterLevel, "创客降级日志");
-                                    user.UserLevel = AfterLevel;
-                                    DateTime checkTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00");
-                                    UserRank rank = db.UserRank.FirstOrDefault(m => m.CreateDate >= checkTime && m.UserId == user.Id);
-                                    if(rank == null)
-                                    {
-                                        db.UserRank.Add(new UserRank()
-                                        {
-                                            CreateDate = DateTime.Now,
-                                            UpdateDate = DateTime.Now,
-                                            UserId = user.Id, //创客
-                                            WhiteRank = BeforeLevel,
-                                            Rank = AfterLevel, //当前等级
-                                            StatYear = DateTime.Now.Year, //统计年份
-                                            StatMonth = DateTime.Now.Month, //统计月份
-                                            TradeAmt = TradeAmount, //团队交易总额
-                                            UpgradeFlag = 0, //升级标识
-                                            OperateDate = DateTime.Now, //操作时间
-                                            Status = 1,
-                                        });
-                                        db.SaveChanges();
-                                    }
-                                    else
-                                    {
-                                        rank.TradeAmt = TradeAmount;
-                                        rank.Rank = AfterLevel;
-                                        rank.Status = 1;
-                                        db.SaveChanges();
-                                    }
-                                }
-                            }
-                            startid = subuser.Id;
-                        }
-                        function.WriteLog(startid.ToString(), "创客升级日志");
-                    }
-                    else
-                    {
-                        op = false;
-                    }
-                }
-                function.WriteLog(DateTime.Now.ToString(), "创客升级日志");
-            }
-            catch (Exception ex)
-            {
-                function.WriteLog(ex.ToString(), "创客升级异常");
-            }
-            db.Dispose();
-            mpmaindb.Dispose();
-
-            RedisDbconn.Instance.AddList("DoTableEveryMonthQueue", "1");
-        }
 
         public void StatUserLevelStartNew()
         {
             WebCMSEntities db = new WebCMSEntities();
+            ReadModels.WebCMSEntities rdb = new ReadModels.WebCMSEntities();
             MpMainModels.WebCMSEntities mpmaindb = new MpMainModels.WebCMSEntities();
             MpMainModels2.WebCMSEntities mpmaindb2 = new MpMainModels2.WebCMSEntities();
             try
             {
-                OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["Pxc1SqlConnStr"].ToString();
+                OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["ReadSqlConnStr"].ToString();
                 function.WriteLog(DateTime.Now.ToString(), "创客升级日志");
                 DateTime start = DateTime.Parse(DateTime.Now.AddMonths(-1).ToString("yyyy-MM") + "-01 00:00:00");
                 DateTime end = start.AddDays(1);
                 string TradeMonth = DateTime.Now.AddMonths(-1).ToString("yyyyMM");
-                List<UserLevelSet> sets = db.UserLevelSet.ToList();
+                List<ReadModels.UserLevelSet> sets = rdb.UserLevelSet.ToList();
                 bool op = true;
                 int startid = 138681;
                 while(op)
                 {
-                    var users = db.Users.Select(m => new { m.Id, m.AuthFlag }).Where(m => m.Id > startid && m.AuthFlag == 1).OrderBy(m => m.Id).Take(500).ToList();
+                    var users = rdb.Users.Select(m => new { m.Id, m.AuthFlag }).Where(m => m.Id > startid && m.AuthFlag == 1).OrderBy(m => m.Id).Take(500).ToList();
                     function.WriteLog(users.Count.ToString(), "创客升级日志");
                     if(users.Count > 0)
                     {
@@ -2214,17 +2033,13 @@ namespace MySystem
                                 int AfterLevel = 0;
                                 decimal TradeAmount = 0;
                                 //创客团队交易额
-                                bool check = db.TradeDaySummary.Any(m => m.UserId == user.Id && m.TradeMonth == TradeMonth && m.SeoTitle == "team");
+                                bool check = rdb.TradeDaySummary.Any(m => m.UserId == user.Id && m.TradeMonth == TradeMonth && m.SeoTitle == "team");
                                 if (check)
                                 {
-                                    TradeAmount += db.TradeDaySummary.Where(m => m.UserId == user.Id && m.TradeMonth == TradeMonth && m.SeoTitle == "team").Sum(m => m.HelpNonDirectTradeAmt + m.HelpNonDirectDebitTradeAmt + m.NotHelpNonDirectTradeAmt + m.NotHelpNonDirectDebitTradeAmt + m.ProfitNonDirectTradeAmt + m.ProfitNonDirectDebitTradeAmt);
+                                    TradeAmount += rdb.TradeDaySummary.Where(m => m.UserId == user.Id && m.TradeMonth == TradeMonth && m.SeoTitle == "team").Sum(m => m.HelpNonDirectTradeAmt + m.HelpNonDirectDebitTradeAmt + m.NotHelpNonDirectTradeAmt + m.NotHelpNonDirectDebitTradeAmt + m.ProfitNonDirectTradeAmt + m.ProfitNonDirectDebitTradeAmt);
                                 }
                                 //助利宝团队交易额
-                                DataTable checkdt = OtherMySqlConn.dtable("SELECT SUM(TradeAmount) TradeAmount FROM HelpProfitMerTradeSummay WHERE (MerchantId IN(SELECT MerchantId FROM HelpProfitMerIds WHERE UserId IN(SELECT Id from Users WHERE ParentNav like '%," + user.Id + ",%' OR Id=" + user.Id + "))) AND TradeMonth=" + TradeMonth + "");
-                                if (checkdt.Rows.Count > 0)
-                                {
-                                    TradeAmount += decimal.Parse(function.CheckNum(checkdt.Rows[0]["TradeAmount"].ToString()));
-                                }
+                                TradeAmount += HelpProfitTradeSummaryDbconn.Instance.GetTrade(user.Id, TradeMonth, "team");
                                 //码牌团队交易额(直联)
                                 check = mpmaindb.UserAmountSummary.Any(m => m.UserId == user.Id && m.TradeMonth == TradeMonth && m.SeoTitle == "team");
                                 if (check)
@@ -2238,12 +2053,12 @@ namespace MySystem
                                     TradeAmount += mpmaindb2.UserAmountSummary.Where(m => m.UserId == user.Id && m.TradeMonth == TradeMonth && m.SeoTitle == "team" && m.IsAct == 1).Sum(m => m.TotalAmount) * 4;
                                 }
                                 //广电卡扶持期按1万/张计入职级
-                                check = db.UserTradeMonthSummary.Any(m => m.UserId == user.Id && m.TradeMonth == TradeMonth && m.SeoTitle == "team" && m.BrandId == 14);
+                                check = rdb.UserTradeMonthSummary.Any(m => m.UserId == user.Id && m.TradeMonth == TradeMonth && m.SeoTitle == "team" && m.BrandId == 14);
                                 if (check)
                                 {
-                                    TradeAmount += db.UserTradeMonthSummary.Where(m => m.UserId == user.Id && m.TradeMonth == TradeMonth && m.SeoTitle == "team" && m.BrandId == 14).Sum(m => m.ActiveBuddyMerStatus) * 10000;
+                                    TradeAmount += rdb.UserTradeMonthSummary.Where(m => m.UserId == user.Id && m.TradeMonth == TradeMonth && m.SeoTitle == "team" && m.BrandId == 14).Sum(m => m.ActiveBuddyMerStatus) * 10000;
                                 }
-                                UserLevelSet set = sets.FirstOrDefault(m => m.UpLevelGrowth <= TradeAmount && m.UpLevelIntegral > TradeAmount);
+                                ReadModels.UserLevelSet set = sets.FirstOrDefault(m => m.UpLevelGrowth <= TradeAmount && m.UpLevelIntegral > TradeAmount);
                                 if (set != null)
                                 {
                                     AfterLevel = set.Id;
@@ -2320,7 +2135,7 @@ namespace MySystem
                                         rank.Rank = AfterLevel;
                                         db.SaveChanges();
                                     }
-                                    UserRankWhite rankWhite = db.UserRankWhite.FirstOrDefault(m => m.Id == user.Id);
+                                    var rankWhite = rdb.UserRankWhite.FirstOrDefault(m => m.Id == user.Id);
                                     if(rankWhite != null)
                                     {
                                         if(Utils.Instance.GetUserLevel(user.Id) >= rankWhite.Rank)
@@ -2371,7 +2186,7 @@ namespace MySystem
                                         rank.Status = 1;
                                         db.SaveChanges();
                                     }
-                                    UserRankWhite rankWhite = db.UserRankWhite.FirstOrDefault(m => m.Id == user.Id);
+                                    var rankWhite = rdb.UserRankWhite.FirstOrDefault(m => m.Id == user.Id);
                                     if(rankWhite != null)
                                     {
                                         if(Utils.Instance.GetUserLevel(user.Id) < rankWhite.Rank)
@@ -2399,12 +2214,12 @@ namespace MySystem
                 startid = 0;
                 while(op)
                 {
-                    var users = db.Users.Select(m => new { m.Id, m.AuthFlag, m.UserLevel }).Where(m => m.Id > startid && m.AuthFlag == 1 && m.UserLevel == 0).OrderBy(m => m.Id).Take(50).ToList();
+                    var users = rdb.Users.Select(m => new { m.Id, m.AuthFlag, m.UserLevel }).Where(m => m.Id > startid && m.AuthFlag == 1 && m.UserLevel == 0).OrderBy(m => m.Id).Take(50).ToList();
                     if(users.Count > 0)
                     {
                         foreach (var subuser in users)
                         {
-                            bool hasOrder = db.Orders.Any(m => m.UserId == subuser.Id && m.Status > 0 && productIds.Contains(m.ProductId));
+                            bool hasOrder = rdb.Orders.Any(m => m.UserId == subuser.Id && m.Status > 0 && productIds.Contains(m.ProductId));
                             if(hasOrder)
                             {
                                 Utils.Instance.LeaderPreUserLevel(subuser.Id, 1, DateTime.Parse("2025-01-01 00:00:00"));
@@ -2443,6 +2258,7 @@ namespace MySystem
                 function.WriteLog(ex.ToString(), "创客升级异常");
             }
             db.Dispose();
+            rdb.Dispose();
             mpmaindb.Dispose();
             mpmaindb2.Dispose();
 

+ 1 - 0
Config/MysqlConn.cs

@@ -5,6 +5,7 @@ namespace MySystem
     public class MysqlConn
     {
         public static string SqlConnStr = ConfigurationManager.AppSettings["SqlConnStr"].ToString();
+        public static string ReadSqlConnStr = ConfigurationManager.AppSettings["ReadSqlConnStr"].ToString();
         public static string OpSqlConnStr = ConfigurationManager.AppSettings["OpSqlConnStr"].ToString();
         public static string RdsStatSqlConnStr = ConfigurationManager.AppSettings["RdsStatSqlConnStr"].ToString();
         public static string StatSqlConnStr = ConfigurationManager.AppSettings["MainSqlConnStr"].ToString();

+ 5 - 5
Util/Utils.cs

@@ -161,13 +161,13 @@ namespace MySystem
         #region 获取创客职级
         public int GetUserLevel(int Id)
         {
-            WebCMSEntities db = new WebCMSEntities();
+            ReadModels.WebCMSEntities db = new ReadModels.WebCMSEntities();
             DateTime now = DateTime.Now;
             List<int> Levels = new List<int>();
-            Users user = db.Users.FirstOrDefault(m => m.Id == Id) ?? new Users();
-            UserRankWhite userRank = db.UserRankWhite.FirstOrDefault(m => m.Id == Id && m.UpdateDate > now) ?? new UserRankWhite();
-            LeaderRankWhite leaderRank = db.LeaderRankWhite.FirstOrDefault(m => m.Id == Id && m.UpdateDate > now) ?? new LeaderRankWhite();
-            OperatorRankWhite operatorRank = db.OperatorRankWhite.FirstOrDefault(m => m.Id == Id && m.UpdateDate > now) ?? new OperatorRankWhite();
+            ReadModels.Users user = db.Users.FirstOrDefault(m => m.Id == Id) ?? new ReadModels.Users();
+            ReadModels.UserRankWhite userRank = db.UserRankWhite.FirstOrDefault(m => m.Id == Id && m.UpdateDate > now) ?? new ReadModels.UserRankWhite();
+            ReadModels.LeaderRankWhite leaderRank = db.LeaderRankWhite.FirstOrDefault(m => m.Id == Id && m.UpdateDate > now) ?? new ReadModels.LeaderRankWhite();
+            ReadModels.OperatorRankWhite operatorRank = db.OperatorRankWhite.FirstOrDefault(m => m.Id == Id && m.UpdateDate > now) ?? new ReadModels.OperatorRankWhite();
             Levels.Add(user.UserLevel);
             Levels.Add(userRank.Rank);
             Levels.Add(leaderRank.Rank);