CheckAlipaySignService.cs 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  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 CheckAlipaySignService
  11. {
  12. public readonly static CheckAlipaySignService Instance = new CheckAlipaySignService();
  13. private CheckAlipaySignService()
  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>("AlipaySignList", 1, 10000000); // TODO: 换成mysql存储遍历
  22. foreach (MerchantSign sign in signs)
  23. {
  24. string content = new AlipayFunction().QuerySignStatus(sign.BusinessCode);
  25. JsonData dic = JsonMapper.ToObject(content);
  26. if (dic["alipay_open_agent_order_query_response"]["code"].ToString() == "10000")
  27. {
  28. if (dic["alipay_open_agent_order_query_response"]["order_status"].ToString() == "MERCHANT_CONFIRM")
  29. {
  30. string sign_url = dic["alipay_open_agent_order_query_response"]["confirm_url"].ToString();
  31. PxcModels.MerchantAddInfo merchantadd = db.MerchantAddInfo.FirstOrDefault(m => m.Id == sign.MerchantAddInfoId && m.QueryCount == 0);
  32. if (merchantadd != null)
  33. {
  34. merchantadd.QueryCount = 1;
  35. string SignUrlList = function.CheckNull(merchantadd.SeoKeyword);
  36. if (string.IsNullOrEmpty(SignUrlList))
  37. {
  38. SignUrlList = "Alipay:" + sign_url + ";";
  39. }
  40. else
  41. {
  42. SignUrlList = "Alipay:" + sign_url+ ";" + SignUrlList;
  43. }
  44. merchantadd.SeoKeyword = SignUrlList;
  45. merchantadd.SeoTitle = dic["alipay_open_agent_order_query_response"]["merchant_pid"].ToString();
  46. db.SaveChanges();
  47. BothdisDbconn.Instance.Set("MerchantAddInfo:" + sign.MerchantAddInfoId, merchantadd);
  48. }
  49. }
  50. else if (dic["alipay_open_agent_order_query_response"]["order_status"].ToString() == "MERCHANT_CONFIRM_SUCCESS")
  51. {
  52. PxcModels.MerchantAddInfo merchantadd = db.MerchantAddInfo.FirstOrDefault(m => m.Id == sign.MerchantAddInfoId && m.QueryCount == 1);
  53. if (merchantadd != null)
  54. {
  55. merchantadd.QueryCount = 2;
  56. db.SaveChanges();
  57. BothdisDbconn.Instance.Set("MerchantAddInfo:" + sign.MerchantAddInfoId, merchantadd);
  58. PxcModels.MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == sign.MerchantAddInfoId);
  59. List<PxcModels.MerchantInfo> merchants = RedisDbconn.Instance.GetList<PxcModels.MerchantInfo>("TmpMerchantInfo:" + merchant.UserId, 1, 1000000);
  60. PxcModels.MerchantInfo check = merchants.FirstOrDefault(m => m.Id == sign.MerchantAddInfoId);
  61. if (check != null)
  62. {
  63. merchants.Remove(check);
  64. RedisDbconn.Instance.Clear("TmpMerchantInfo:" + merchant.UserId);
  65. RedisDbconn.Instance.AddList("TmpMerchantInfo:" + merchant.UserId, merchants.ToArray());
  66. }
  67. deletes.Add(sign);
  68. }
  69. }
  70. else if (dic["alipay_open_agent_order_query_response"]["order_status"].ToString() == "MERCHANT_APPLY_ORDER_CANCELED")
  71. {
  72. PxcModels.MerchantAddInfo merchantadd = db.MerchantAddInfo.FirstOrDefault(m => m.Id == sign.MerchantAddInfoId);
  73. if (merchantadd != null)
  74. {
  75. string Season = function.CheckNull(merchantadd.SeoDescription);
  76. if (string.IsNullOrEmpty(Season))
  77. {
  78. Season = "Alipay:" + dic["alipay_open_agent_order_query_response"]["reject_reason"].ToString() + ";";
  79. }
  80. else
  81. {
  82. Season = Regex.Replace(Season, "Alipay:.*?;", "");
  83. Season += "Alipay:" + dic["alipay_open_agent_order_query_response"]["reject_reason"].ToString() + ";";
  84. }
  85. merchantadd.SeoDescription = Season;
  86. merchantadd.QueryCount = -1;
  87. db.SaveChanges();
  88. BothdisDbconn.Instance.Set("MerchantAddInfo:" + sign.MerchantAddInfoId, merchantadd);
  89. PxcModels.MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == sign.MerchantAddInfoId);
  90. if (merchant != null)
  91. {
  92. merchant.Status = -1;
  93. BothdisDbconn.Instance.Set("MerchantInfo:" + sign.MerchantAddInfoId, merchant);
  94. }
  95. deletes.Add(sign);
  96. }
  97. }
  98. }
  99. }
  100. if (deletes.Count > 0)
  101. {
  102. foreach (MerchantSign delete in deletes)
  103. {
  104. signs.Remove(delete);
  105. }
  106. TendisDbconn.Instance.Clear("AliaySignList");
  107. TendisDbconn.Instance.AddList("AliaySignList", signs.ToArray());
  108. }
  109. jobInfo.Status = 1;
  110. jobInfo.Msg = "执行完成";
  111. RabbitMQClient.Instance.SendMsg(Newtonsoft.Json.JsonConvert.SerializeObject(jobInfo), "PublicBack");
  112. }
  113. catch (Exception ex)
  114. {
  115. TendisDbconn.Instance.AddList("public:merchant:signerr", DateTime.Now.ToString() + ":" + ex.ToString());
  116. }
  117. }
  118. }
  119. }