AddTableService.cs 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Threading;
  4. using System.Threading.Tasks;
  5. using System.Linq;
  6. using Microsoft.Extensions.Hosting;
  7. using MySystem;
  8. using MySystem.Models;
  9. using Library;
  10. using LitJson;
  11. public class AddTableService
  12. {
  13. public readonly static AddTableService Instance = new AddTableService();
  14. private AddTableService()
  15. { }
  16. //自动创建表
  17. public void CreateTable(string data)
  18. {
  19. JsonData jsonObj = JsonMapper.ToObject(data);
  20. string tbname = jsonObj["TableName"].ToString();
  21. int tbType = int.Parse(jsonObj["TableType"].ToString());
  22. WebCMSEntities db = new WebCMSEntities();
  23. CustomerTableRecord check = db.CustomerTableRecord.FirstOrDefault(m => m.TableEnName == tbname);
  24. if (check != null)
  25. {
  26. //创建主表
  27. if(tbType == 1) CreateActiveTableForMonth(tbname);
  28. if(tbType == 2) CreateTradeTableForMonth(tbname);
  29. if(tbType == 3) CreateTradeFluxTableForMonth(tbname);
  30. db.CustomerTableRecord.Add(new CustomerTableRecord()
  31. {
  32. TableEnName = tbname,
  33. CreateDate = DateTime.Now,
  34. AddTableDate = DateTime.Now,
  35. });
  36. db.SaveChanges();
  37. }
  38. else
  39. {
  40. //从主表中分离3个月前的数据,每个月创建一张表
  41. DateTime AddTableDate = check.AddTableDate.Value.AddMonths(-3);
  42. if (AddTableDate > check.CreateDate)
  43. {
  44. string addTableName = tbname + AddTableDate.ToString("yyMM");
  45. bool checkAdd = db.CustomerTableRecord.Any(m => m.TableEnName == addTableName);
  46. if (!checkAdd)
  47. {
  48. if(tbType == 1) CreateActiveTableForMonth(addTableName);
  49. if(tbType == 2) CreateTradeTableForMonth(addTableName);
  50. if(tbType == 3) CreateTradeFluxTableForMonth(addTableName);
  51. db.CustomerTableRecord.Add(new CustomerTableRecord()
  52. {
  53. TableEnName = addTableName,
  54. CreateDate = DateTime.Now
  55. });
  56. db.SaveChanges();
  57. }
  58. }
  59. }
  60. db.Dispose();
  61. }
  62. //创建激活记录表
  63. private void CreateActiveTableForMonth(string tbname)
  64. {
  65. string addTableSql = "CREATE table " + tbname + "(Id int NOT NULL AUTO_INCREMENT,Sort int not null default 0,QueryCount int not null default 0,Status int not null default 0,CreateDate datetime,UpdateDate datetime,SeoTitle varchar(100),SeoKeyword varchar(200),SeoDescription varchar(500),PRIMARY KEY(Id))ENGINE=InnoDB DEFAULT charset=utf8;";
  66. addTableSql += "Alter table " + tbname + " add BizEnterName varchar(32);";
  67. addTableSql += "Alter table " + tbname + " add BizEnterNo varchar(16);";
  68. addTableSql += "Alter table " + tbname + " add MerIdcardNo varchar(18);";
  69. addTableSql += "Alter table " + tbname + " add MerRealName varchar(16);";
  70. addTableSql += "Alter table " + tbname + " add ActivateDate datetime;";
  71. addTableSql += "Alter table " + tbname + " add ActivateStatus varchar(2);";
  72. addTableSql += "Alter table " + tbname + " add AssessMonthCount varchar(8);";
  73. addTableSql += "Alter table " + tbname + " add AssessMonth varchar(8);";
  74. addTableSql += "Alter table " + tbname + " add MerRegDate datetime;";
  75. addTableSql += "Alter table " + tbname + " add SnNo varchar(32);";
  76. addTableSql += "Alter table " + tbname + " add BrandId int not null default 0;";
  77. addTableSql += "Alter table " + tbname + " add MerMobile varchar(32);";
  78. addTableSql += "Alter table " + tbname + " add MerName varchar(32);";
  79. dbconn.op(addTableSql);
  80. }
  81. //自动创建交易记录表
  82. public void CreateTradeTableForMonth(string tbname)
  83. {
  84. string addTableSql = "CREATE table " + tbname + "(Id int NOT NULL AUTO_INCREMENT,Sort int not null default 0,QueryCount int not null default 0,Status int not null default 0,CreateDate datetime,UpdateDate datetime,SeoTitle varchar(100),SeoKeyword varchar(200),SeoDescription varchar(500),PRIMARY KEY(Id))ENGINE=InnoDB DEFAULT charset=utf8;";
  85. addTableSql += "Alter table " + tbname + " add ReceiptType varchar(16);";
  86. addTableSql += "Alter table " + tbname + " add IsStoreCashier varchar(16);";
  87. addTableSql += "Alter table " + tbname + " add DigAmt numeric(18,2) not null default 0;";
  88. addTableSql += "Alter table " + tbname + " add DigAmtFlag varchar(4);";
  89. addTableSql += "Alter table " + tbname + " add MerMobile varchar(11);";
  90. addTableSql += "Alter table " + tbname + " add DeviceType varchar(16);";
  91. addTableSql += "Alter table " + tbname + " add TradeSnNo varchar(32);";
  92. addTableSql += "Alter table " + tbname + " add BankCardType varchar(16);";
  93. addTableSql += "Alter table " + tbname + " add SerEntryMode varchar(32);";
  94. addTableSql += "Alter table " + tbname + " add TradeType varchar(32);";
  95. addTableSql += "Alter table " + tbname + " add TradeTime varchar(8);";
  96. addTableSql += "Alter table " + tbname + " add TradeDate varchar(8);";
  97. addTableSql += "Alter table " + tbname + " add ErrorMsg varchar(32);";
  98. addTableSql += "Alter table " + tbname + " add ErrorCode varchar(16);";
  99. addTableSql += "Alter table " + tbname + " add Trade_status varchar(16);";
  100. addTableSql += "Alter table " + tbname + " add BrandId int not null default 0;";
  101. addTableSql += "Alter table " + tbname + " add DiscountRateFlag varchar(16);";
  102. addTableSql += "Alter table " + tbname + " add BankAuthCode varchar(32);";
  103. addTableSql += "Alter table " + tbname + " add TradeReferNo varchar(32);";
  104. addTableSql += "Alter table " + tbname + " add TradeAmount numeric(18,2) not null default 0;";
  105. addTableSql += "Alter table " + tbname + " add MerName varchar(32);";
  106. dbconn.op(addTableSql);
  107. }
  108. //自动创建流量卡分佣交易记录表
  109. public void CreateTradeFluxTableForMonth(string tbname)
  110. {
  111. string addTableSql = "CREATE table " + tbname + "(Id int NOT NULL AUTO_INCREMENT,Sort int not null default 0,QueryCount int not null default 0,Status int not null default 0,CreateDate datetime,UpdateDate datetime,SeoTitle varchar(100),SeoKeyword varchar(200),SeoDescription varchar(500),PRIMARY KEY(Id))ENGINE=InnoDB DEFAULT charset=utf8;";
  112. addTableSql += "Alter table " + tbname + " add DeviceNetwork varchar(32);";
  113. addTableSql += "Alter table " + tbname + " add TerminalNo varchar(32);";
  114. addTableSql += "Alter table " + tbname + " add InputModel varchar(32);";
  115. addTableSql += "Alter table " + tbname + " add KqTradeSeq varchar(32);";
  116. addTableSql += "Alter table " + tbname + " add BillType varchar(32);";
  117. addTableSql += "Alter table " + tbname + " add SourceType varchar(16);";
  118. addTableSql += "Alter table " + tbname + " add BizEnterName varchar(64);";
  119. addTableSql += "Alter table " + tbname + " add BizEnterNo varchar(32);";
  120. addTableSql += "Alter table " + tbname + " add SmallDouble varchar(4);";
  121. addTableSql += "Alter table " + tbname + " add SettleFee numeric(18,2) not null default 0;";
  122. addTableSql += "Alter table " + tbname + " add SettleMethod varchar(16);";
  123. addTableSql += "Alter table " + tbname + " add FeeAmount numeric(18,2) not null default 0;";
  124. addTableSql += "Alter table " + tbname + " add BankCardNo varchar(32);";
  125. addTableSql += "Alter table " + tbname + " add DigAmt numeric(18,2) not null default 0;";
  126. addTableSql += "Alter table " + tbname + " add DigAmtFlag varchar(4);";
  127. addTableSql += "Alter table " + tbname + " add TradeSnNo varchar(32);";
  128. addTableSql += "Alter table " + tbname + " add BankCardType varchar(16);";
  129. addTableSql += "Alter table " + tbname + " add TradeTime varchar(8);";
  130. addTableSql += "Alter table " + tbname + " add TradeDate varchar(8);";
  131. addTableSql += "Alter table " + tbname + " add TradeStatus varchar(16);";
  132. addTableSql += "Alter table " + tbname + " add BrandId int not null default 0;";
  133. addTableSql += "Alter table " + tbname + " add TradeAmount numeric(18,2) not null default 0;";
  134. addTableSql += "Alter table " + tbname + " add MerName varchar(32);";
  135. dbconn.op(addTableSql);
  136. }
  137. }