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

改造记录分表入库模式

lichunlei 2 жил өмнө
parent
commit
cd8fdf195b

+ 37 - 84
AppStart/Helper/SplitTableData/AddRecordService.cs

@@ -37,26 +37,16 @@ namespace MySystem
         {
             while (true)
             {
-                WebCMSEntities db = new WebCMSEntities();
-                int startId = int.Parse(function.ReadInstance("/Rds/TradeRecordId.txt"));
-                List<TradeRecord> list = db.TradeRecord.Where(m => m.Id > startId && m.Status == 0).OrderBy(m => m.Id).Take(100).ToList();
-                if(list.Count > 0)
+                string content = RedisDbconn.Instance.RPop<string>("AddTradeRecordQueue");
+                if(!string.IsNullOrEmpty(content))
                 {
-                    string ids = "";
-                    foreach(TradeRecord sub in list)
-                    {
-                        AddData(Newtonsoft.Json.JsonConvert.SerializeObject(sub), sub.CreateDate.Value.ToString("yyyyMMdd"), "TradeRecord");
-                        ids += sub.Id + ",";
-                        startId = sub.Id;
-                    }
-                    CustomerSqlConn.op("update TradeRecord set RdsStat=1 where Id in (" + ids.TrimEnd(',') + ")", AppConfig.Base.SqlConn);
-                    function.WritePage("/Rds/", "TradeRecordId.txt", startId.ToString());
+                    string[] datalist = content.Split(new string[]{ "#cut#" }, StringSplitOptions.None);
+                    AddData(datalist[0], datalist[1], "TradeRecord");
                 }
                 else
                 {
                     Thread.Sleep(10000);
                 }
-                db.Dispose();
             }
         }
 
@@ -71,26 +61,16 @@ namespace MySystem
         {
             while (true)
             {
-                WebCMSEntities db = new WebCMSEntities();
-                int startId = int.Parse(function.ReadInstance("/Rds/UserAccountRecordId.txt"));
-                List<UserAccountRecord> list = db.UserAccountRecord.Where(m => m.Id > startId && m.Status == 0).OrderBy(m => m.Id).Take(100).ToList();
-                if(list.Count > 0)
+                string content = RedisDbconn.Instance.RPop<string>("AddUserAccountRecordQueue");
+                if(!string.IsNullOrEmpty(content))
                 {
-                    string ids = "";
-                    foreach(UserAccountRecord sub in list)
-                    {
-                        AddData(Newtonsoft.Json.JsonConvert.SerializeObject(sub), sub.CreateDate.Value.ToString("yyyyMMdd"), "UserAccountRecord");
-                        ids += sub.Id + ",";
-                        startId = sub.Id;
-                    }
-                    CustomerSqlConn.op("update UserAccountRecord set RdsStat=1 where Id in (" + ids.TrimEnd(',') + ")", AppConfig.Base.SqlConn);
-                    function.WritePage("/Rds/", "UserAccountRecordId.txt", startId.ToString());
+                    string[] datalist = content.Split(new string[]{ "#cut#" }, StringSplitOptions.None);
+                    AddData(datalist[0], datalist[1], "UserAccountRecord");
                 }
                 else
                 {
                     Thread.Sleep(10000);
                 }
-                db.Dispose();
             }
         }
 
@@ -105,26 +85,16 @@ namespace MySystem
         {
             while (true)
             {
-                SpModels.WebCMSEntities db = new SpModels.WebCMSEntities();
-                int startId = int.Parse(function.ReadInstance("/Rds/SpBindRecordId.txt"));
-                List<SpModels.BindRecord> list = db.BindRecord.Where(m => m.Id > startId && m.Status == 0).OrderBy(m => m.Id).Take(100).ToList();
-                if(list.Count > 0)
+                string content = RedisDbconn.Instance.RPop<string>("AddSpBindRecordQueue");
+                if(!string.IsNullOrEmpty(content))
                 {
-                    string ids = "";
-                    foreach(SpModels.BindRecord sub in list)
-                    {
-                        AddData(Newtonsoft.Json.JsonConvert.SerializeObject(sub), sub.CreateDate.Value.ToString("yyyyMMdd"), "SpBindRecord");
-                        ids += sub.Id + ",";
-                        startId = sub.Id;
-                    }
-                    CustomerSqlConn.op("update BindRecord set RdsStat=1 where Id in (" + ids.TrimEnd(',') + ")", AppConfig.Base.SpSqlConn);
-                    function.WritePage("/Rds/", "BindRecordId.txt", startId.ToString());
+                    string[] datalist = content.Split(new string[]{ "#cut#" }, StringSplitOptions.None);
+                    AddData(datalist[0], datalist[1], "SpBindRecord");
                 }
                 else
                 {
                     Thread.Sleep(10000);
                 }
-                db.Dispose();
             }
         }
 
@@ -139,26 +109,16 @@ namespace MySystem
         {
             while (true)
             {
-                SpModels.WebCMSEntities db = new SpModels.WebCMSEntities();
-                int startId = int.Parse(function.ReadInstance("/Rds/SpMerchantsId.txt"));
-                List<SpModels.Merchants> list = db.Merchants.Where(m => m.Id > startId && m.Status == 0).OrderBy(m => m.Id).Take(100).ToList();
-                if(list.Count > 0)
+                string content = RedisDbconn.Instance.RPop<string>("AddSpMerchantsQueue");
+                if(!string.IsNullOrEmpty(content))
                 {
-                    string ids = "";
-                    foreach(SpModels.Merchants sub in list)
-                    {
-                        AddData(Newtonsoft.Json.JsonConvert.SerializeObject(sub), sub.CreateDate.Value.ToString("yyyyMMdd"), "SpMerchants");
-                        ids += sub.Id + ",";
-                        startId = sub.Id;
-                    }
-                    CustomerSqlConn.op("update Merchants set RdsStat=1 where Id in (" + ids.TrimEnd(',') + ")", AppConfig.Base.SpSqlConn);
-                    function.WritePage("/Rds/", "MerchantsId.txt", startId.ToString());
+                    string[] datalist = content.Split(new string[]{ "#cut#" }, StringSplitOptions.None);
+                    AddData(datalist[0], datalist[1], "SpMerchants");
                 }
                 else
                 {
                     Thread.Sleep(10000);
                 }
-                db.Dispose();
             }
         }
 
@@ -173,26 +133,16 @@ namespace MySystem
         {
             while (true)
             {
-                SpModels.WebCMSEntities db = new SpModels.WebCMSEntities();
-                int startId = int.Parse(function.ReadInstance("/Rds/SpActivateRecordId.txt"));
-                List<SpModels.ActivateRecord> list = db.ActivateRecord.Where(m => m.Id > startId && m.Status == 0).OrderBy(m => m.Id).Take(100).ToList();
-                if(list.Count > 0)
+                string content = RedisDbconn.Instance.RPop<string>("AddSpActivateRecordQueue");
+                if(!string.IsNullOrEmpty(content))
                 {
-                    string ids = "";
-                    foreach(SpModels.ActivateRecord sub in list)
-                    {
-                        AddData(Newtonsoft.Json.JsonConvert.SerializeObject(sub), sub.CreateDate.Value.ToString("yyyyMMdd"), "SpActivateRecord");
-                        ids += sub.Id + ",";
-                        startId = sub.Id;
-                    }
-                    CustomerSqlConn.op("update ActivateRecord set RdsStat=1 where Id in (" + ids.TrimEnd(',') + ")", AppConfig.Base.SpSqlConn);
-                    function.WritePage("/Rds/", "ActivateRecordId.txt", startId.ToString());
+                    string[] datalist = content.Split(new string[]{ "#cut#" }, StringSplitOptions.None);
+                    AddData(datalist[0], datalist[1], "SpActivateRecord");
                 }
                 else
                 {
                     Thread.Sleep(10000);
                 }
-                db.Dispose();
             }
         }
 
@@ -207,26 +157,16 @@ namespace MySystem
         {
             while (true)
             {
-                SpModels.WebCMSEntities db = new SpModels.WebCMSEntities();
-                int startId = int.Parse(function.ReadInstance("/Rds/SpTradeRecordId.txt"));
-                List<SpModels.TradeRecord> list = db.TradeRecord.Where(m => m.Id > startId && m.Status == 0).OrderBy(m => m.Id).Take(100).ToList();
-                if(list.Count > 0)
+                string content = RedisDbconn.Instance.RPop<string>("AddSpTradeRecordQueue");
+                if(!string.IsNullOrEmpty(content))
                 {
-                    string ids = "";
-                    foreach(SpModels.TradeRecord sub in list)
-                    {
-                        AddData(Newtonsoft.Json.JsonConvert.SerializeObject(sub), sub.CreateDate.Value.ToString("yyyyMMdd"), "SpTradeRecord");
-                        ids += sub.Id + ",";
-                        startId = sub.Id;
-                    }
-                    CustomerSqlConn.op("update TradeRecord set RdsStat=1 where Id in (" + ids.TrimEnd(',') + ")", AppConfig.Base.SpSqlConn);
-                    function.WritePage("/Rds/", "TradeRecordId.txt", startId.ToString());
+                    string[] datalist = content.Split(new string[]{ "#cut#" }, StringSplitOptions.None);
+                    AddData(datalist[0], datalist[1], "SpTradeRecord");
                 }
                 else
                 {
                     Thread.Sleep(10000);
                 }
-                db.Dispose();
             }
         }
 
@@ -236,6 +176,19 @@ namespace MySystem
         {
             try
             {
+                if(string.IsNullOrEmpty(RedisDbconn.Instance.Get<string>(table + date)))
+                {
+                    CustomerSqlConn.op(AppConfig.Base.CreatePosMerchantTradeSummay.Replace("#DateTime#", date), AppConfig.Base.StatSqlConn);
+                    RedisDbconn.Instance.Set(table + date, "1");
+                    int sec = 3600 * 25;
+                    if(date.Length == 6)
+                    {
+                        sec = 3600 * 24 * 35;
+                    }
+                    RedisDbconn.Instance.SetExpire(table + date, sec);
+                    Thread.Sleep(2000);
+                }
+
                 JsonData selfDr = JsonMapper.ToObject(content);
                 string fields = FieldDic[table];
                 string val = "";

+ 27 - 0
AppStart/Helper/SplitTableData/StatNewService.cs

@@ -320,6 +320,20 @@ namespace MySystem
                 {
                     TradeDate = TradeDate.Substring(0, 6);
                 }
+
+                if(string.IsNullOrEmpty(RedisDbconn.Instance.Get<string>("PosMerchantTradeSummay" + TradeDate)))
+                {
+                    CustomerSqlConn.op(AppConfig.Base.CreatePosMerchantTradeSummay.Replace("#DateTime#", TradeDate), AppConfig.Base.StatSqlConn);
+                    RedisDbconn.Instance.Set("PosMerchantTradeSummay" + TradeDate, "1");
+                    int sec = 3600 * 25;
+                    if(Kind == 2)
+                    {
+                        sec = 3600 * 24 * 35;
+                    }
+                    RedisDbconn.Instance.SetExpire("PosMerchantTradeSummay" + TradeDate, sec);
+                    Thread.Sleep(2000);
+                }
+
                 string Id = "0";
                 DataTable check = CustomerSqlConn.dtable("select Id from PosMerchantTradeSummay" + TradeDate + " where MerchantId=" + MerchantId + " and BrandId=" + BrandId + "", AppConfig.Base.StatSqlConn);
                 if(check.Rows.Count < 1)
@@ -384,6 +398,19 @@ namespace MySystem
                     TradeDate = TradeDate.Substring(0, 6);
                 }
 
+                if(string.IsNullOrEmpty(RedisDbconn.Instance.Get<string>("UserTradeMonthSummary" + TradeDate)))
+                {
+                    CustomerSqlConn.op(AppConfig.Base.CreateUserTradeMonthSummary.Replace("#DateTime#", TradeDate), AppConfig.Base.StatSqlConn);
+                    RedisDbconn.Instance.Set("UserTradeMonthSummary" + TradeDate, "1");
+                    int sec = 3600 * 25;
+                    if(Kind == 2)
+                    {
+                        sec = 3600 * 24 * 35;
+                    }
+                    RedisDbconn.Instance.SetExpire("UserTradeMonthSummary" + TradeDate, sec);
+                    Thread.Sleep(2000);
+                }
+
                 string Id = "0";
                 DataTable check = CustomerSqlConn.dtable("select Id from UserTradeMonthSummary" + TradeDate + " where UserId=" + UserId + " and BrandId=" + BrandId + " and SeoTitle='self'", AppConfig.Base.StatSqlConn);
                 if(check.Rows.Count < 1)

+ 10 - 0
Startup.cs

@@ -128,6 +128,16 @@ namespace MySystem
             OperateService.Instance.StartPosCouponSaleNum(); //统计运营中心机具券销售量
             
             StatNewService.Instance.StartStat(); //实时统计交易额RDS
+            StatNewService.Instance.StartMer(); //实时统计商户交易额到RDS
+            StatNewService.Instance.StartAct(); //统计激活数到RDS
+
+            AddRecordService.Instance.StartTradeRecord(); //RDS交易记录队列
+            AddRecordService.Instance.StartUserAccountRecord(); //RDS收支明细队列
+            AddRecordService.Instance.StartSpBindRecord(); //RDSSP绑定记录队列
+            AddRecordService.Instance.StartSpMerchants(); //RDSSP商户信息队列
+            AddRecordService.Instance.StartSpActivateRecord(); //RDSSP激活押金记录队列
+            AddRecordService.Instance.StartSpTradeRecord(); //RDSSP交易记录队列
+
             StatNewService.Instance.CreateTable(); //创建RDS分表
             //必须打开的