瀏覽代碼

处理助利宝

lichunlei 2 年之前
父節點
當前提交
ae1f9296ae
共有 5 個文件被更改,包括 212 次插入64 次删除
  1. 97 50
      AppStart/Helper/StatHelpProfitService.cs
  2. 83 5
      Controllers/HomeController.cs
  3. 5 3
      Startup.cs
  4. 25 4
      appsettings.Development.json
  5. 2 2
      appsettings.json

+ 97 - 50
AppStart/Helper/StatHelpProfitService.cs

@@ -284,6 +284,44 @@ namespace MySystem
         private bool CheckAmount(WebCMSEntities db, int MerchantId, int UserId, string TradeMonth)
         {
             HelpProfitAmountSummary Summary = db.HelpProfitAmountSummary.FirstOrDefault(m => m.UserId == UserId && m.TradeMonth == TradeMonth) ?? new HelpProfitAmountSummary();
+            // ====================
+            if(DateTime.Now >= DateTime.Parse("2023-02-01 00:00:00") && DateTime.Now < DateTime.Parse("2023-03-01 00:00:00"))
+            {
+                HelpProfitAmountSummary PreSummary = db.HelpProfitAmountSummary.FirstOrDefault(m => m.UserId == UserId && m.TradeMonth == "202301") ?? new HelpProfitAmountSummary();
+                if(PreSummary.TradeAmount > PreSummary.MaxAmount)
+                {
+                    string conn = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString();
+                    DataTable check = CustomerSqlConn.dtable("SELECT DISTINCT TradeDate FROM HelpProfitMerTradeSummay WHERE MerchantId IN(SELECT MerchantId FROM HelpProfitMerIds WHERE UserId=" + UserId + ") AND TradeMonth='202301'", conn);
+                    if(check.Rows.Count < 31)
+                    {
+                        decimal HelpAmount = 0; //当天总交易额
+                        DataTable dt = CustomerSqlConn.dtable("SELECT SUM(TradeAmount) TradeAmount FROM HelpProfitMerTradeSummay WHERE MerchantId IN(SELECT MerchantId FROM HelpProfitMerIds WHERE UserId=" + UserId + ") AND TradeDate='" + DateTime.Now.ToString("yyyyMMdd") + "'", conn);
+                        if(dt.Rows.Count > 0)
+                        {
+                            HelpAmount = decimal.Parse(function.CheckNum(dt.Rows[0]["TradeAmount"].ToString()));
+                        }
+                        decimal PreHelpAmount = 0; //上月当天总交易额
+                        dt = CustomerSqlConn.dtable("SELECT SUM(TradeAmount) TradeAmount FROM HelpProfitMerTradeSummay WHERE MerchantId IN(SELECT MerchantId FROM HelpProfitMerIds WHERE UserId=" + UserId + ") AND TradeDate='" + DateTime.Now.AddMonths(-1).ToString("yyyyMMdd") + "'", conn);
+                        if(dt.Rows.Count > 0)
+                        {
+                            PreHelpAmount = decimal.Parse(function.CheckNum(dt.Rows[0]["TradeAmount"].ToString()));
+                        }
+                        if(PreHelpAmount > HelpAmount && PreHelpAmount > 0)
+                        {
+                            decimal FixedPercent = TmpEveryDayPercent()[DateTime.Now.Day];
+                            if(PreHelpAmount * FixedPercent > HelpAmount)
+                            {
+                                return true;
+                            }
+                            else
+                            {
+                                return false;
+                            }
+                        }
+                    }
+                }
+            }
+            // ====================
             decimal MaxTradeAmount = Summary.MaxAmount; //当月最大交易总额
             decimal CheckAmount = 500000 < MaxTradeAmount * 0.3M ? 500000 : MaxTradeAmount * 0.3M;
             //当月单台交易额 <= 50万或当月最大交易总额的30%(取小值),则入账
@@ -294,7 +332,19 @@ namespace MySystem
                 //当月总交易额不超过当月最大交易总额,则入账
                 if (Summary.TradeAmount < MaxTradeAmount)
                 {
-                    return true;
+                    decimal EveryDayTradeAmount = MaxTradeAmount / function.get_Random(28, 35); //当月最大交易总额平均值
+                    string conn = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString();
+                    decimal HelpAmount = 0; //当天总交易额                    
+                    DataTable dt = CustomerSqlConn.dtable("SELECT SUM(TradeAmount) TradeAmount FROM HelpProfitMerTradeSummay WHERE MerchantId IN(SELECT MerchantId FROM HelpProfitMerIds WHERE UserId=" + UserId + ") AND TradeDate='" + DateTime.Now.ToString("yyyyMMdd") + "'", conn);
+                    if(dt.Rows.Count > 0)
+                    {
+                        HelpAmount = decimal.Parse(function.CheckNum(dt.Rows[0]["TradeAmount"].ToString()));
+                    }
+                    //当天总交易额不超过当月最大交易总额平均值,则入账
+                    if(HelpAmount < EveryDayTradeAmount)
+                    {
+                        return true;
+                    }
                 }
             }
             return false;
@@ -332,6 +382,40 @@ namespace MySystem
             return obj;
         }
 
+        private Dictionary<int, decimal> TmpEveryDayPercent()
+        {
+            Dictionary<int, decimal> obj = new Dictionary<int, decimal>();
+            obj.Add(1, 0.90M);
+            obj.Add(2, 0.85M);
+            obj.Add(3, 0.83M);
+            obj.Add(4, 0.79M);
+            obj.Add(5, 0.82M);
+            obj.Add(6, 0.75M);
+            obj.Add(7, 0.73M);
+            obj.Add(8, 0.7M);
+            obj.Add(9, 0.68M);
+            obj.Add(10, 0.69M);
+            obj.Add(11, 0.63M);
+            obj.Add(12, 0.66M);
+            obj.Add(13, 0.62M);
+            obj.Add(14, 0.65M);
+            obj.Add(15, 0.6M);
+            obj.Add(16, 0.58M);
+            obj.Add(17, 0.56M);
+            obj.Add(18, 0.53M);
+            obj.Add(19, 0.55M);
+            obj.Add(20, 0.51M);
+            obj.Add(21, 0.53M);
+            obj.Add(22, 0.52M);
+            obj.Add(23, 0.54M);
+            obj.Add(24, 0.52M);
+            obj.Add(25, 0.51M);
+            obj.Add(26, 0.53M);
+            obj.Add(27, 0.51M);
+            obj.Add(28, 0.5M);
+            return obj;
+        }
+
 
         #region 每月重置最大交易总额
         public void ResetMaxTradeAmount()
@@ -361,67 +445,29 @@ namespace MySystem
                 {
                     function.WritePage("/HelpProfitAmountSummary/", TradeMonth + ".txt", DateTime.Now.ToString());
                     WebCMSEntities db = new WebCMSEntities();
-                    OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString();
-                    DataTable userlist = OtherMySqlConn.dtable("select DISTINCT UserId from HelpProfitAmountSummary order by UserId");
+                    string connstr = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString();
+                    DataTable userlist = CustomerSqlConn.dtable("select DISTINCT UserId from HelpProfitAmountSummary order by UserId", connstr);
                     // DataTable userlist = OtherMySqlConn.dtable("select DISTINCT UserId from HelpProfitAmountSummary where (TradeMonth='202209' or TradeMonth='202210') and UserId not in (select UserId from HelpProfitAmountSummary where TradeMonth='202211')");
                     foreach (DataRow user in userlist.Rows)
                     {
                         int UserId = int.Parse(user["UserId"].ToString());
                         int MonthCount = db.HelpProfitAmountSummary.Count(m => m.UserId == UserId) + 1;
                         int Month = MonthCount;
-                        if(Month > 24)
-                        {
-                            Month = 24;
-                        }
-                        decimal MonthAmount1 = 0; //本月额度
-                        decimal MonthAmount2 = 0; //上月额度
-                        decimal MonthAmount3 = 0; //上上月额度
-                        if(Month > 0)
-                        {
-                            MonthAmount1 = EveryMonthFixedVal()[Month]; //上月额度
-                        }
-                        if(Month > 1)
-                        {
-                            MonthAmount2 = EveryMonthFixedVal()[Month - 1]; //上月额度
-                        }
-                        if(Month > 2)
-                        {
-                            MonthAmount3 = EveryMonthFixedVal()[Month - 2]; //上上月额度
-                        }
-                        List<int> MerCounts = new List<int>(); //近3月月台数,包含当月
-                        List<decimal> MaxTradeAmounts = new List<decimal>(); //近3月最大额度,包含当月
-                        int MerCount1 = 0; //本月台数
-                        int MerCount2 = 0; //上月台数
-                        int MerCount3 = 0; //上上月台数
-                        decimal PreMaxTradeAmount = 0; //上月最大额度
-                        decimal PreTradeAmount = 0; //上月创客交易额
-                        List<HelpProfitAmountSummary> Summarys = db.HelpProfitAmountSummary.Where(m => m.UserId == UserId && Convert.ToInt32(m.TradeMonth) <= Convert.ToInt32(TradeMonth)).OrderByDescending(m => m.TradeMonth).Take(3).ToList();
+                        List<int> MerCounts = new List<int>(); //每月台数,包含当月
+                        List<decimal> MaxTradeAmounts = new List<decimal>(); //每月最大固定额度
+                        List<HelpProfitAmountSummary> Summarys = db.HelpProfitAmountSummary.Where(m => m.UserId == UserId && Convert.ToInt32(m.TradeMonth) <= Convert.ToInt32(TradeMonth)).OrderByDescending(m => m.TradeMonth).Take(24).ToList();
+                        int MonthNum = 0;
                         foreach(HelpProfitAmountSummary Summary in Summarys)
                         {
+                            MonthNum += 1;
                             MerCounts.Add(Summary.MerCount);
-                            MaxTradeAmounts.Add(Summary.MaxAmount);
-                        }
-                        if(MerCounts.Count > 0)
-                        {
-                            MerCount1 = MerCounts[0];
-                        }
-                        if(MerCounts.Count > 1)
-                        {
-                            MerCount2 = MerCounts[1];
-                            PreMaxTradeAmount = MaxTradeAmounts[1];
-                            string PreMonthString = DateTime.Parse(TradeMonth.Substring(0, 4) + "-" + TradeMonth.Substring(4, 2) + "-01").AddMonths(-1).ToString("yyyyMM");
-                            DataTable dt = OtherMySqlConn.dtable("SELECT SUM(TradeAmount) TradeAmount FROM HelpProfitMerTradeSummay WHERE MerchantId IN(SELECT MerchantId FROM HelpProfitMerIds WHERE UserId=" + UserId + ") AND TradeMonth=" + PreMonthString + "");
-                            if (dt.Rows.Count > 0)
-                            {
-                                PreTradeAmount = decimal.Parse(function.CheckNum(dt.Rows[0]["TradeAmount"].ToString()));
-                            }
+                            MaxTradeAmounts.Add(EveryMonthFixedVal()[MonthNum]);
                         }
-                        if(MerCounts.Count > 2)
+                        decimal MaxTradeAmount = 0;
+                        for (int i = 0; i < MerCounts.Count; i++)
                         {
-                            MerCount3 = MerCounts[2];
+                            MaxTradeAmount += MerCounts[i] * MaxTradeAmounts[i];
                         }
-                        decimal MaxTradeAmount = MerCount1 * MonthAmount1 + MerCount2 * MonthAmount2 + MerCount3 * MonthAmount3; //当月最大交易总额
-                        MaxTradeAmount = PreMaxTradeAmount - PreTradeAmount + MaxTradeAmount; //上月最大额度-实际交易额+本月最大交易额
                         HelpProfitAmountSummary selfStat = db.HelpProfitAmountSummary.FirstOrDefault(m => m.UserId == UserId && m.TradeMonth == TradeMonth);
                         if(selfStat == null)
                         {
@@ -434,6 +480,7 @@ namespace MySystem
                             db.SaveChanges();
                         }
                         selfStat.MaxAmount = MaxTradeAmount;
+                        // function.WriteLog("update HelpProfitAmountSummary set MaxAmount=" + MaxTradeAmount + " where UserId=" + UserId + " and TradeMonth='" + TradeMonth + "';", "重置助利宝最大交易额");
                     }
                     db.SaveChanges();
                     db.Dispose();

+ 83 - 5
Controllers/HomeController.cs

@@ -47,13 +47,91 @@ namespace MySystem.Controllers
             }
             return View();
         }
+        public string tmp()
+        {
+            string result = "";
+            // string conn = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString();
+            // DataTable dt = CustomerSqlConn.dtable("select UserId from HelpProfitAmountSummary where TradeMonth>MaxAmount and TradeMonth='202301'", conn);
+            // foreach(DataRow dr in dt.Rows)
+            // {
+            //     int UserId = int.Parse(dr["UserId"].ToString());
+            //     decimal HelpAmount = 0; //当天总交易额
+            //     DataTable dtsub = CustomerSqlConn.dtable("SELECT SUM(TradeAmount) TradeAmount FROM HelpProfitMerTradeSummay WHERE MerchantId IN(SELECT MerchantId FROM HelpProfitMerIds WHERE UserId=" + UserId + ") AND TradeDate='20230101'", conn);
+            //     if(dtsub.Rows.Count > 0)
+            //     {
+            //         HelpAmount = decimal.Parse(function.CheckNum(dtsub.Rows[0]["TradeAmount"].ToString()));
+            //     }
+            //     result += test(UserId, HelpAmount);
+            //     result += "\n\n";
+            // }
+            return result;
+        }
 
-        public string test()
+        public string test(int UserId, decimal Amount)
         {
-            StatHelpProfitService.Instance.ResetMaxTradeAmountGo("202209");
-            StatHelpProfitService.Instance.ResetMaxTradeAmountGo("202210");
-            StatHelpProfitService.Instance.ResetMaxTradeAmountGo("202211");
-            return "ok";
+            // StatHelpProfitService.Instance.ResetMaxTradeAmountGo("202301");
+            string result = "";
+            // string conn = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString();
+            // // int UserId = 145842;
+            // Dictionary<string, decimal> dic = new Dictionary<string, decimal>();
+            // dic.Add("31", Amount);
+            // foreach(string day in dic.Keys)
+            // {
+            //     DataTable dt = CustomerSqlConn.dtable("SELECT MerchantId FROM HelpProfitMerIds WHERE UserId=" + UserId + " order by RAND()", conn);
+            //     decimal total = dic[day];
+            //     decimal avg = total / dt.Rows.Count;
+            //     int min = ((int)avg - 100) * 100;
+            //     if(min < 1) min = 1;
+            //     int max = ((int)avg + 100) * 100;
+            //     foreach(DataRow dr in dt.Rows)
+            //     {
+            //         string MerchantId = dr["MerchantId"].ToString();
+            //         decimal amount = (decimal)function.get_Random(min, max) / 100;
+            //         if(total > 0)
+            //         {
+            //             if(total < amount)
+            //             {
+            //                 amount = total;
+            //             }
+            //             DataTable check = CustomerSqlConn.dtable("SELECT Id,TradeAmount FROM HelpProfitMerTradeSummay WHERE MerchantId=" + MerchantId + " and TradeDate='202301" + day + "'", conn);
+            //             if(check.Rows.Count > 0)
+            //             {
+            //                 if(day == "30")
+            //                 {
+            //                     decimal today = decimal.Parse(check.Rows[0]["TradeAmount"].ToString());
+            //                     if(today < amount)
+            //                     {
+            //                         amount -= today;
+            //                     }
+            //                     else
+            //                     {
+            //                         amount = 0;
+            //                     }
+            //                 }
+            //                 if(amount > 0) result += "update HelpProfitMerTradeSummay set TradeAmount=" + amount + " where Id=" + check.Rows[0]["Id"].ToString() + ";\n";
+            //             }
+            //             else
+            //             {
+            //                 if(amount > 0) result += "INSERT INTO HelpProfitMerTradeSummay (`TradeAmount`, `TradeDate`, `TradeMonth`, `MerchantId`) VALUES (" + amount + ", '202301" + day + "', '202301', " + MerchantId + ");\n";
+            //             }
+            //             check = CustomerSqlConn.dtable("SELECT Id FROM HelpProfitMerTradeMonthSummay WHERE MerchantId=" + MerchantId + " and TradeMonth='202301'", conn);
+            //             if(check.Rows.Count > 0)
+            //             {
+            //                 if(amount > 0) result += "update HelpProfitMerTradeMonthSummay set TradeAmount=TradeAmount+" + amount + " where Id=" + check.Rows[0][0].ToString() + ";\n";
+            //             }
+            //             else
+            //             {
+            //                 if(amount > 0) result += "INSERT INTO HelpProfitMerTradeMonthSummay (`TradeAmount`, `TradeMonth`, `MerchantId`) VALUES (" + amount + ", '202301', " + MerchantId + ");\n";
+            //             }
+            //             total -= amount;
+            //         }
+            //         else
+            //         {
+            //             break;
+            //         }
+            //     }
+            // }
+            return result;
         }
     }
 }

+ 5 - 3
Startup.cs

@@ -56,12 +56,13 @@ namespace MySystem
             MySystemLib.SystemPublicFuction.appid = appid;
             MySystemLib.SystemPublicFuction.checkurl = checkurl;
             MySystemLib.SystemPublicFuction.appcheck = "success";
+            string conn = Configuration["Setting:SqlConnStr"];
             Dictionary<string, Dictionary<string, string>> tables = new Dictionary<string, Dictionary<string, string>>();
-            System.Data.DataTable tablecollection = Library.dbconn.dtable("select DISTINCT TABLE_NAME from information_schema.columns where table_schema = 'KxsMainServer'");
+            System.Data.DataTable tablecollection = Library.CustomerSqlConn.dtable("select DISTINCT TABLE_NAME from information_schema.columns where table_schema = 'KxsMainServer'", conn);
             foreach (System.Data.DataRow subtable in tablecollection.Rows)
             {
                 Dictionary<string, string> Columns = new Dictionary<string, string>();
-                System.Data.DataTable columncollection = Library.dbconn.dtable("select COLUMN_NAME,DATA_TYPE from information_schema.columns where table_schema = 'KxsMainServer' and TABLE_NAME='" + subtable["TABLE_NAME"].ToString() + "'");
+                System.Data.DataTable columncollection = Library.CustomerSqlConn.dtable("select COLUMN_NAME,DATA_TYPE from information_schema.columns where table_schema = 'KxsMainServer' and TABLE_NAME='" + subtable["TABLE_NAME"].ToString() + "'", conn);
                 foreach (System.Data.DataRow column in columncollection.Rows)
                 {
                     string datatype = column["DATA_TYPE"].ToString();
@@ -83,11 +84,13 @@ namespace MySystem
             {
                 app.UseDeveloperExceptionPage();
                 // app.UseExceptionHandler("/Home/Error");
+                Library.ConfigurationManager.EnvironmentFlag = 1;
             }
             else
             {
                 app.UseExceptionHandler("/Home/Error");
                 app.UseHsts();
+                Library.ConfigurationManager.EnvironmentFlag = 2;
             }
             Library.function.WritePage("/", "WebRootPath.txt", env.WebRootPath);
             app.UseStaticFiles();
@@ -111,7 +114,6 @@ namespace MySystem
                     name: "default",
                     pattern: "{controller=Home}/{action=Index}/{Id?}");
             });
-
             
             //必须打开的
             StatService.Instance.StartEverDayV2(); //实时统计交易额

+ 25 - 4
appsettings.Development.json

@@ -1,9 +1,30 @@
 {
   "Logging": {
     "LogLevel": {
-      "Default": "Debug",
-      "System": "Information",
-      "Microsoft": "Information"
+      "Default": "Information",
+      "Microsoft": "Warning",
+      "Microsoft.Hosting.Lifetime": "Information"
     }
+  },
+  "AllowedHosts": "*",
+  "Setting": {
+    "AppKey": "",
+    "AppId": "",
+    "CheckUrl": "",
+    "ConnectionStrings": "",
+    "WebServiceUrl": "",
+    "DbSchemeUrl": "",
+    "Host": "http://localhost:5047/",
+    "SourceHost": "http://bs.kexiaoshuang.com/",
+    "Database": "KxsMainServer",
+    "SqlConnStr": "server=47.109.31.237;port=3306;user=KxsMainServer2;password=FrW8ZfxlcaVdm1r0;database=KxsMainServer2;charset=utf8;",
+    "OpSqlConnStr": "server=47.109.31.237;port=3306;user=KxsOpServer;password=r7jwZ8ydLoeswDR4;database=KxsOpServer;charset=utf8;",
+    "IOSAppVersion": "1.0.0",
+    "AndroidAppVersion": "1.0.0",
+    "OSSKey": "iL9dWgBunZRwGbHQ",
+    "OSSSecret": "Q6P2vSNEY2LBNdygO8gUCkBZQpiswZ",
+    "OSSEndpoint": "oss-cn-hangzhou.aliyuncs.com",
+    "OSSBucketName": "yunmuit",
+    "AppSource": "/skin/app/default/"
   }
-}
+}

+ 2 - 2
appsettings.json

@@ -17,8 +17,8 @@
     "Host": "http://localhost:5047/",
     "SourceHost": "http://bs.kexiaoshuang.com/",
     "Database": "KxsMainServer",
-    "SqlConnStr": "server=47.109.31.237;port=3306;user=KxsMainServer2;password=FrW8ZfxlcaVdm1r0;database=KxsMainServer2;charset=utf8;",
-    "OpSqlConnStr": "server=47.109.31.237;port=3306;user=KxsOpServer;password=r7jwZ8ydLoeswDR4;database=KxsOpServer;charset=utf8;",
+    "SqlConnStr": "server=47.108.231.170;port=3306;user=KxsMain;password=mzeqjriUWore0dwT;database=KxsMainServer;charset=utf8;",
+    "OpSqlConnStr": "server=47.108.231.170;port=3306;user=KxsOpServer;password=r7jwZ8ydLoeswDR4;database=KxsOpServer;charset=utf8;",
     "IOSAppVersion": "1.0.0",
     "AndroidAppVersion": "1.0.0",
     "OSSKey": "iL9dWgBunZRwGbHQ",