CheckWeChatSignService.cs 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using MySystem.Models;
  5. using Library;
  6. using LitJson;
  7. using System.Text.RegularExpressions;
  8. namespace MySystem
  9. {
  10. public class CheckWeChatSignService
  11. {
  12. public readonly static CheckWeChatSignService Instance = new CheckWeChatSignService();
  13. private CheckWeChatSignService()
  14. { }
  15. public void Start(JobMqMsg jobInfo)
  16. {
  17. try
  18. {
  19. PxcModels.WebCMSEntities db = new PxcModels.WebCMSEntities();
  20. List<MerchantSign> deletes = new List<MerchantSign>();
  21. List<MerchantSign> signs = TendisDbconn.Instance.GetList<MerchantSign>("WeChatSignList", 1, 10000000); // TODO: 换成mysql存储遍历
  22. foreach (MerchantSign sign in signs)
  23. {
  24. Dictionary<string, object> dic = new WeChatFunction().QueryMerchant(sign.BusinessCode);
  25. if (dic["applyment_state"].ToString() == "APPLYMENT_STATE_TO_BE_SIGNED")
  26. {
  27. string sign_url = dic["sign_url"].ToString();
  28. string sub_mchid = dic["sub_mchid"].ToString();
  29. PxcModels.MerchantAddInfo merchantadd = db.MerchantAddInfo.FirstOrDefault(m => m.Id == sign.MerchantAddInfoId && m.Status == 0);
  30. if (merchantadd != null)
  31. {
  32. merchantadd.Status = 1;
  33. merchantadd.SubMchid = sub_mchid;
  34. string SignUrlList = function.CheckNull(merchantadd.SeoKeyword);
  35. if (string.IsNullOrEmpty(SignUrlList))
  36. {
  37. SignUrlList = "WeChat:" + sign_url + ";";
  38. }
  39. else
  40. {
  41. SignUrlList += "WeChat:" + sign_url+ ";";
  42. }
  43. merchantadd.SeoKeyword = SignUrlList;
  44. PxcModels.MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == sign.MerchantAddInfoId);
  45. if (merchantadd.Status > 0 && merchantadd.QueryCount > 0)
  46. {
  47. merchant.Status = 1;
  48. }
  49. db.SaveChanges();
  50. BothdisDbconn.Instance.Set("MerchantAddInfo:" + sign.MerchantAddInfoId, merchantadd);
  51. }
  52. }
  53. else if (dic["applyment_state"].ToString() == "APPLYMENT_STATE_FINISHED")
  54. {
  55. PxcModels.MerchantAddInfo merchantadd = db.MerchantAddInfo.FirstOrDefault(m => m.Id == sign.MerchantAddInfoId && m.Status == 1);
  56. if (merchantadd != null)
  57. {
  58. merchantadd.Status = 2;
  59. BothdisDbconn.Instance.Set("MerchantAddInfo:" + sign.MerchantAddInfoId, merchantadd);
  60. PxcModels.MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == sign.MerchantAddInfoId);
  61. if (merchantadd.Status == 2 && merchantadd.QueryCount == 2)
  62. {
  63. merchant.Status = 2;
  64. }
  65. db.SaveChanges();
  66. List<MerchantInfo> merchants = RedisDbconn.Instance.GetList<MerchantInfo>("TmpMerchantInfo:" + merchant.UserId, 1, 1000000);
  67. MerchantInfo check = merchants.FirstOrDefault(m => m.Id == sign.MerchantAddInfoId);
  68. if (check != null)
  69. {
  70. merchants.Remove(check);
  71. RedisDbconn.Instance.Clear("TmpMerchantInfo:" + merchant.UserId);
  72. RedisDbconn.Instance.AddList("TmpMerchantInfo:" + merchant.UserId, merchants.ToArray());
  73. }
  74. deletes.Add(sign);
  75. }
  76. }
  77. else if (dic["applyment_state"].ToString() == "APPLYMENT_STATE_REJECTED")
  78. {
  79. PxcModels.MerchantAddInfo merchantadd = db.MerchantAddInfo.FirstOrDefault(m => m.Id == sign.MerchantAddInfoId);
  80. if (merchantadd != null)
  81. {
  82. string Season = function.CheckNull(merchantadd.SeoDescription);
  83. if (string.IsNullOrEmpty(Season))
  84. {
  85. Season = "WeChat:" + dic["reject_reason"].ToString() + ";";
  86. }
  87. else
  88. {
  89. Season = Regex.Replace(Season, "WeChat:.*?;", "");
  90. Season += "WeChat:" + dic["reject_reason"].ToString() + ";";
  91. }
  92. merchantadd.SeoDescription = Season;
  93. merchantadd.Status = -1;
  94. db.SaveChanges();
  95. BothdisDbconn.Instance.Set("MerchantAddInfo:" + sign.MerchantAddInfoId, merchantadd);
  96. PxcModels.MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == sign.MerchantAddInfoId);
  97. if (merchant != null)
  98. {
  99. merchant.Status = -1;
  100. BothdisDbconn.Instance.Set("MerchantInfo:" + sign.MerchantAddInfoId, merchant);
  101. }
  102. deletes.Add(sign);
  103. }
  104. }
  105. }
  106. if (deletes.Count > 0)
  107. {
  108. foreach (MerchantSign delete in deletes)
  109. {
  110. signs.Remove(delete);
  111. }
  112. TendisDbconn.Instance.Clear("WeChatSignList");
  113. TendisDbconn.Instance.AddList("WeChatSignList", signs.ToArray());
  114. }
  115. jobInfo.Status = 1;
  116. jobInfo.Msg = "执行完成";
  117. RabbitMQClient.Instance.SendMsg(Newtonsoft.Json.JsonConvert.SerializeObject(jobInfo), "PublicBack");
  118. }
  119. catch (Exception ex)
  120. {
  121. TendisDbconn.Instance.AddList("public:merchant:signerr", DateTime.Now.ToString() + ":" + ex.ToString());
  122. }
  123. }
  124. }
  125. }