Ver código fonte

同步表到新RDS

lcl 2 anos atrás
pai
commit
5f73cf96d5

+ 398 - 0
AppStart/Helper/ProfitService.cs

@@ -0,0 +1,398 @@
+using System;
+using System.Collections.Generic;
+using Library;
+using LitJson;
+using System.Linq;
+using System.Data;
+using System.Threading;
+using MySystem.ProfitModels;
+
+namespace MySystem
+{
+    public class ProfitService
+    {
+        public readonly static ProfitService Instance = new ProfitService();
+        private ProfitService()
+        { }
+
+
+
+        
+        // 统计交易额到RDS
+        public void StartStat()
+        {
+            Thread th = new Thread(StartStatDo);
+            th.IsBackground = true;
+            th.Start();
+        }
+        public void StartStatDo()
+        {
+            while (true)
+            {
+                string content = RedisDbconn.Instance.RPop<string>("ProfitTradeAmountQueue");
+                if(!string.IsNullOrEmpty(content))
+                {
+                    StatTradeAmount(content);
+                }
+                else
+                {
+                    Thread.Sleep(10000);
+                }
+            }
+        }
+        public void StatTradeAmount(string content)
+        {
+            WebCMSEntities db = new WebCMSEntities();
+            PxcModels.WebCMSEntities maindb = new PxcModels.WebCMSEntities();
+            try
+            {
+                JsonData selfDr = JsonMapper.ToObject(content);
+                int UserId = int.Parse(selfDr["UserId"].ToString());
+                PxcModels.Users user = maindb.Users.FirstOrDefault(m => m.Id == UserId) ?? new PxcModels.Users();
+                string ParentNav = user.ParentNav;
+                int BrandId = int.Parse(selfDr["BrandId"].ToString());
+                int BankCardType = int.Parse(selfDr["BankCardType"].ToString());
+                int QrPayFlag = int.Parse(selfDr["QrPayFlag"].ToString());
+                int MerHelpFlag = int.Parse(selfDr["MerHelpFlag"].ToString());
+                int Version = int.Parse(selfDr["Version"].ToString());
+                int CapFlag = int.Parse(selfDr["CapFlag"].ToString());
+                int VipFlag = int.Parse(selfDr["VipFlag"].ToString());
+                int PayType = int.Parse(selfDr["PayType"].ToString());
+                string TradeDate = selfDr["TradeDate"].ToString();
+                decimal TradeAmount = decimal.Parse(selfDr["TradeAmount"].ToString());
+                int TradeCount = int.Parse(selfDr["TradeCount"].ToString());
+                string TradeMonth = TradeDate.Substring(0, 6);
+
+                TradeDaySummary selfStat = db.TradeDaySummary.FirstOrDefault(m => m.UserId == UserId && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.BrandId == BrandId && m.QueryCount == QrPayFlag && m.VipFlag == VipFlag && m.PayType == PayType && m.SeoTitle == "self");
+                if (selfStat == null)
+                {
+                    selfStat = db.TradeDaySummary.Add(new TradeDaySummary()
+                    {
+                        UserId = UserId,
+                        TradeMonth = TradeMonth,
+                        TradeDate = TradeDate,
+                        BrandId = BrandId,
+                        QueryCount = QrPayFlag,
+                        VipFlag = VipFlag,
+                        PayType = PayType,
+                        SeoTitle = "self",
+                    }).Entity;
+                    db.SaveChanges();
+                }
+                if (BankCardType == 0)
+                {
+                    if (Version == 1)
+                    {
+                        selfStat.ProfitDirectDebitTradeAmt += TradeAmount;
+                        if (CapFlag == 1)
+                        {
+                            selfStat.ProfitDirectDebitCapTradeAmt += TradeAmount;
+                            selfStat.ProfitDirectDebitCapNum += TradeCount;
+                        }
+                    }
+                    else if (MerHelpFlag == 1)
+                    {
+                        selfStat.HelpDirectDebitTradeAmt += TradeAmount;
+                        if (CapFlag == 1)
+                        {
+                            selfStat.HelpDirectDebitCapTradeAmt += TradeAmount;
+                            selfStat.HelpDirectDebitCapNum += TradeCount;
+                        }
+                    }
+                    else
+                    {
+                        selfStat.NotHelpDirectDebitTradeAmt += TradeAmount;
+                        if (CapFlag == 1)
+                        {
+                            selfStat.NotHelpDirectDebitCapTradeAmt += TradeAmount;
+                            selfStat.NotHelpDirectDebitCapNum += TradeCount;
+                        }
+                    }
+                }
+                else if (BankCardType != 0)
+                {
+                    if (Version == 1)
+                    {
+                        selfStat.ProfitDirectTradeAmt += TradeAmount;
+                    }
+                    else if (MerHelpFlag == 1)
+                    {
+                        selfStat.HelpDirectTradeAmt += TradeAmount;
+                    }
+                    else
+                    {
+                        selfStat.NotHelpDirectTradeAmt += TradeAmount;
+                    }
+                }
+                ParentNav += "," + UserId + ",";
+                if (!string.IsNullOrEmpty(ParentNav))
+                {
+                    string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(',');
+                    foreach (string NavUserIdString in ParentNavList)
+                    {
+                        int NavUserId = int.Parse(NavUserIdString);
+                        TradeDaySummary teamStat = db.TradeDaySummary.FirstOrDefault(m => m.UserId == NavUserId && m.TradeMonth == TradeMonth && m.TradeDate == TradeDate && m.BrandId == BrandId && m.QueryCount == QrPayFlag && m.VipFlag == VipFlag && m.PayType == PayType && m.SeoTitle == "team");
+                        if (teamStat == null)
+                        {
+                            teamStat = db.TradeDaySummary.Add(new TradeDaySummary()
+                            {
+                                UserId = NavUserId,
+                                TradeMonth = TradeMonth,
+                                TradeDate = TradeDate,
+                                BrandId = BrandId,
+                                QueryCount = QrPayFlag,
+                                VipFlag = VipFlag,
+                                PayType = PayType,
+                                SeoTitle = "team",
+                            }).Entity;
+                            db.SaveChanges();
+                        }
+                        if (BankCardType == 0)
+                        {
+                            if (Version == 1)
+                            {
+                                teamStat.ProfitNonDirectDebitTradeAmt += TradeAmount;
+                                if (CapFlag == 1)
+                                {
+                                    teamStat.ProfitDirectDebitCapTradeAmt += TradeAmount;
+                                    teamStat.ProfitDirectDebitCapNum += TradeCount;
+                                }
+                            }
+                            else if (MerHelpFlag == 1)
+                            {
+                                teamStat.HelpNonDirectDebitTradeAmt += TradeAmount;
+                                if (CapFlag == 1)
+                                {
+                                    teamStat.HelpDirectDebitCapTradeAmt += TradeAmount;
+                                    teamStat.HelpDirectDebitCapNum += TradeCount;
+                                }
+                            }
+                            else
+                            {
+                                teamStat.NotHelpNonDirectDebitTradeAmt += TradeAmount;
+                                if (CapFlag == 1)
+                                {
+                                    teamStat.NotHelpDirectDebitCapTradeAmt += TradeAmount;
+                                    teamStat.NotHelpDirectDebitCapNum += TradeCount;
+                                }
+                            }
+                        }
+                        else if (BankCardType != 0)
+                        {
+                            if (Version == 1)
+                            {
+                                teamStat.ProfitNonDirectTradeAmt += TradeAmount;
+                            }
+                            else if (MerHelpFlag == 1)
+                            {
+                                teamStat.HelpNonDirectTradeAmt += TradeAmount;
+                            }
+                            else
+                            {
+                                teamStat.NotHelpNonDirectTradeAmt += TradeAmount;
+                            }
+                        }
+                    }
+                }
+                
+                db.SaveChanges();
+            }
+            catch (Exception ex)
+            {
+                function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "实时统计交易额日志RDSnew异常");
+            }
+            maindb.Dispose();
+            db.Dispose();
+            function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "实时统计交易额日志RDSnew");
+        }
+
+
+
+        // 补TradeDaySummary数据
+        public void AddTradeDaySummary()
+        {
+            Thread th = new Thread(AddTradeDaySummaryDo);
+            th.IsBackground = true;
+            th.Start();
+        }
+        public void AddTradeDaySummaryDo()
+        {
+            while (true)
+            {
+                if(RedisDbconn.Instance.Get<string>("TradeDaySummaryThreadStatus") == "1")
+                {
+                    TradeDaySummaryDo();
+                }
+                else
+                {
+                    Thread.Sleep(10000);
+                }
+            }
+        }
+        public void TradeDaySummaryDo()
+        {
+            WebCMSEntities db = new WebCMSEntities();
+            PxcModels.WebCMSEntities maindb = new PxcModels.WebCMSEntities();
+            try
+            {
+                int startId = int.Parse(function.ReadInstance("/TradeRecord/TradeDaySummaryId.txt"));
+                List<PxcModels.TradeDaySummary> list = maindb.TradeDaySummary.Where(m => m.Id > startId).OrderBy(m => m.Id).Take(100).ToList();
+                foreach(PxcModels.TradeDaySummary sub in list)
+                {
+                    db.TradeDaySummary.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<TradeDaySummary>(Newtonsoft.Json.JsonConvert.SerializeObject(sub)));
+                    startId = sub.Id;
+                }
+                function.WritePage("/TradeRecord/", "TradeDaySummaryId.txt", startId.ToString());                
+                db.SaveChanges();
+            }
+            catch (Exception ex)
+            {
+                function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "补TradeDaySummary数据异常");
+            }
+            maindb.Dispose();
+            db.Dispose();
+            function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "补TradeDaySummary数据");
+        }
+
+
+        // 同步UserAccountRecord数据
+        public void AddUserAccountRecord()
+        {
+            Thread th = new Thread(AddUserAccountRecordDo);
+            th.IsBackground = true;
+            th.Start();
+        }
+        public void AddUserAccountRecordDo()
+        {
+            while (true)
+            {
+                if(RedisDbconn.Instance.Get<string>("UserAccountRecordThreadStatus") == "1")
+                {
+                    UserAccountRecordDo();
+                }
+                else
+                {
+                    Thread.Sleep(10000);
+                }
+            }
+        }
+        public void UserAccountRecordDo()
+        {
+            WebCMSEntities db = new WebCMSEntities();
+            PxcModels.WebCMSEntities maindb = new PxcModels.WebCMSEntities();
+            try
+            {
+                int startId = int.Parse(function.ReadInstance("/TradeRecord/UserAccountRecordId.txt"));
+                List<PxcModels.UserAccountRecord> list = maindb.UserAccountRecord.Where(m => m.Id > startId).OrderBy(m => m.Id).Take(100).ToList();
+                foreach(PxcModels.UserAccountRecord sub in list)
+                {
+                    db.UserAccountRecord.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<UserAccountRecord>(Newtonsoft.Json.JsonConvert.SerializeObject(sub)));
+                    startId = sub.Id;
+                }
+                function.WritePage("/TradeRecord/", "UserAccountRecordId.txt", startId.ToString());                
+                db.SaveChanges();
+            }
+            catch (Exception ex)
+            {
+                function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "补UserAccountRecord数据异常");
+            }
+            maindb.Dispose();
+            db.Dispose();
+            function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "补UserAccountRecord数据");
+        }
+
+
+        // 同步ProfitRecord数据
+        public void AddProfitRecord()
+        {
+            Thread th = new Thread(AddProfitRecordDo);
+            th.IsBackground = true;
+            th.Start();
+        }
+        public void AddProfitRecordDo()
+        {
+            while (true)
+            {
+                if(RedisDbconn.Instance.Get<string>("ProfitRecordThreadStatus") == "1")
+                {
+                    ProfitRecordDo();
+                }
+                else
+                {
+                    Thread.Sleep(10000);
+                }
+            }
+        }
+        public void ProfitRecordDo()
+        {
+            WebCMSEntities db = new WebCMSEntities();
+            PxcModels.WebCMSEntities maindb = new PxcModels.WebCMSEntities();
+            try
+            {
+                int startId = int.Parse(function.ReadInstance("/TradeRecord/ProfitRecordId.txt"));
+                List<PxcModels.ProfitRecord> list = maindb.ProfitRecord.Where(m => m.Id > startId).OrderBy(m => m.Id).Take(100).ToList();
+                foreach(PxcModels.ProfitRecord sub in list)
+                {
+                    db.ProfitRecord.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<ProfitRecord>(Newtonsoft.Json.JsonConvert.SerializeObject(sub)));
+                    startId = sub.Id;
+                }
+                function.WritePage("/TradeRecord/", "ProfitRecordId.txt", startId.ToString());                
+                db.SaveChanges();
+            }
+            catch (Exception ex)
+            {
+                function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "补ProfitRecord数据异常");
+            }
+            maindb.Dispose();
+            db.Dispose();
+            function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "补ProfitRecord数据");
+        }
+
+
+        // 同步SubsidyRecord数据
+        public void AddSubsidyRecord()
+        {
+            Thread th = new Thread(AddSubsidyRecordDo);
+            th.IsBackground = true;
+            th.Start();
+        }
+        public void AddSubsidyRecordDo()
+        {
+            while (true)
+            {
+                if(RedisDbconn.Instance.Get<string>("SubsidyRecordThreadStatus") == "1")
+                {
+                    SubsidyRecordDo();
+                }
+                else
+                {
+                    Thread.Sleep(10000);
+                }
+            }
+        }
+        public void SubsidyRecordDo()
+        {
+            WebCMSEntities db = new WebCMSEntities();
+            PxcModels.WebCMSEntities maindb = new PxcModels.WebCMSEntities();
+            try
+            {
+                int startId = int.Parse(function.ReadInstance("/TradeRecord/SubsidyRecordId.txt"));
+                List<PxcModels.SubsidyRecord> list = maindb.SubsidyRecord.Where(m => m.Id > startId).OrderBy(m => m.Id).Take(100).ToList();
+                foreach(PxcModels.SubsidyRecord sub in list)
+                {
+                    db.SubsidyRecord.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<SubsidyRecord>(Newtonsoft.Json.JsonConvert.SerializeObject(sub)));
+                    startId = sub.Id;
+                }
+                function.WritePage("/TradeRecord/", "SubsidyRecordId.txt", startId.ToString());                
+                db.SaveChanges();
+            }
+            catch (Exception ex)
+            {
+                function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "补SubsidyRecord数据异常");
+            }
+            maindb.Dispose();
+            db.Dispose();
+            function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "补SubsidyRecord数据");
+        }
+    }
+}

+ 38 - 0
ProfitModels/ProfitRecord.cs

@@ -0,0 +1,38 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem.ProfitModels
+{
+    public partial class ProfitRecord
+    {
+        public int Id { get; set; }
+        public int Sort { get; set; }
+        public int QueryCount { get; set; }
+        public int Status { get; set; }
+        public int Version { get; set; }
+        public DateTime? CreateDate { get; set; }
+        public DateTime? UpdateDate { get; set; }
+        public string CreateMan { get; set; }
+        public string UpdateMan { get; set; }
+        public string SeoTitle { get; set; }
+        public string SeoKeyword { get; set; }
+        public string SeoDescription { get; set; }
+        public int TradeId { get; set; }
+        public string ParentNav { get; set; }
+        public string Remark { get; set; }
+        public int BrandId { get; set; }
+        public ulong DirectFlag { get; set; }
+        public int CapFlag { get; set; }
+        public int QrPayFlag { get; set; }
+        public decimal ProfitAmount { get; set; }
+        public DateTime? ClearDate { get; set; }
+        public DateTime? TradeDate { get; set; }
+        public string SnNo { get; set; }
+        public int MerBuddyType { get; set; }
+        public int HelpMonthCount { get; set; }
+        public ulong MerHelpFlag { get; set; }
+        public string MerNo { get; set; }
+        public int MerchantId { get; set; }
+        public int UserId { get; set; }
+    }
+}

+ 35 - 0
ProfitModels/SubsidyRecord.cs

@@ -0,0 +1,35 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem.ProfitModels
+{
+    public partial class SubsidyRecord
+    {
+        public int Id { get; set; }
+        public int Sort { get; set; }
+        public int QueryCount { get; set; }
+        public int Status { get; set; }
+        public DateTime? CreateDate { get; set; }
+        public DateTime? UpdateDate { get; set; }
+        public string SeoTitle { get; set; }
+        public string SeoKeyword { get; set; }
+        public string SeoDescription { get; set; }
+        public int TradeId { get; set; }
+        public string ParentNav { get; set; }
+        public string Remark { get; set; }
+        public int BrandId { get; set; }
+        public ulong DirectFlag { get; set; }
+        public int CapFlag { get; set; }
+        public int QrPayFlag { get; set; }
+        public decimal ProfitAmount { get; set; }
+        public DateTime? ClearDate { get; set; }
+        public DateTime? TradeDate { get; set; }
+        public string SnNo { get; set; }
+        public int MerBuddyType { get; set; }
+        public int HelpMonthCount { get; set; }
+        public ulong MerHelpFlag { get; set; }
+        public string MerNo { get; set; }
+        public int MerchantId { get; set; }
+        public int UserId { get; set; }
+    }
+}

+ 84 - 0
ProfitModels/TradeDaySummary.cs

@@ -0,0 +1,84 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem.ProfitModels
+{
+    public partial class TradeDaySummary
+    {
+        public int Id { get; set; }
+        public int Sort { get; set; }
+        public int QueryCount { get; set; }
+        public int Status { get; set; }
+        public int Version { get; set; }
+        public DateTime? CreateDate { get; set; }
+        public DateTime? UpdateDate { get; set; }
+        public string CreateMan { get; set; }
+        public string UpdateMan { get; set; }
+        public string SeoTitle { get; set; }
+        public string SeoKeyword { get; set; }
+        public string SeoDescription { get; set; }
+        public int TopUserId { get; set; }
+        public decimal HelpNonDirectNonQrDebitTradeAmt { get; set; }
+        public decimal HelpDirectNonQrDebitTradeAmt { get; set; }
+        public decimal HelpNonDirectQrDebitTradeAmt { get; set; }
+        public decimal HelpDirectQrDebitTradeAmt { get; set; }
+        public decimal HelpNonDirectDebitCapNum { get; set; }
+        public decimal HelpNonDirectDebitCapTradeAmt { get; set; }
+        public decimal HelpNonDirectDebitTradeAmt { get; set; }
+        public decimal HelpDirectDebitCapNum { get; set; }
+        public decimal HelpDirectDebitCapTradeAmt { get; set; }
+        public decimal HelpDirectDebitTradeAmt { get; set; }
+        public decimal HelpNonDirectNonQrCreditTradeAmt { get; set; }
+        public decimal HelpDirectNonQrCreditTradeAmt { get; set; }
+        public decimal HelpNonDirectQrCreditTradeAmt { get; set; }
+        public decimal HelpDirectQrCreditTradeAmt { get; set; }
+        public decimal HelpNonDirectCreditTradeAmt { get; set; }
+        public decimal HelpDirectCreditTradeAmt { get; set; }
+        public decimal HelpNonDirectTradeAmt { get; set; }
+        public decimal HelpDirectTradeAmt { get; set; }
+        public decimal NotHelpNonDirectNonQrDebitTradeAmt { get; set; }
+        public decimal NotHelpDirectNonQrDebitTradeAmt { get; set; }
+        public decimal NotHelpNonDirectQrDebitTradeAmt { get; set; }
+        public decimal NotHelpDirectQrDebitTradeAmt { get; set; }
+        public int NotHelpNonDirectDebitCapNum { get; set; }
+        public decimal NotHelpNonDirectDebitCapTradeAmt { get; set; }
+        public decimal NotHelpNonDirectDebitTradeAmt { get; set; }
+        public int NotHelpDirectDebitCapNum { get; set; }
+        public decimal NotHelpDirectDebitCapTradeAmt { get; set; }
+        public decimal NotHelpDirectDebitTradeAmt { get; set; }
+        public decimal NotHelpNonDirectNonQrCreditTradeAmt { get; set; }
+        public decimal NotHelpDirectNonQrCreditTradeAmt { get; set; }
+        public decimal NotHelpNonDirectQrCreditTradeAmt { get; set; }
+        public decimal NotHelpDirectQrCreditTradeAmt { get; set; }
+        public decimal NotHelpNonDirectCreditTradeAmt { get; set; }
+        public decimal NotHelpDirectCreditTradeAmt { get; set; }
+        public decimal NotHelpNonDirectTradeAmt { get; set; }
+        public decimal NotHelpDirectTradeAmt { get; set; }
+        public string MgrName { get; set; }
+        public string MgrNo { get; set; }
+        public int BrandId { get; set; }
+        public string TradeMonth { get; set; }
+        public string TradeDate { get; set; }
+        public int UserId { get; set; }
+        public int PayType { get; set; }
+        public int VipFlag { get; set; }
+        public decimal ProfitNonDirectNonQrDebitTradeAmt { get; set; }
+        public decimal ProfitDirectNonQrDebitTradeAmt { get; set; }
+        public decimal ProfitNonDirectQrDebitTradeAmt { get; set; }
+        public decimal ProfitDirectQrDebitTradeAmt { get; set; }
+        public decimal ProfitNonDirectDebitCapNum { get; set; }
+        public decimal ProfitNonDirectDebitCapTradeAmt { get; set; }
+        public decimal ProfitNonDirectDebitTradeAmt { get; set; }
+        public decimal ProfitDirectDebitCapNum { get; set; }
+        public decimal ProfitDirectDebitCapTradeAmt { get; set; }
+        public decimal ProfitDirectDebitTradeAmt { get; set; }
+        public decimal ProfitNonDirectNonQrCreditTradeAmt { get; set; }
+        public decimal ProfitDirectNonQrCreditTradeAmt { get; set; }
+        public decimal ProfitNonDirectQrCreditTradeAmt { get; set; }
+        public decimal ProfitDirectQrCreditTradeAmt { get; set; }
+        public decimal ProfitNonDirectCreditTradeAmt { get; set; }
+        public decimal ProfitDirectCreditTradeAmt { get; set; }
+        public decimal ProfitNonDirectTradeAmt { get; set; }
+        public decimal ProfitDirectTradeAmt { get; set; }
+    }
+}

+ 34 - 0
ProfitModels/UserAccountRecord.cs

@@ -0,0 +1,34 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem.ProfitModels
+{
+    public partial class UserAccountRecord
+    {
+        public int Id { get; set; }
+        public int Sort { get; set; }
+        public int QueryCount { get; set; }
+        public int Status { get; set; }
+        public int Version { get; set; }
+        public DateTime? CreateDate { get; set; }
+        public DateTime? UpdateDate { get; set; }
+        public string CreateMan { get; set; }
+        public string UpdateMan { get; set; }
+        public string SeoTitle { get; set; }
+        public string SeoKeyword { get; set; }
+        public string SeoDescription { get; set; }
+        public string TransRecordNo { get; set; }
+        public string Remark { get; set; }
+        public decimal AfterBalanceAmount { get; set; }
+        public decimal BeforeBalanceAmount { get; set; }
+        public decimal AfterFreezeAmount { get; set; }
+        public decimal BeforeFreezeAmount { get; set; }
+        public decimal AfterTotalAmount { get; set; }
+        public decimal BeforeTotalAmount { get; set; }
+        public decimal ChangeAmount { get; set; }
+        public int ProductType { get; set; }
+        public int ChangeType { get; set; }
+        public int UserId { get; set; }
+        public int Kind { get; set; }
+    }
+}

+ 475 - 0
ProfitModels/WebCMSEntities.cs

@@ -0,0 +1,475 @@
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata;
+
+namespace MySystem.ProfitModels
+{
+    public partial class WebCMSEntities : DbContext
+    {
+        public WebCMSEntities()
+        {
+        }
+
+        public WebCMSEntities(DbContextOptions<WebCMSEntities> options)
+            : base(options)
+        {
+        }
+
+        public virtual DbSet<ProfitRecord> ProfitRecord { get; set; }
+        public virtual DbSet<SubsidyRecord> SubsidyRecord { get; set; }
+        public virtual DbSet<TradeDaySummary> TradeDaySummary { get; set; }
+        public virtual DbSet<UserAccountRecord> UserAccountRecord { get; set; }
+
+        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
+        {
+            if (!optionsBuilder.IsConfigured)
+            {
+                optionsBuilder.UseMySql(Library.ConfigurationManager.AppSettings["ProfitSqlConnStr"].ToString(), x => x.ServerVersion("5.7.17-mysql"));
+            }
+        }
+
+        protected override void OnModelCreating(ModelBuilder modelBuilder)
+        {
+            modelBuilder.Entity<ProfitRecord>(entity =>
+            {
+                entity.Property(e => e.Id).HasColumnType("int(11)");
+
+                entity.Property(e => e.BrandId).HasColumnType("int(11)");
+
+                entity.Property(e => e.CapFlag).HasColumnType("int(11)");
+
+                entity.Property(e => e.ClearDate).HasColumnType("datetime");
+
+                entity.Property(e => e.CreateDate).HasColumnType("datetime");
+
+                entity.Property(e => e.CreateMan)
+                    .HasColumnType("varchar(50)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.DirectFlag)
+                    .HasColumnType("bit(1)")
+                    .HasDefaultValueSql("b'0'");
+
+                entity.Property(e => e.HelpMonthCount).HasColumnType("int(11)");
+
+                entity.Property(e => e.MerBuddyType).HasColumnType("int(11)");
+
+                entity.Property(e => e.MerHelpFlag)
+                    .HasColumnType("bit(1)")
+                    .HasDefaultValueSql("b'0'");
+
+                entity.Property(e => e.MerNo)
+                    .HasColumnType("varchar(32)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.MerchantId).HasColumnType("int(11)");
+
+                entity.Property(e => e.ParentNav)
+                    .HasColumnType("varchar(1000)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.ProfitAmount).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.QrPayFlag).HasColumnType("int(11)");
+
+                entity.Property(e => e.QueryCount).HasColumnType("int(11)");
+
+                entity.Property(e => e.Remark)
+                    .HasColumnType("varchar(64)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SeoDescription)
+                    .HasColumnType("varchar(500)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SeoKeyword)
+                    .HasColumnType("varchar(200)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SeoTitle)
+                    .HasColumnType("varchar(100)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SnNo)
+                    .HasColumnType("varchar(32)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Sort).HasColumnType("int(11)");
+
+                entity.Property(e => e.Status).HasColumnType("int(11)");
+
+                entity.Property(e => e.TradeDate).HasColumnType("datetime");
+
+                entity.Property(e => e.TradeId).HasColumnType("int(11)");
+
+                entity.Property(e => e.UpdateDate).HasColumnType("datetime");
+
+                entity.Property(e => e.UpdateMan)
+                    .HasColumnType("varchar(50)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.UserId).HasColumnType("int(11)");
+
+                entity.Property(e => e.Version).HasColumnType("int(11)");
+            });
+
+            modelBuilder.Entity<SubsidyRecord>(entity =>
+            {
+                entity.HasIndex(e => new { e.UserId, e.SeoTitle, e.BrandId })
+                    .HasName("SubsidyRecordIndex");
+
+                entity.Property(e => e.Id).HasColumnType("int(11)");
+
+                entity.Property(e => e.BrandId).HasColumnType("int(11)");
+
+                entity.Property(e => e.CapFlag).HasColumnType("int(11)");
+
+                entity.Property(e => e.ClearDate).HasColumnType("datetime");
+
+                entity.Property(e => e.CreateDate).HasColumnType("datetime");
+
+                entity.Property(e => e.DirectFlag)
+                    .HasColumnType("bit(1)")
+                    .HasDefaultValueSql("b'0'");
+
+                entity.Property(e => e.HelpMonthCount).HasColumnType("int(11)");
+
+                entity.Property(e => e.MerBuddyType).HasColumnType("int(11)");
+
+                entity.Property(e => e.MerHelpFlag)
+                    .HasColumnType("bit(1)")
+                    .HasDefaultValueSql("b'0'");
+
+                entity.Property(e => e.MerNo)
+                    .HasColumnType("varchar(32)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.MerchantId).HasColumnType("int(11)");
+
+                entity.Property(e => e.ParentNav)
+                    .HasColumnType("varchar(1000)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.ProfitAmount).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.QrPayFlag).HasColumnType("int(11)");
+
+                entity.Property(e => e.QueryCount).HasColumnType("int(11)");
+
+                entity.Property(e => e.Remark)
+                    .HasColumnType("varchar(64)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SeoDescription)
+                    .HasColumnType("varchar(500)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SeoKeyword)
+                    .HasColumnType("varchar(200)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SeoTitle)
+                    .HasColumnType("varchar(100)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SnNo)
+                    .HasColumnType("varchar(32)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Sort).HasColumnType("int(11)");
+
+                entity.Property(e => e.Status).HasColumnType("int(11)");
+
+                entity.Property(e => e.TradeDate).HasColumnType("datetime");
+
+                entity.Property(e => e.TradeId).HasColumnType("int(11)");
+
+                entity.Property(e => e.UpdateDate).HasColumnType("datetime");
+
+                entity.Property(e => e.UserId).HasColumnType("int(11)");
+            });
+
+            modelBuilder.Entity<TradeDaySummary>(entity =>
+            {
+                entity.HasIndex(e => new { e.UserId, e.TradeMonth, e.TradeDate, e.BrandId, e.QueryCount, e.VipFlag, e.PayType, e.SeoTitle })
+                    .HasName("TradeDaySummaryIndex");
+
+                entity.Property(e => e.Id).HasColumnType("int(11)");
+
+                entity.Property(e => e.BrandId).HasColumnType("int(11)");
+
+                entity.Property(e => e.CreateDate).HasColumnType("datetime");
+
+                entity.Property(e => e.CreateMan)
+                    .HasColumnType("varchar(50)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.HelpDirectCreditTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.HelpDirectDebitCapNum).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.HelpDirectDebitCapTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.HelpDirectDebitTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.HelpDirectNonQrCreditTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.HelpDirectNonQrDebitTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.HelpDirectQrCreditTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.HelpDirectQrDebitTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.HelpDirectTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.HelpNonDirectCreditTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.HelpNonDirectDebitCapNum).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.HelpNonDirectDebitCapTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.HelpNonDirectDebitTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.HelpNonDirectNonQrCreditTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.HelpNonDirectNonQrDebitTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.HelpNonDirectQrCreditTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.HelpNonDirectQrDebitTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.HelpNonDirectTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.MgrName)
+                    .HasColumnType("varchar(32)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.MgrNo)
+                    .HasColumnType("varchar(16)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.NotHelpDirectCreditTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.NotHelpDirectDebitCapNum).HasColumnType("int(11)");
+
+                entity.Property(e => e.NotHelpDirectDebitCapTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.NotHelpDirectDebitTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.NotHelpDirectNonQrCreditTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.NotHelpDirectNonQrDebitTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.NotHelpDirectQrCreditTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.NotHelpDirectQrDebitTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.NotHelpDirectTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.NotHelpNonDirectCreditTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.NotHelpNonDirectDebitCapNum).HasColumnType("int(11)");
+
+                entity.Property(e => e.NotHelpNonDirectDebitCapTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.NotHelpNonDirectDebitTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.NotHelpNonDirectNonQrCreditTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.NotHelpNonDirectNonQrDebitTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.NotHelpNonDirectQrCreditTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.NotHelpNonDirectQrDebitTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.NotHelpNonDirectTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.PayType).HasColumnType("int(11)");
+
+                entity.Property(e => e.ProfitDirectCreditTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.ProfitDirectDebitCapNum).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.ProfitDirectDebitCapTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.ProfitDirectDebitTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.ProfitDirectNonQrCreditTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.ProfitDirectNonQrDebitTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.ProfitDirectQrCreditTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.ProfitDirectQrDebitTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.ProfitDirectTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.ProfitNonDirectCreditTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.ProfitNonDirectDebitCapNum).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.ProfitNonDirectDebitCapTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.ProfitNonDirectDebitTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.ProfitNonDirectNonQrCreditTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.ProfitNonDirectNonQrDebitTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.ProfitNonDirectQrCreditTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.ProfitNonDirectQrDebitTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.ProfitNonDirectTradeAmt).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.QueryCount).HasColumnType("int(11)");
+
+                entity.Property(e => e.SeoDescription)
+                    .HasColumnType("varchar(500)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SeoKeyword)
+                    .HasColumnType("varchar(200)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SeoTitle)
+                    .HasColumnType("varchar(100)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Sort).HasColumnType("int(11)");
+
+                entity.Property(e => e.Status).HasColumnType("int(11)");
+
+                entity.Property(e => e.TopUserId).HasColumnType("int(11)");
+
+                entity.Property(e => e.TradeDate)
+                    .HasColumnType("varchar(8)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.TradeMonth)
+                    .HasColumnType("varchar(6)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.UpdateDate).HasColumnType("datetime");
+
+                entity.Property(e => e.UpdateMan)
+                    .HasColumnType("varchar(50)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.UserId).HasColumnType("int(11)");
+
+                entity.Property(e => e.Version).HasColumnType("int(11)");
+
+                entity.Property(e => e.VipFlag).HasColumnType("int(11)");
+            });
+
+            modelBuilder.Entity<UserAccountRecord>(entity =>
+            {
+                entity.HasComment("创客账户变动记录");
+
+                entity.HasIndex(e => new { e.UserId, e.ChangeType })
+                    .HasName("UserAccountRecordIndex");
+
+                entity.Property(e => e.Id).HasColumnType("int(11)");
+
+                entity.Property(e => e.AfterBalanceAmount).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.AfterFreezeAmount).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.AfterTotalAmount).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.BeforeBalanceAmount).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.BeforeFreezeAmount).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.BeforeTotalAmount).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.ChangeAmount).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.ChangeType).HasColumnType("int(11)");
+
+                entity.Property(e => e.CreateDate).HasColumnType("datetime");
+
+                entity.Property(e => e.CreateMan)
+                    .HasColumnType("varchar(50)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Kind).HasColumnType("int(11)");
+
+                entity.Property(e => e.ProductType).HasColumnType("int(11)");
+
+                entity.Property(e => e.QueryCount).HasColumnType("int(11)");
+
+                entity.Property(e => e.Remark)
+                    .HasColumnType("varchar(64)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SeoDescription)
+                    .HasColumnType("varchar(500)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SeoKeyword)
+                    .HasColumnType("varchar(200)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SeoTitle)
+                    .HasColumnType("varchar(100)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Sort).HasColumnType("int(11)");
+
+                entity.Property(e => e.Status).HasColumnType("int(11)");
+
+                entity.Property(e => e.TransRecordNo)
+                    .HasColumnType("varchar(32)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.UpdateDate).HasColumnType("datetime");
+
+                entity.Property(e => e.UpdateMan)
+                    .HasColumnType("varchar(50)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.UserId).HasColumnType("int(11)");
+
+                entity.Property(e => e.Version).HasColumnType("int(11)");
+            });
+
+            OnModelCreatingPartial(modelBuilder);
+        }
+
+        partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
+    }
+}

+ 5 - 0
Startup.cs

@@ -139,6 +139,11 @@ namespace MySystem
             // AddRecordService.Instance.StartSpTradeRecord(); //RDSSP交易记录队列
 
             StatNewService.Instance.CreateTable(); //创建RDS分表
+
+            ProfitService.Instance.AddTradeDaySummary(); //补TradeDaySummary数据
+            ProfitService.Instance.AddUserAccountRecord(); //补UserAccountRecord数据
+            ProfitService.Instance.AddProfitRecord(); //补ProfitRecord数据
+            ProfitService.Instance.AddSubsidyRecord(); //补SubsidyRecord数据
             //必须打开的
 
         }

+ 1 - 0
appsettings.Development.json

@@ -19,6 +19,7 @@
     "Database": "KxsMainServer",
     "SqlConnStr": "server=47.109.31.237;port=3306;user=KxsMainServer;password=FrW8ZfxlcaVdm1r0;database=KxsMainServer;charset=utf8;",
     "StatSqlConnStr": "server=47.109.31.237;port=3306;user=KxsMainServer;password=FrW8ZfxlcaVdm1r0;database=KxsStatServer;charset=utf8;",
+    "ProfitSqlConnStr": "server=47.109.31.237;port=3306;user=KxsProfitServer;password=FrW8ZfxlcaVdm1r0;database=KxsProfitServer;charset=utf8;",
     "OpSqlConnStr": "server=47.109.31.237;port=3306;user=KxsOpServer;password=r7jwZ8ydLoeswDR4;database=KxsOpServer;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",

+ 1 - 0
appsettings.json

@@ -21,6 +21,7 @@
     "OpSqlConnStr": "server=47.108.231.170;port=3306;user=KxsOpServer;password=r7jwZ8ydLoeswDR4;database=KxsOpServer;charset=utf8;",
     "SpSqlConnStr": "server=47.108.229.115;port=3306;user=KxsSpServer;password=jJ9qKsvwWgQA9xWG;database=KxsSpServer;charset=utf8;",
     "StatSqlConnStr": "server=rm-2vc27k81v217qs1t55o.mysql.cn-chengdu.rds.aliyuncs.com;port=3306;user=KxsStatServer;password=mzeqjriUWore0dwT;database=KxsStatServer;charset=utf8;",
+    "ProfitSqlConnStr": "server=rm-2vc27k81v217qs1t55o.mysql.cn-chengdu.rds.aliyuncs.com;port=3306;user=KxsProfitServer;password=FrW8ZfxlcaVdm1r0;database=KxsProfitServer;charset=utf8;",
     "RedisConnStr": "47.108.207.184:6379,password=skb@redis2022,DefaultDatabase=2,poolsize=500,preheat=50,asyncPipeline=true",
     "IOSAppVersion": "1.0.0",
     "AndroidAppVersion": "1.0.0",