DuGuYang %!s(int64=2) %!d(string=hai) anos
pai
achega
fc7e88f98d
Modificáronse 3 ficheiros con 198 adicións e 1 borrados
  1. 129 1
      AppStart/Helper/SIMPosMerchantTradeService.cs
  2. 68 0
      AppStart/RadioCardHelper.cs
  3. 1 0
      Startup.cs

+ 129 - 1
AppStart/Helper/SIMPosMerchantTradeService.cs

@@ -5,6 +5,7 @@ using System.Data;
 using Library;
 using MySystem.Models;
 using System.Collections.Generic;
+using LitJson;
 
 /// <summary>
 /// 广电卡交易数据导入
@@ -20,9 +21,13 @@ namespace MySystem
 
         public void Start()//启动
         {
-            Thread thread = new Thread(ImportPostDo);
+            Thread thread = new Thread(ImportPostDo); // 广电卡导激活和交易
             thread.IsBackground = true;
             thread.Start();
+
+            // Thread thread1 = new Thread(SIMActDo); // 通过接口获取广电卡激活数据
+            // thread1.IsBackground = true;
+            // thread1.Start();
         }
 
         public void ImportPostDo()
@@ -370,5 +375,128 @@ namespace MySystem
                 }
             }
         }
+
+
+        /// <summary>
+        /// 通过接口获取广电卡激活数据
+        /// </summary>
+        public void SIMActDo()
+        {
+            while (true)
+            {
+                if (DateTime.Now.Hour > 2 && DateTime.Now.Hour < 19)
+                {
+                    try
+                    {
+                        var time = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
+                        string check = function.ReadInstance("/GetSIMActInfo/check" + time + ".txt");
+                        if (string.IsNullOrEmpty(check))
+                        {
+                            function.WritePage("/InstallmentDeduction/", "check" + DateTime.Now.ToString("yyyy-MM-20") + ".txt", DateTime.Now.ToString("HH:mm:ss"));
+                            var result = RadioCardHelper.Instance.QueryCardOrderInfo(time, time, "1", "99999");
+                            JsonData jsonObj = JsonMapper.ToObject(result);
+                            if (jsonObj["resultCode"].ToString() == "1")
+                            {
+                                SpModels.WebCMSEntities spdb = new SpModels.WebCMSEntities();
+                                var data = jsonObj["data"]["records"];
+                                for (int i = 0; i < data.Count; i++)
+                                {
+                                    var iccId = data["iccId"].ToString();
+                                    var bindRecord = spdb.BindRecord.FirstOrDefault(m => m.MerSnNo == iccId) ?? new SpModels.BindRecord();
+                                    var merchants = spdb.Merchants.FirstOrDefault(m => m.SnNo == iccId) ?? new SpModels.Merchants();
+                                    if (bindRecord.Id == 0 && merchants.Id == 0)
+                                    {
+                                        // {"orderNo":"B20240311214052744568","orderCreateTime":"03/11/2024 21:40:53","phoneNo":"19288438825","firstCharge":"否","initialChargeAmount":"0.00","province":"贵州省","city":"毕节市","productName":"双百套餐","promotionName":null,"productTypeName":"基础套餐","paidInAmount":"100.00","orderStatus":"已完成","activationStatusName":"已激活","activationTime":"03/11/2024 21:51:47","jobId":"VCH010198795","iccId":"89861500232320197354"}
+
+                                        string OrderNo = data["orderNo"].ToString(); //订单编码
+                                        string CreateDate = data["orderCreateTime"].ToString(); //订单创建时间
+                                        string PhoneNumber = data["phoneNo"].ToString(); //选择号码
+                                        string HasFirstCharge = data["firstCharge"].ToString(); //是否有首充
+                                        string FirstChargeAmount = data["initialChargeAmount"].ToString(); //首充金额(元)
+                                        string Province = data["province"].ToString(); //号码归属省份
+                                        string City = data["city"].ToString(); //号码归属地市
+                                        string ProductName = data["productName"].ToString(); //商品名称
+                                        string ActiveName = data["promotionName"].ToString(); //促销活动名称
+                                        string ProductType = data["productTypeName"].ToString(); //商品类型名称
+                                        string ActualAmount = data["paidInAmount"].ToString(); //实付金额(元)
+                                        string OrderStatus = data["orderStatus"].ToString(); //订单状态
+                                        string ActStatus = data["activationStatusName"].ToString(); //激活状态名称
+                                        string ActDate = data["activationTime"].ToString(); //激活时间
+                                        string WorkNo = data["jobId"].ToString(); //BOSS员工工号
+                                        // string AccountName = data[""].ToString(); //账号姓名
+                                        string AccountName = ""; //账号姓名
+                                        string SimNo = iccId; //SIM卡号
+
+                                        string json = "{";
+                                        json += "\"OrderNo\":\"" + OrderNo + "\",";
+                                        json += "\"CreateDate\":\"" + CreateDate + "\",";
+                                        json += "\"PhoneNumber\":\"" + PhoneNumber + "\",";
+                                        json += "\"HasFirstCharge\":\"" + HasFirstCharge + "\",";
+                                        json += "\"FirstChargeAmount\":\"" + FirstChargeAmount + "\",";
+                                        json += "\"Province\":\"" + Province + "\",";
+                                        json += "\"City\":\"" + City + "\",";
+                                        json += "\"ProductName\":\"" + ProductName + "\",";
+                                        json += "\"ActiveName\":\"" + ActiveName + "\",";
+                                        json += "\"ProductType\":\"" + ProductType + "\",";
+                                        json += "\"ActualAmount\":\"" + ActualAmount + "\",";
+                                        json += "\"OrderStatus\":\"" + OrderStatus + "\",";
+                                        json += "\"ActStatus\":\"" + ActStatus + "\",";
+                                        json += "\"ActDate\":\"" + ActDate + "\",";
+                                        json += "\"WorkNo\":\"" + WorkNo + "\",";
+                                        json += "\"AccountName\":\"" + AccountName + "\",";
+                                        json += "\"SimNo\":\"" + SimNo + "\"";
+                                        json += "}";
+
+                                        spdb.BindRecord.Add(new SpModels.BindRecord()
+                                        {
+                                            CreateDate = DateTime.Parse(CreateDate),
+                                            UpdateTime = DateTime.Parse(CreateDate), //机具绑定、解绑时间
+                                            CreateTime = DateTime.Parse(CreateDate), //商户操作时间
+                                            MerNewSnNo = PhoneNumber, //商户手机号
+                                            MerSnNo = SimNo, //序列号
+                                            MerName = AccountName, //商户名称
+                                            MerNo = PhoneNumber, //商户编号
+                                            Remark = ProductType,
+                                            Field1 = Province,
+                                            Field2 = ActiveName,
+                                            Field3 = ProductName,
+                                            Field4 = WorkNo,
+                                            Field5 = ActStatus,
+                                            SeoTitle = ActualAmount,
+                                            SeoKeyword = ActDate,
+                                            SeoDescription = json,
+                                            ProductType = "14",
+                                            Status = 1,
+                                        });
+
+                                        spdb.Merchants.Add(new SpModels.Merchants()
+                                        {
+                                            SnNo = SimNo,
+                                            CreateTime = DateTime.Parse(CreateDate),
+                                            UpdateTime = DateTime.Parse(CreateDate),
+                                            AgentName = AccountName,
+                                            MerRealName = AccountName,
+                                            MerMobile = PhoneNumber,
+                                            MerNo = PhoneNumber,
+                                            MerName = AccountName,
+                                            ProductType = "14",
+                                            Status = 1,
+                                        });
+
+                                        spdb.SaveChanges();
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "获取广电卡激活信息队列异常");
+                    }
+                }
+                Thread.Sleep(600000);
+            }
+        }
+
     }
 }

+ 68 - 0
AppStart/RadioCardHelper.cs

@@ -0,0 +1,68 @@
+using System;
+using Library;
+using System.Collections.Generic;
+using System.Security.Cryptography;
+
+/// <summary>
+/// 广电卡相关接口
+/// </summary>
+namespace MySystem
+{
+    public class RadioCardHelper
+    {
+        public readonly static RadioCardHelper Instance = new RadioCardHelper();
+        private RadioCardHelper()
+        {
+        }
+
+        //测试
+        // string pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCGvhfAXw0yoPgMwBfX6jgDT6XBjWqOFcGmsm/pfnGlqGSsMYZNjMLzwOMWfhB8IO7dyh4nu3caXjZTbBUJLQtIKcOoM/ZFZZiOXBW2xDg5WPSswmtCvaSmct9rrd0OGvZtNvgimcNjnHbiE1/1LPxwKHWyzdxzRul5NJdg0Vdw1QIDAQAB";
+        // string priKey = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAJVLd0ePGZ6fKK1TwcGIxvknF7liDhGyedk3IRxEwTP6P+YS7Y9WaKxDTxIc77ECFSWlvZIPKOXXufMTzwkEGvuAKO+kD9C5R2D+4U3IhztrzcHif8Pn5+I2fVUGuXisUJ+bPxEKSjw7sn5S94uCIsy7o79rHAovAwn+2veLw8xDAgMBAAECgYAqZ8gWnE/jnUOZj9vOFAKoTHFRp8dlQXOYvi76b5ENKXyy5hdyClIq8+dmtq9icLv++IfTD9lHB7J6l9rLrc3XyNmdRSzxSxOT/kPYv1qZoNCqAlTFjWwLNw8tkarcc9NbNXg9UOS/UE97Hs1vlEThOB12cz+5wEF62l+LvZCxeQJBAMrgiujwoKddhCNGuVr3Gac98j4PBqvgtakvYUzvF78gJ0ffngb0J6s1rmGgmaohJc5YE8RwHa4AbIAUjhsdTx0CQQC8YyPgtD44i6+IQMba5zZH1nISSI5yQlPv8dgLXRLDMTnWXx9F7JxXLzAmeJdpkZrdvv1tLzClqDStRClr28rfAkEArFuD6E62TjpWzpmBU9TmiH1KVorxggiQjUHhijj+lbO9a4SBfyrioMQkeHC23CD5O4r8kEEoFfHqPA46hLKryQJAcCHOvDRtCLlUbRSpiKixLYdedLWNXENQtPTN9M2cmmSVmZ0a/0L8OATVc0C6V1MczDqfnDrHiQMa/7sfsJyuHwJBAMLGVR4buHGR/zrnO7FJa4zPw0KK+xUSttDQ9T2+JzV+RcaffmwSm511q+lAZW8e+SrT08WBKhEY8bYUEV95VAM=";
+        // string orgNo = "YCJG10010003";
+        // string apiKey = "12345678";
+        // string host = "https://bmp-test.cbnyunchang.com";
+
+        //生产
+        string pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCZ+zsPxpoM85OFlHOqN3aauub5PqC8lmfFQKgWz7XITCPsWdYrBY/Niu29tSNchYZq+wrboyhrhCx9PacWeF5hQ0qkOIw/vcLQJe4RWXj3eBMfbqj7a2dJlcFI12TP0m1lCaI5z9lZ1FHtZDzU0lBBiRUCRNsJa/ktrt1MjU7nAQIDAQAB";
+        string priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJBIQq3hyV0EseFd6X+nzRc++bZoljQqqou2NPUW5RD+wLBTk08LGwhGq7hR9WlG95aQ3NHbqNT/Tt8eiH9a8k7FzXHDzGAnGpYTh1fCzSx+lzmRA0E8WUH2CdjSLiNxb4Dxvqcrht5TpgFp2NRaGIIAvB+h8QZ1Uhjux5LGiJaJAgMBAAECgYBl65WmrSOIYOOi9qsWMRvwetz9HL5WFXmp/clFBKpFqh/FrxQVNxweaYWuS78XYjlNlAFZAVkvNTaq6C+1/zHAl3YmRowVz2ut1WoTT5MjZBJsR1d7SnSKp/ZuquKGGPG9l1jbUgY6CfekUhvKzUdk3/k7r3zUzUzEWq4dDdM/XQJBAP2SwEDg78nJxKMBmjKYwEpYYYL6DxTYje9J07/Ms7L8W7OtIj+Xm6I0siBWLe4Y5tVtBzaohxnbzoKfNODaNFMCQQCRqb+5fD02I+Sa62gTQepb1u1HgguS1KfFB0inmwMs+VEFYs73N8LC3PSzONhOLlIV/bzs4CvpnMHyF16qie4zAkEA9GBR2DTv41EIqPAKY2jDKOM0Vr4XeseZQlusLtRg+sYqumbI8vBxlUmjwXZMnYJyNI32vb59NXaY91nn5Ctm8QJAYSwkwtCm5R88ujygyXgHqAzRbgrLPcCvyzj4txcqHy6TZkxsVW/VdbmBZK5fXoh4KkODbWJ+6PGyUJZWiN5LEQJAelIs1KLSVQ+GAzDslXIyxYhTP9yLcxAMbCuQ3tY0jbsyYyB/WuxTvIdwGfGp/GLht36/6RqsRc9JtAyMeXkE1g==";
+        string orgNo = "YCJG10010003";
+        string apiKey = "n^ZbEjK%";
+        string host = "https://bmp.cbnyunchang.com";
+
+
+        #region 广电卡查询开卡订单数据
+        public string QueryCardOrderInfo(string queryBeginTime,string queryEndTime,string pageNo,string pageSize)
+        {
+            string timestamp = function.getTimeStamp(); //时间戳,精确到秒。签名用参数
+            SortedList<string, string> req = new SortedList<string, string>();
+            req.Add("queryBeginTime", queryBeginTime); //工号开通时间,开始时间。格式:yyyy-MM-dd
+            req.Add("queryEndTime", queryEndTime); //工号开通时间,结束时间。格式:yyyy-MM-dd
+            req.Add("pageNo", pageNo); //当前页
+            req.Add("pageSize", pageSize);//每页大小
+            req.Add("brhNo", orgNo);
+            req.Add("timestamp", timestamp);
+            string signstr = function.BuildQueryString(req);
+            function.WriteLog(DateTime.Now.ToString(), "广电卡查询开卡订单数据");
+            function.WriteLog("代签名串\n" + signstr, "广电卡查询开卡订单数据");
+            req.Add("sign", Sign(signstr));
+            string reqstr = Newtonsoft.Json.JsonConvert.SerializeObject(req);
+            function.WriteLog("请求参数\n" + reqstr, "广电卡查询开卡订单数据");
+            string reqUrl = host + "/ycsim-business/openapi/query_card_order_info";
+            function.WriteLog("请求地址\n" + reqUrl, "广电卡查询开卡订单数据");
+            string result = function.PostWebRequest(reqUrl, reqstr, "application/json");
+            function.WriteLog("响应数据\n" + result, "广电卡查询开卡订单数据");
+            return result;
+        }
+        #endregion
+
+        private string Sign(string message)
+        {
+            byte[] keyData = Convert.FromBase64String(priKey);
+            byte[] data = System.Text.Encoding.UTF8.GetBytes(message);
+            var rsa = RSA.Create();
+            rsa.ImportPkcs8PrivateKey(keyData, out _);
+            return Convert.ToBase64String(rsa.SignData(data, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1));
+        }
+
+    }
+}

+ 1 - 0
Startup.cs

@@ -153,6 +153,7 @@ namespace MySystem
                 ExcelHelper.Instance.Start();
                 OpExcelHelper.Instance.Start();
                 SIMPosMerchantTradeService.Instance.Start(); //导入广电卡数据
+                SIMPosMerchantTradeService.Instance.SIMActDo(); //通过接口获取广电卡激活数据
                 GetRadioCardInfoService.Instance.Start(); //获取行销宝信息
                 SycnUserMachineCountHelper.Instance.Start(); //重置创客机具数量