Bladeren bron

初步完成,待测试

lcl 1 jaar geleden
bovenliggende
commit
0b7b9beb36

+ 1 - 1
AppStart/StartHelper.cs

@@ -12,7 +12,7 @@
             int Environment = Library.ConfigurationManager.EnvironmentFlag; //运行环境(1-开发环境,2-生产环境)
             if(Environment == 2)
             {
-                SourceHelper.Instance.Start(); //获取原始数据队列
+                // SourceHelper.Instance.Start(); //获取原始数据队列
                 PushHelper.Instance.Start(); //推送队列
 
                 // DefaultHelper.Instance.Start(); //队列程序

+ 1 - 0
Config/Base.cs

@@ -7,6 +7,7 @@ namespace AppConfig
     {
         public static string ApiKey = "G6H7@J8%";
         public static string SqlConnStr = ConfigurationManager.AppSettings["SqlConnStr"].ToString();
+        public static string SourceSqlConnStr = ConfigurationManager.AppSettings["SourceSqlConnStr"].ToString();
         public static string Host = Library.ConfigurationManager.AppSettings["Host"].ToString();
         public static string SourceHost = Library.ConfigurationManager.AppSettings["SourceHost"].ToString();
         public static string Database = Library.ConfigurationManager.AppSettings["Database"].ToString();

+ 4 - 4
Controllers/HomeController.cs

@@ -26,7 +26,7 @@ namespace MySystem.Controllers
 
         public string test()
         {
-            testReq("http://idc.pay-api.top/idc-push-api/third/1050056/1560192687980675072/1", "bind_merchant");
+            // testReq("http://idc.pay-api.top/idc-push-api/third/1050056/1560192687980675072/1", "bind_merchant");
             // testReq("http://idc.pay-api.top/idc-push-api/third/1050056/1560192687980675072/8", "un_bind_merchant");
             // testReq("http://idc.pay-api.top/idc-push-api/third/1050056/1560192687980675072/236", "change_bind_merchant");
             // testReq("http://idc.pay-api.top/idc-push-api/third/1050056/1560192687980675072/4", "sim_charge");
@@ -122,7 +122,7 @@ namespace MySystem.Controllers
             obj.Add("agent_id", "039034");
             obj.Add("pos_sn", "00005702280118855803");
             obj.Add("order_id", "20231214H00040601976Y");
-            obj.Add("amount", "299.00");
+            obj.Add("amount", "29900");
             obj.Add("trans_time", "2023-12-14 16:39:43");
             return obj;
         }
@@ -136,11 +136,11 @@ namespace MySystem.Controllers
             obj.Add("merch_no", "039331007177057");
             obj.Add("term_no", "00005702280118855803");
             obj.Add("pos_sn", "00005702280118855803");
-            obj.Add("amount", "1025.00");
+            obj.Add("amount", "102500");
             obj.Add("trans_time", "2023-12-14 16:54:17");
             obj.Add("ret_code", "00");
             obj.Add("ret_msg", "交易成功");
-            obj.Add("fee_amount", "6.15");
+            obj.Add("fee_amount", "615");
             obj.Add("pay_type", "0");
             obj.Add("card_type", "C");
             obj.Add("trans_type", "31");

+ 1 - 0
Models/Push/PushObj.cs

@@ -17,5 +17,6 @@ namespace MySystem.Models.Push
         public string NoticeUrl { get; set; }
         public string Title { get; set; }
         public int MerchantId { get; set; }
+        public int QueryId { get; set; }
     }
 }

+ 1 - 0
Models/Push/SourceData.cs

@@ -15,5 +15,6 @@ namespace MySystem.Models.Push
         public string TableName { get; set; }
         public string Title { get; set; }
         public string TargetFieldList { get; set; }
+        public int QueryId { get; set; }
     }
 }

+ 21 - 0
Models/Push/UPosMerchantInfo.cs

@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem.Models.Push
+{
+    public partial class UPosMerchantInfo
+    {
+        public string Id { get; set; }
+        public string Status { get; set; }
+        public string UserId { get; set; }
+        public string Phone { get; set; }
+        public string Name { get; set; }
+        public string SupplementInfo { get; set; }
+        public string AgentId { get; set; }
+        public string MerchNo { get; set; }
+        public string PosSn { get; set; }
+        public string DeviceModel { get; set; }
+        public string TermTo { get; set; }
+        public string BindTime { get; set; }
+    }
+}

+ 103 - 0
Models/Push/WebCMSEntities.cs

@@ -23,6 +23,7 @@ namespace MySystem.Models.Push
         public virtual DbSet<SourceCondition> SourceCondition { get; set; }
         public virtual DbSet<SourceData> SourceData { get; set; }
         public virtual DbSet<SourceDataSubTable> SourceDataSubTable { get; set; }
+        public virtual DbSet<UPosMerchantInfo> UPosMerchantInfo { get; set; }
 
         protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
         {
@@ -144,6 +145,10 @@ namespace MySystem.Models.Push
                     .HasCharSet("utf8")
                     .HasCollation("utf8_general_ci");
 
+                entity.Property(e => e.QueryId)
+                    .HasColumnType("int(11)")
+                    .HasComment("查询表Id");
+
                 entity.Property(e => e.Sort)
                     .HasColumnName("sort")
                     .HasColumnType("int(11)")
@@ -482,6 +487,10 @@ namespace MySystem.Models.Push
                     .HasCharSet("utf8")
                     .HasCollation("utf8_general_ci");
 
+                entity.Property(e => e.QueryId)
+                    .HasColumnType("int(11)")
+                    .HasComment("查询数据表Id");
+
                 entity.Property(e => e.Sort)
                     .HasColumnName("sort")
                     .HasColumnType("int(11)")
@@ -586,6 +595,100 @@ namespace MySystem.Models.Push
                     .HasComment("版本号");
             });
 
+            modelBuilder.Entity<UPosMerchantInfo>(entity =>
+            {
+                entity.ToTable("u_PosMerchantInfo");
+
+                entity.HasComment("商户绑定信息");
+
+                entity.Property(e => e.Id)
+                    .HasColumnName("id")
+                    .HasColumnType("varchar(30)")
+                    .HasDefaultValueSql("'0'")
+                    .HasComment("ID")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.AgentId)
+                    .HasColumnName("agent_id")
+                    .HasColumnType("varchar(30)")
+                    .HasComment("代理商编号")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.BindTime)
+                    .HasColumnName("bind_time")
+                    .HasColumnType("varchar(30)")
+                    .HasComment("绑定时间")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.DeviceModel)
+                    .HasColumnName("device_model")
+                    .HasColumnType("varchar(30)")
+                    .HasComment("设备类型")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.MerchNo)
+                    .HasColumnName("merch_no")
+                    .HasColumnType("varchar(50)")
+                    .HasComment("商户号")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Name)
+                    .HasColumnName("name")
+                    .HasColumnType("varchar(50)")
+                    .HasComment("商户名称")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Phone)
+                    .HasColumnName("phone")
+                    .HasColumnType("varchar(30)")
+                    .HasComment("手机号")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.PosSn)
+                    .HasColumnName("pos_sn")
+                    .HasColumnType("varchar(50)")
+                    .HasComment("机具号")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Status)
+                    .IsRequired()
+                    .HasColumnName("status")
+                    .HasColumnType("varchar(1)")
+                    .HasDefaultValueSql("'0'")
+                    .HasComment("状态")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SupplementInfo)
+                    .HasColumnName("supplement_info")
+                    .HasColumnType("varchar(30)")
+                    .HasComment("身份证号")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.TermTo)
+                    .HasColumnName("term_to")
+                    .HasColumnType("varchar(50)")
+                    .HasComment("终端号")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.UserId)
+                    .HasColumnName("user_id")
+                    .HasColumnType("varchar(30)")
+                    .HasComment("创客所属人")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+            });
+
             OnModelCreatingPartial(modelBuilder);
         }
 

+ 1 - 1
Startup.cs

@@ -100,7 +100,7 @@ namespace MySystem
                     pattern: "{controller=Home}/{action=Index}/{Id?}");
             });
 
-            // StartHelper.Instance.Start(); //开启线程
+            StartHelper.Instance.Start(); //开启线程
         }
         
     }

+ 46 - 6
Util/Queue/PushHelper.cs

@@ -57,8 +57,16 @@ namespace MySystem
                     string Title = pushItem.Title;
                     int MerchantId = pushItem.MerchantId;
 
+                    string QueryField = "";
+                    JsonData fieldJson = JsonMapper.ToObject(FieldList);
+                    for (int i = 0; i < fieldJson.Count; i++)
+                    {
+                        JsonData item = fieldJson[i];
+                        if(!string.IsNullOrEmpty(item["name"].ToString())) QueryField += item["name"].ToString() + ",";
+                    }
+
                     //构造抓取数据sql
-                    string sql = "select " + FieldList.TrimEnd(',') + " from u_" + TableName + " where 1=1";
+                    string sql = "select " + QueryField.TrimEnd(',') + " from u_" + TableName + " where 1=1";
                     var condiList = db.PushObjCondition.Where(m => m.PushObjId == pushItem.Id).ToList();
                     foreach(var condi in condiList)
                     {
@@ -72,24 +80,32 @@ namespace MySystem
                             sql += " and " + condi.QueryField + " like '%" + condi.QueryVal + "%'";
                         }
                         else if(QueryCondition == 3)
+                        {
+                            sql += " and " + condi.QueryField + ">" + condi.QueryVal + "";
+                        }
+                        else if(QueryCondition == 4)
+                        {
+                            sql += " and " + condi.QueryField + "<" + condi.QueryVal + "";
+                        }
+                        else if(QueryCondition == 5)
                         {
                             string[] QueryValList = condi.QueryVal.Split('|');
                             sql += " and " + condi.QueryField + ">=" + QueryValList[0] + " and " + condi.QueryField + "<=" + QueryValList[1] + "";
                         }
-                        else if(QueryCondition == 4)
+                        else if(QueryCondition == 6)
                         {
                             string[] QueryValList = condi.QueryVal.Split('|');
                             sql += " and " + condi.QueryField + ">='" + QueryValList[0] + "' and " + condi.QueryField + "<='" + QueryValList[1] + "'";
                         }
-                        else if(QueryCondition == 5)
+                        else if(QueryCondition == 7)
                         {
                             sql += " and " + condi.QueryField + " in (" + condi.QueryVal + ")";
                         }
-                        else if(QueryCondition == 6)
+                        else if(QueryCondition == 8)
                         {
                             sql += " and " + condi.QueryField + " in ('" + condi.QueryVal.Replace(",", "','") + "')";
                         }
-                        else if(QueryCondition == 7)
+                        else if(QueryCondition == 9)
                         {
                             string[] QueryValList = condi.QueryVal.Split(',');
                             sql += " and (";
@@ -107,11 +123,14 @@ namespace MySystem
                         }
                         else
                         {
-                            sql += " and " + condi.QueryField + "=" + condi.QueryVal;
+                            sql += " and " + condi.QueryField + "='" + condi.QueryVal + "'";
                         }
                     }
 
                     //抓取数据开始post数据
+                    int StartId = pushItem.QueryId;
+                    sql = sql.Replace("${QueryId}$", StartId.ToString());
+                    sql += " order by id limit 10";
                     DataTable dt = CustomerSqlConn.dtable(sql, AppConfig.Base.SqlConnStr);
                     foreach(DataRow dr in dt.Rows)
                     {                        
@@ -120,6 +139,8 @@ namespace MySystem
                         {
                             obj.Add(dc.ColumnName, dr[dc.ColumnName].ToString());
                         }
+                        int Status = 0;
+                        string PushData = "";
                         if(EncryptMode == 1)
                         {
                             string content = EncryptHelper.Encrypt1(obj, AesSecret);
@@ -130,10 +151,29 @@ namespace MySystem
                             obj.Add("content", content);
                             string requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(obj);
                             string result = function.PostWebRequest(NoticeUrl, requestJson, "application/json");
+                            PushData = result;
                             if(result.Contains("\"code\":\"200\""))
                             {
+                                Status = 0;
                             }
                         }
+                        db.PushRecord.Add(new PushRecord()
+                        {
+                            CreateDate = DateTime.Now,
+                            Status = Status,
+                            PushData = PushData,
+                            PushDataEncrypt = PushData,
+                            PushObjId = pushItem.Id,
+                            MerchantId = merchant.Id
+                        });
+                        db.SaveChanges();
+                        StartId = int.Parse(dr["id"].ToString());
+                    }
+                    var edit = db.PushObj.FirstOrDefault(m => m.Id == pushItem.Id);
+                    if(edit != null)
+                    {
+                        edit.QueryId = StartId;
+                        db.SaveChanges();
                     }
                 }
             }

+ 64 - 15
Util/Queue/SourceHelper.cs

@@ -1,4 +1,5 @@
 using System;
+using System.Data;
 using System.Linq;
 using System.Threading;
 using Library;
@@ -40,16 +41,17 @@ namespace MySystem
                 string Title = source.Title; //说明
                 string TableName = source.TableName; //数据表
                 string FieldList = source.FieldList; //原始数据字段
-                string TargetFieldList = source.TargetFieldList; //目标数据字段
+                string FlagField = source.TargetFieldList; //原始标记字段
                 string QueryField = "";
                 JsonData fieldJson = JsonMapper.ToObject(FieldList);
                 for (int i = 0; i < fieldJson.Count; i++)
                 {
                     JsonData item = fieldJson[i];
-                    QueryField += item["name"].ToString() + ",";
+                    if(!string.IsNullOrEmpty(item["source_name"].ToString())) QueryField += item["source_name"].ToString() + ",";
                 }
 
                 //构造抓取数据
+                int StartId = source.QueryId;
                 string sql = "select " + QueryField.TrimEnd(',') + " from " + TableName + " where 1=1";
                 var condiList = db.SourceCondition.Where(m => m.SourceId == source.Id).ToList();
                 foreach(var condi in condiList)
@@ -64,24 +66,32 @@ namespace MySystem
                         sql += " and " + condi.QueryField + " like '%" + condi.QueryVal + "%'";
                     }
                     else if(QueryCondition == 3)
+                    {
+                        sql += " and " + condi.QueryField + ">" + condi.QueryVal + "";
+                    }
+                    else if(QueryCondition == 4)
+                    {
+                        sql += " and " + condi.QueryField + "<" + condi.QueryVal + "";
+                    }
+                    else if(QueryCondition == 5)
                     {
                         string[] QueryValList = condi.QueryVal.Split('|');
                         sql += " and " + condi.QueryField + ">=" + QueryValList[0] + " and " + condi.QueryField + "<=" + QueryValList[1] + "";
                     }
-                    else if(QueryCondition == 4)
+                    else if(QueryCondition == 6)
                     {
                         string[] QueryValList = condi.QueryVal.Split('|');
                         sql += " and " + condi.QueryField + ">='" + QueryValList[0] + "' and " + condi.QueryField + "<='" + QueryValList[1] + "'";
                     }
-                    else if(QueryCondition == 5)
+                    else if(QueryCondition == 7)
                     {
                         sql += " and " + condi.QueryField + " in (" + condi.QueryVal + ")";
                     }
-                    else if(QueryCondition == 6)
+                    else if(QueryCondition == 8)
                     {
                         sql += " and " + condi.QueryField + " in ('" + condi.QueryVal.Replace(",", "','") + "')";
                     }
-                    else if(QueryCondition == 7)
+                    else if(QueryCondition == 9)
                     {
                         string[] QueryValList = condi.QueryVal.Split(',');
                         sql += " and (";
@@ -99,7 +109,7 @@ namespace MySystem
                     }
                     else
                     {
-                        sql += " and " + condi.QueryField + "=" + condi.QueryVal;
+                        sql += " and " + condi.QueryField + "='" + condi.QueryVal + "'";
                     }
                 }
 
@@ -107,20 +117,47 @@ namespace MySystem
                 var sourceEdit = db.SourceData.FirstOrDefault(m => m.Id == source.Id && m.Version == 0);
                 if(sourceEdit != null)
                 {
-                    CreateTable(Title, TableName, TargetFieldList);
+                    CreateTable(Title, TableName, FieldList);
                     sourceEdit.Version = 1;
                     db.SaveChanges();
                 }
 
                 //插入数据
                 string TargetQueryField = "";
-                JsonData TargetFieldJson = JsonMapper.ToObject(TargetFieldList);
+                JsonData TargetFieldJson = JsonMapper.ToObject(FieldList);
                 for (int i = 0; i < TargetFieldJson.Count; i++)
                 {
                     JsonData item = TargetFieldJson[i];
-                    TargetQueryField += item["name"].ToString() + ",";
+                    if(!string.IsNullOrEmpty(item["source_name"].ToString()))
+                    {
+                        TargetQueryField += item["name"].ToString() + ",";
+                    }
+                }
+                string insertSql = "";
+                sql = sql.Replace("${QueryId}$", StartId.ToString());
+                sql += " order by Id limit 10";
+                DataTable dt = CustomerSqlConn.dtable(sql, AppConfig.Base.SourceSqlConnStr);
+                foreach(DataRow dr in dt.Rows)
+                {
+                    string values = "";
+                    for (int i = 0; i < fieldJson.Count; i++)
+                    {
+                        JsonData item = fieldJson[i];
+                        if(!string.IsNullOrEmpty(item["source_name"].ToString()))
+                        {
+                            values += "'" + dr[item["source_name"].ToString()].ToString() + "',";
+                        }
+                    }
+                    insertSql += "insert into u_" + TableName + " (" + TargetQueryField.TrimEnd(',') + ") values (" + values.TrimEnd(',') + ");";
+                    StartId = int.Parse(dr["Id"].ToString());
+                    CustomerSqlConn.dtable("update " + TableName + " set " + FlagField + "=1 where Id=" + StartId, AppConfig.Base.SourceSqlConnStr);
+                }
+                var edit = db.SourceData.FirstOrDefault(m => m.Id == source.Id);
+                if(edit != null)
+                {
+                    edit.QueryId = StartId;
+                    db.SaveChanges();
                 }
-                string insertSql = "insert into u_" + TableName + " (" + TargetQueryField + ")" + sql;
                 CustomerSqlConn.op(insertSql, AppConfig.Base.SqlConnStr);
             }
             db.Dispose();
@@ -130,15 +167,27 @@ namespace MySystem
         public void CreateTable(string Title, string tableName, string fieldList)
         {
             string sql = "CREATE TABLE `u_" + tableName + "` (\n";
-            sql += "`id` int(11) NOT NULL AUTO_INCREMENT,\n";
-            sql += "`status` int(11) NOT NULL,\n";
             JsonData fieldJson = JsonMapper.ToObject(fieldList);
+            string prikey = "";
             for (int i = 0; i < fieldJson.Count; i++)
             {
                 JsonData item = fieldJson[i];
-                sql += "`" + item["name"].ToString() + "` varchar(" + item["len"].ToString() + ") DEFAULT NULL COMMENT '" + item["title"].ToString() + "',\n";
+                string nullCondition = "";
+                string defaultValue = item["default"].ToString();
+                if(!string.IsNullOrEmpty(defaultValue))
+                {
+                    nullCondition = " NOT NULL DEFAULT " + defaultValue;
+                }
+                sql += "`" + item["name"].ToString() + "` varchar(" + item["len"].ToString() + ")" + nullCondition + " COMMENT '" + item["title"].ToString() + "',\n";
+                if(item["pri"].ToString() == "1")
+                {
+                    prikey = item["name"].ToString();
+                }
+            }
+            if(!string.IsNullOrEmpty(prikey))
+            {
+                sql += "PRIMARY KEY (`" + prikey + "`)\n";
             }
-            sql += "PRIMARY KEY (`id`)\n";
             sql += ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='" + Title + "';";
             CustomerSqlConn.op(sql, AppConfig.Base.SqlConnStr);
         }

+ 1 - 0
appsettings.Development.json

@@ -13,6 +13,7 @@
     "SourceHost": "",
     "Database": "KxsPushServer",
     "SqlConnStr": "server=47.109.31.237;port=3306;user=KxsPushServer;password=DaMSJxexJMW7i0Jb;database=KxsPushServer;charset=utf8;",
+    "SourceSqlConnStr": "server=47.109.31.237;port=3306;user=KxsMainServer;password=FrW8ZfxlcaVdm1r0;database=KxsMainServer;charset=utf8;",
     "RedisConnStr": "47.109.31.237:6379,password=klm@redis,DefaultDatabase=1,poolsize=500,preheat=50,asyncPipeline=true",
     "IOSAppVersion": "1.0.0",
     "AndroidAppVersion": "1.0.0",