Przeglądaj źródła

推送数据埋点

lcl 6 miesięcy temu
rodzic
commit
d9b1eb61f4

BIN
AppStart/.DS_Store


+ 208 - 0
AppStart/Helper/PosPushDataNewHelper.cs

@@ -0,0 +1,208 @@
+using System;
+using System.Collections.Generic;
+using Library;
+using MySystem.SpModels;
+
+namespace MySystem
+{
+    public class PosPushDataNewHelper
+    {
+        public readonly static PosPushDataNewHelper Instance = new PosPushDataNewHelper();
+        private PosPushDataNewHelper()
+        { }
+
+        //绑定数据
+        public static void Bind(Merchants mer)
+        {
+            try
+            {
+                Dictionary<string, object> dataContent = new Dictionary<string, object>();
+                dataContent.Add("pos_sn", mer.SnNo); //机具sn
+                dataContent.Add("mer_no", mer.MerNo); //商户号
+                dataContent.Add("id_card", mer.SeoKeyword); //商户身份证
+                dataContent.Add("mer_name", mer.MerName); //商户姓名
+                dataContent.Add("mer_mobile", mer.MerMobile); //商户手机号
+                dataContent.Add("request_id", mer.CreateTime.Value.ToString("yyyyMMddHHmmssfff") + function.get_Random(8)); //流水号
+                dataContent.Add("bind_time", mer.CreateTime.Value.ToString("yyyy-MM-dd HH:mm:ss")); //绑定时间
+                dataContent.Add("brand", mer.ProductType); //品牌
+                Push("bind", dataContent);
+            }
+            catch (Exception ex)
+            {
+                function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString() + "\n\n", "推送绑定数据异常");
+            }
+        }
+        public static void Bind(MerchantRecord mer)
+        {
+            try
+            {
+                Dictionary<string, object> dataContent = new Dictionary<string, object>();
+                dataContent.Add("pos_sn", mer.MerSnNo); //机具sn
+                dataContent.Add("mer_no", mer.MerNo); //商户号
+                dataContent.Add("id_card", mer.LegalIdCard); //商户身份证
+                dataContent.Add("mer_name", mer.MerName); //商户姓名
+                dataContent.Add("mer_mobile", ""); //商户手机号
+                dataContent.Add("request_id", mer.CreateTime.Value.ToString("yyyyMMddHHmmssfff") + function.get_Random(8)); //流水号
+                dataContent.Add("bind_time", mer.CreateTime.Value.ToString("yyyy-MM-dd HH:mm:ss")); //绑定时间
+                dataContent.Add("brand", mer.ProductType); //品牌
+                Push("bind", dataContent);
+            }
+            catch (Exception ex)
+            {
+                function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString() + "\n\n", "推送绑定数据异常");
+            }
+        }
+
+        //解绑数据
+        public static void UnBind(UnBindRecord mer)
+        {
+            try
+            {
+                Dictionary<string, object> dataContent = new Dictionary<string, object>();
+                dataContent.Add("pos_sn", mer.MerSnNo); //机具sn
+                dataContent.Add("mer_no", mer.MerNo); //商户号
+                dataContent.Add("request_id", DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8)); //流水号
+                dataContent.Add("un_bind_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); //绑定时间
+                dataContent.Add("brand", mer.ProductType); //品牌
+                Push("un_bind", dataContent);
+            }
+            catch (Exception ex)
+            {
+                function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString() + "\n\n", "推送解绑数据异常");
+            }
+        }
+
+        //换绑数据
+        public static void ChangeBind(ChangeBindRecord mer)
+        {
+            try
+            {
+                Dictionary<string, object> dataContent = new Dictionary<string, object>();
+                dataContent.Add("request_id", DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8)); //流水号
+                dataContent.Add("mer_no", mer.MerNo); //商户号
+                dataContent.Add("source_pos_sn", mer.MerSnNo); //来源机具sn
+                dataContent.Add("source_brand", mer.ProductType); //来源品牌
+                dataContent.Add("to_pos_sn", mer.MerNewSnNo); //兑换机具sn
+                dataContent.Add("to_brand", mer.ProductType); //兑换品牌
+                dataContent.Add("change_bind_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); //换绑时间
+                Push("change_bind", dataContent);
+            }
+            catch (Exception ex)
+            {
+                function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString() + "\n\n", "推送换绑数据异常");
+            }
+        }
+
+        //押金数据
+        public static void Deposit(ActivateRecord act)
+        {
+            try
+            {
+                Dictionary<string, object> dataContent = new Dictionary<string, object>();
+                dataContent.Add("pos_sn", act.SnNo); //机具sn
+                dataContent.Add("mer_no", act.MerNo); //商户号
+                dataContent.Add("request_id", DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8)); //流水号
+                dataContent.Add("deposit_amount", act.SeoTitle); //押金金额
+                dataContent.Add("trade_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); //交易时间
+                dataContent.Add("brand", act.ProductType); //品牌
+                Push("deposit", dataContent);
+            }
+            catch (Exception ex)
+            {
+                function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString() + "\n\n", "推送押金数据异常");
+            }
+        }
+        public static void Deposit(TradeRecord trade)
+        {
+            try
+            {
+                Dictionary<string, object> dataContent = new Dictionary<string, object>();
+                dataContent.Add("pos_sn", trade.TradeSnNo); //机具sn
+                dataContent.Add("mer_no", trade.MerNo); //商户号
+                dataContent.Add("request_id", DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8)); //流水号
+                dataContent.Add("deposit_amount", trade.TradeAmount); //押金金额
+                dataContent.Add("trade_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); //交易时间
+                dataContent.Add("brand", trade.ProductType); //品牌
+                Push("deposit", dataContent);
+            }
+            catch (Exception ex)
+            {
+                function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString() + "\n\n", "推送押金数据异常");
+            }
+        }
+
+        //激活数据
+        public static void Active(ActivateRecord act)
+        {
+            try
+            {
+                Dictionary<string, object> dataContent = new Dictionary<string, object>();
+                dataContent.Add("pos_sn", act.SnNo); //机具sn
+                dataContent.Add("mobile", act.MerMobile); //商户号
+                dataContent.Add("request_id", DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8)); //流水号
+                dataContent.Add("activation_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); //激活时间
+                dataContent.Add("brand", act.ProductType); //品牌
+                Push("active", dataContent);
+            }
+            catch (Exception ex)
+            {
+                function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString() + "\n\n", "推送激活数据异常");
+            }
+        }
+
+        //交易数据
+        public static void Trade(TradeRecord trade)
+        {
+            try
+            {
+                int QrPayFlag = 0;
+                if (trade.ProductType == "1")
+                {
+                    if (trade.TradeType == "02") QrPayFlag = 1;
+                }
+                else if (trade.ProductType == "2")
+                {
+                    if (trade.TradeType == "CLOUD_PAY") QrPayFlag = 1;
+                }
+                else if (trade.ProductType == "4")
+                {
+                    if (trade.TradeType == "200") QrPayFlag = 1;
+                }
+                else if (trade.ProductType == "8" || trade.ProductType == "9")
+                {
+                    if (trade.TradeType == "200") QrPayFlag = 1;
+                }
+                else if (trade.ProductType == "10" || trade.ProductType == "11")
+                {
+                    if (trade.TradeType == "F010") QrPayFlag = 1;
+                }
+                else if (trade.ProductType == "12") //盒易付
+                {
+                    if (trade.Field3 == "1") QrPayFlag = 1;
+                }
+                Dictionary<string, object> dataContent = new Dictionary<string, object>();
+                dataContent.Add("pos_sn", trade.TradeSnNo); //机具sn
+                dataContent.Add("mer_no", trade.MerNo); //商户号
+                dataContent.Add("request_id", trade.TradeSerialNo); //流水号
+                dataContent.Add("trade_amount", trade.TradeAmount); //交易金额
+                dataContent.Add("trade_time", trade.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss")); //交易时间
+                dataContent.Add("brand", trade.ProductType); //品牌
+                dataContent.Add("card_type", trade.BankCardType); //卡类型
+                dataContent.Add("qr_pay_flag", QrPayFlag); //云闪付标记
+                Push("trade", dataContent);
+            }
+            catch (Exception ex)
+            {
+                function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString() + "\n\n", "推送交易数据异常");
+            }
+        }
+
+        public static void Push(string dataType, Dictionary<string, object> dataContent)
+        {
+            Dictionary<string, object> data = new Dictionary<string, object>();
+            data.Add("data_type", dataType);
+            data.Add("data_content", dataContent);
+            RedisDbconn.Instance.AddList("KxsPosDataQueue", Newtonsoft.Json.JsonConvert.SerializeObject(data));
+        }
+    }
+}

+ 1 - 0
AppStart/Helper/SycnSpServer/SycnSpActiveService.cs

@@ -39,6 +39,7 @@ namespace MySystem
                     foreach (ActivateRecord act in acts.ToList())
                     {
                         // PxcModels.MachineForMerNo posFor = db.MachineForMerNo.FirstOrDefault(m => m.MerNo == act.MerNo) ?? new PxcModels.MachineForMerNo();
+                        PosPushDataNewHelper.Deposit(act);
                         PxcModels.PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == act.SnNo && m.BindingTime != null);
                         if (pos != null)
                         {

+ 6 - 0
AppStart/Helper/SycnSpServer/SycnSpBindService.cs

@@ -42,6 +42,12 @@ namespace MySystem
                         {
                             if((Bind.Field1 == "解绑" || Bind.Field1 == "UNBIND") && (Bind.ProductType == "1" || Bind.ProductType == "23" || Bind.ProductType == "27" || Bind.ProductType == "30"))
                             {
+                                PosPushDataNewHelper.UnBind(new UnBindRecord()
+                                {
+                                    MerSnNo = Bind.MerSnNo,
+                                    MerNo = Bind.MerNo,
+                                    ProductType = Bind.ProductType,
+                                });
                                 // 删除对应商户,激活机具除外
                                 PxcModels.PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == Bind.MerSnNo) ?? new PxcModels.PosMachinesTwo();
                                 if(pos.ActivationState == 0)

+ 1 - 0
AppStart/Helper/SycnSpServer/SycnSpChangeBindService.cs

@@ -36,6 +36,7 @@ namespace MySystem
                         var tran = db.Database.BeginTransaction();
                         try
                         {
+                            PosPushDataNewHelper.ChangeBind(Bind);
                             string OldSnNum = Bind.MerSnNo;
                             string NewSnNum = Bind.MerNewSnNo;
                             string MerNo = Bind.MerNo;

+ 1 - 0
AppStart/Helper/SycnSpServer/SycnSpMerchantRecordService.cs

@@ -37,6 +37,7 @@ namespace MySystem
                         var tran = db.Database.BeginTransaction();
                         try
                         {
+                            PosPushDataNewHelper.Bind(Mer);
                             PxcModels.MachineForMerNo machineForMerNo = db.MachineForMerNo.FirstOrDefault(m => m.MerNo == Mer.MerNo) ?? new PxcModels.MachineForMerNo();
                             PxcModels.PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machineForMerNo.SnId) ?? new PxcModels.PosMachinesTwo();
                             

+ 1 - 0
AppStart/Helper/SycnSpServer/SycnSpMerchantService.cs

@@ -37,6 +37,7 @@ namespace MySystem
                         var tran = db.Database.BeginTransaction();
                         try
                         {
+                            if(Mer.Field2 != "解绑" && Mer.Field2 != "UNBIND" && Mer.ProductType != "12" && Mer.ProductType != "30") PosPushDataNewHelper.Bind(Mer);
                             PxcModels.PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == Mer.SnNo) ?? new PxcModels.PosMachinesTwo();
                             if (pos.BindingState == 1 && Mer.Field2 != "解绑" && Mer.Field2 != "UNBIND")
                             {

+ 13 - 0
AppStart/Helper/SycnSpServer/SycnSpTradeService.cs

@@ -76,6 +76,8 @@ namespace MySystem
                                     edit.Status = 2;
                                 }
                                 spdb.SaveChanges();
+
+                                PosPushDataNewHelper.Deposit(trade);
                             }
                         }
                         else if (trade.SerEntryMode == "1" && trade.ProductType == "27") //金控押金获取
@@ -99,6 +101,8 @@ namespace MySystem
                                     edit.Status = 2;
                                 }
                                 spdb.SaveChanges();
+
+                                PosPushDataNewHelper.Deposit(trade);
                             }
                         }
                         else if ((trade.ProductType == "4" || trade.ProductType == "8" || trade.ProductType == "9") && (trade.Field2 == "5200" || trade.Field2 == "5800")) //乐刷海科费率0.52,0.58的不入库
@@ -132,6 +136,8 @@ namespace MySystem
                                     edit.Status = 2;
                                 }
                                 spdb.SaveChanges();
+
+                                PosPushDataNewHelper.Deposit(trade);
                             }
                         }
                         else if (trade.SerEntryMode == "40" && trade.ProductType == "12") //盒易付押金获取
@@ -166,6 +172,8 @@ namespace MySystem
                                     edit.Status = 2;
                                 }
                                 spdb.SaveChanges();
+
+                                PosPushDataNewHelper.Deposit(trade);
                             }
                         }
                         else if (trade.TradeType == "40" && trade.ProductType == "15") //联客宝押金获取
@@ -200,6 +208,8 @@ namespace MySystem
                                     edit.Status = 2;
                                 }
                                 spdb.SaveChanges();
+
+                                PosPushDataNewHelper.Deposit(trade);
                             }
                         }
                         else if (trade.SerEntryMode == "DEPOSIT" && trade.ProductType == "30") //拉卡拉押金获取
@@ -223,6 +233,8 @@ namespace MySystem
                                     edit.Status = 2;
                                 }
                                 spdb.SaveChanges();
+
+                                PosPushDataNewHelper.Deposit(trade);
                             }
                         }
                         if (trade.DiscountRateFlag == "True")
@@ -247,6 +259,7 @@ namespace MySystem
                         }
                         if (op)
                         {
+                            PosPushDataNewHelper.Trade(trade);
                             PxcModels.PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == TradeSnNo);
                             if (pos != null)
                             {

+ 1 - 0
AppStart/Helper/SycnSpServer/SycnSpUnBindService.cs

@@ -36,6 +36,7 @@ namespace MySystem
                         var tran = db.Database.BeginTransaction();
                         try
                         {
+                            PosPushDataNewHelper.UnBind(Bind);
                             string PosSn = Bind.MerSnNo;
                             string MerNo = Bind.MerNo;
                             PxcModels.MachineForSnNo forSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == PosSn) ?? new PxcModels.MachineForSnNo();