CheckWeChatSignService.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using MySystem.Models.Main;
  5. using Library;
  6. using LitJson;
  7. using System.Text.RegularExpressions;
  8. using System.Threading;
  9. namespace MySystem
  10. {
  11. public class CheckWeChatSignService
  12. {
  13. public readonly static CheckWeChatSignService Instance = new CheckWeChatSignService();
  14. private CheckWeChatSignService()
  15. { }
  16. public void Start()
  17. {
  18. Thread th = new Thread(StartListen);
  19. th.IsBackground = true;
  20. th.Start();
  21. }
  22. public void StartListen()
  23. {
  24. while (true)
  25. {
  26. string content = RedisDbconn.Instance.RPop<string>("WeChatSignQueue");
  27. if (!string.IsNullOrEmpty(content))
  28. {
  29. QueryMerchantStatus queryMerchantStatus = Newtonsoft.Json.JsonConvert.DeserializeObject<QueryMerchantStatus>(content);
  30. string result = StartDo(queryMerchantStatus);
  31. if(result == "wait")
  32. {
  33. Thread.Sleep(10000);
  34. RedisDbconn.Instance.AddList("WeChatSignQueue", queryMerchantStatus);
  35. }
  36. }
  37. else
  38. {
  39. Thread.Sleep(2000);
  40. }
  41. }
  42. }
  43. public string StartDo(QueryMerchantStatus query)
  44. {
  45. try
  46. {
  47. var mId = int.Parse(query.MerchantId);
  48. WebCMSEntities db = new WebCMSEntities();
  49. var returnInfo = HaoDaHelper.Instance.QueryMerchantStatus(HaoDaHelper.BrhCode,query.MerchantNo);
  50. JsonData dic = JsonMapper.ToObject(returnInfo);
  51. if (dic["data"]["code"].ToString() == "4")
  52. {
  53. MerchantAddInfo merchantadd = db.MerchantAddInfo.FirstOrDefault(m => m.Id == mId);
  54. if (merchantadd != null)
  55. {
  56. merchantadd.Status = 1;
  57. // merchantadd.AlipayPid = dic["storeNo"].ToString();
  58. // merchantadd.AlipayAuthToken = dic["outMchtNo"].ToString();
  59. merchantadd.SeoKeyword = dic["storeNo"].ToString();
  60. merchantadd.SeoDescription = dic["outMchtNo"].ToString();
  61. MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == mId);
  62. if (merchant != null)
  63. {
  64. merchant.Status = 1;
  65. }
  66. JsonData Info = JsonMapper.ToObject(HaoDaHelper.Instance.OpenDivideAccounts(merchantadd.AlipayAuthToken, merchantadd.AlipayPid));
  67. if (Info["resultCode"].ToString() == "0")
  68. {
  69. merchantadd.QueryCount = -1;
  70. merchantadd.AlipayRemark = Info["errorDesc"].ToString();
  71. }
  72. db.SaveChanges();
  73. }
  74. return "wait";
  75. }
  76. else if (dic["data"]["code"].ToString() == "3")
  77. {
  78. MerchantAddInfo merchantadd = db.MerchantAddInfo.FirstOrDefault(m => m.Id == mId);
  79. if (merchantadd != null)
  80. {
  81. merchantadd.WeChatRemark = dic["option"].ToString();
  82. merchantadd.Status = -1;
  83. MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == mId);
  84. if (merchant != null)
  85. {
  86. merchant.Status = -1;
  87. }
  88. db.SaveChanges();
  89. }
  90. }
  91. else
  92. {
  93. return "wait";
  94. }
  95. }
  96. catch (Exception ex)
  97. {
  98. function.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "好哒商户进件状态查询异常");
  99. }
  100. return "";
  101. }
  102. }
  103. }