GetRadioCardInfoService.cs 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. using System.Collections.Generic;
  2. using LitJson;
  3. using Library;
  4. using MySystem.Models;
  5. using System;
  6. using System.Security.Cryptography;
  7. using System.Threading;
  8. using System.Linq;
  9. /// <summary>
  10. /// 获取行销宝信息
  11. /// </summary>
  12. public class GetRadioCardInfoService
  13. {
  14. public readonly static GetRadioCardInfoService Instance = new GetRadioCardInfoService();
  15. private GetRadioCardInfoService()
  16. {
  17. }
  18. //测试
  19. string pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCGvhfAXw0yoPgMwBfX6jgDT6XBjWqOFcGmsm/pfnGlqGSsMYZNjMLzwOMWfhB8IO7dyh4nu3caXjZTbBUJLQtIKcOoM/ZFZZiOXBW2xDg5WPSswmtCvaSmct9rrd0OGvZtNvgimcNjnHbiE1/1LPxwKHWyzdxzRul5NJdg0Vdw1QIDAQAB";
  20. 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=";
  21. string orgNo = "YCJG10010003";
  22. string apiKey = "12345678";
  23. string host = "https://bmp-test.cbnyunchang.com";
  24. public void Start()
  25. {
  26. Thread th = new Thread(StartEverTimeDo);
  27. th.IsBackground = true;
  28. th.Start();
  29. }
  30. private void StartEverTimeDo()
  31. {
  32. while (true)
  33. {
  34. WebCMSEntities db = new WebCMSEntities();
  35. try
  36. {
  37. string queryBeginTime = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"); //工号开通时间,开始时间。格式:yyyy-MM-dd
  38. string queryEndTime = DateTime.Now.ToString("yyyy-MM-dd"); //工号开通时间,结束时间。格式:yyyy-MM-dd
  39. string pageNo = "1"; //当前页
  40. string pageSize = "100"; //每页大小
  41. string timestamp = function.getTimeStamp(); //时间戳,精确到秒。签名用参数
  42. SortedList<string, string> req = new SortedList<string, string>();
  43. req.Add("queryBeginTime", queryBeginTime);
  44. req.Add("queryEndTime", queryEndTime);
  45. req.Add("brhNo", orgNo);
  46. req.Add("pageNo", pageNo);
  47. req.Add("pageSize", pageSize);
  48. req.Add("timestamp", timestamp);
  49. string signstr = function.BuildQueryString(req);
  50. function.WriteLog(DateTime.Now.ToString(), "广电卡查询开通工号数据");
  51. function.WriteLog("代签名串\n" + signstr, "广电卡查询开通工号数据");
  52. req.Add("sign", Sign(signstr));
  53. string reqstr = Newtonsoft.Json.JsonConvert.SerializeObject(req);
  54. function.WriteLog("请求参数\n" + reqstr, "广电卡查询开通工号数据");
  55. string reqUrl = host + "/ycsim-business/openapi/query_marketers_info";
  56. function.WriteLog("请求地址\n" + reqUrl, "广电卡查询开通工号数据");
  57. string result = function.PostWebRequest(reqUrl, reqstr, "application/json");
  58. function.WriteLog("响应数据\n" + result, "广电卡查询开通工号数据");
  59. JsonData jsonObj = JsonMapper.ToObject(result);
  60. if (jsonObj["resultCode"].ToString() == "1")
  61. {
  62. var data = jsonObj["data"]["records"];
  63. for (int i = 0; i < data.Count; i++)
  64. {
  65. var IdNo = data["idNo"].ToString();
  66. var radioCardInfo = db.RadioCardInfo.FirstOrDefault(m => m.IdNo == IdNo) ?? new RadioCardInfo();
  67. if (string.IsNullOrEmpty(radioCardInfo.JobId))
  68. {
  69. radioCardInfo.JobId = data["jobId"].ToString(); //行销宝工号
  70. radioCardInfo.JobStatus = data["status"].ToString(); //工号状态
  71. radioCardInfo.OprName = data["oprName"].ToString(); //人员姓名
  72. radioCardInfo.Mobile = data["mobile"].ToString(); //广电手机号
  73. radioCardInfo.IdNo = data["idNo"].ToString(); //身份证号
  74. radioCardInfo.Gender = data["gender"].ToString(); //性别
  75. radioCardInfo.Role = data["role"].ToString(); //角色
  76. radioCardInfo.ChannelCode = data["channelCode"].ToString(); //归属社招渠道编码
  77. radioCardInfo.ChannelName = data["channelName"].ToString(); //归属社招渠道名称
  78. radioCardInfo.ProvincialCompany = data["provincialCompany"].ToString(); //归属省公司
  79. radioCardInfo.OprInviteCode = data["oprInviteCode"].ToString(); //邀请码
  80. radioCardInfo.OpenTime = data["openTime"].ToString(); //开通时间
  81. radioCardInfo.BrhName = data["brhName"].ToString(); //机构名称
  82. radioCardInfo.BrhUserId = data["brhUserId"].ToString(); //机构用户编码
  83. radioCardInfo.UpdateDate = DateTime.Now; //更新时间
  84. }
  85. }
  86. db.SaveChanges();
  87. }
  88. else
  89. {
  90. function.WriteLog(DateTime.Now.ToString() + "\n" + result, "请求行销宝信息接口异常");
  91. Thread.Sleep(1800000);
  92. }
  93. }
  94. catch (Exception ex)
  95. {
  96. function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "获取行销宝信息线程异常");
  97. }
  98. db.Dispose();
  99. }
  100. }
  101. private string Sign(string message)
  102. {
  103. byte[] keyData = Convert.FromBase64String(priKey);
  104. byte[] data = System.Text.Encoding.UTF8.GetBytes(message);
  105. var rsa = System.Security.Cryptography.RSA.Create();
  106. rsa.ImportPkcs8PrivateKey(keyData, out _);
  107. return Convert.ToBase64String(rsa.SignData(data, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1));
  108. }
  109. }