using System; using System.Collections.Generic; using System.Linq; using MySystem.Models; using Library; using LitJson; namespace MySystem { public class CheckAlipaySignService { public readonly static CheckAlipaySignService Instance = new CheckAlipaySignService(); private CheckAlipaySignService() { } public void Start(JobMqMsg jobInfo) { try { WebCMSEntities db = new WebCMSEntities(); List deletes = new List(); List signs = TendisDbconn.Instance.GetList("AliaySignList", 1, 10000000); foreach (MerchantSign sign in signs) { string content = new AlipayFunction().CommonSignConfirm(sign.BusinessCode); JsonData dic = JsonMapper.ToObject(content); if (dic["alipay_open_agent_order_query_response"]["code"].ToString() == "10000") { if (dic["alipay_open_agent_order_query_response"]["order_status"].ToString() == "MERCHANT_CONFIRM") { string sign_url = dic["alipay_open_agent_order_query_response"]["confirm_url"].ToString(); MerchantAddInfo merchantadd = db.MerchantAddInfo.FirstOrDefault(m => m.Id == sign.MerchantAddInfoId && m.QueryCount == 0); if (merchantadd != null) { merchantadd.QueryCount = 1; string SignUrlList = function.CheckNull(merchantadd.SeoKeyword); if (string.IsNullOrEmpty(SignUrlList)) { SignUrlList = "Alipay:" + sign_url + ";"; } else { SignUrlList = "Alipay:" + sign_url+ ";" + SignUrlList; } merchantadd.SeoKeyword = SignUrlList; db.SaveChanges(); PxcModels.WebCMSEntities dbpxc = new PxcModels.WebCMSEntities(); PxcModels.MerchantAddInfo merchantadd2 = dbpxc.MerchantAddInfo.FirstOrDefault(m => m.Id == sign.MerchantAddInfoId && m.QueryCount == 0); if (merchantadd2 != null) { merchantadd2.QueryCount = 1; merchantadd2.SeoKeyword = SignUrlList; dbpxc.SaveChanges(); } dbpxc.Dispose(); BothdisDbconn.Instance.Set("MerchantAddInfo:" + sign.MerchantAddInfoId, merchantadd); } } else if (dic["alipay_open_agent_order_query_response"]["order_status"].ToString() == "MERCHANT_CONFIRM_SUCCESS") { MerchantAddInfo merchantadd = db.MerchantAddInfo.FirstOrDefault(m => m.Id == sign.MerchantAddInfoId && m.QueryCount == 1); if (merchantadd != null) { merchantadd.QueryCount = 2; db.SaveChanges(); PxcModels.WebCMSEntities dbpxc = new PxcModels.WebCMSEntities(); PxcModels.MerchantAddInfo merchantadd2 = dbpxc.MerchantAddInfo.FirstOrDefault(m => m.Id == sign.MerchantAddInfoId && m.QueryCount == 1); if (merchantadd2 != null) { merchantadd2.QueryCount = 2; dbpxc.SaveChanges(); } dbpxc.Dispose(); BothdisDbconn.Instance.Set("MerchantAddInfo:" + sign.MerchantAddInfoId, merchantadd); MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == sign.MerchantAddInfoId); List merchants = RedisDbconn.Instance.GetList("TmpMerchantInfo:" + merchant.UserId, 1, 1000000); MerchantInfo check = merchants.FirstOrDefault(m => m.Id == sign.MerchantAddInfoId); if (check != null) { merchants.Remove(check); RedisDbconn.Instance.Clear("TmpMerchantInfo:" + merchant.UserId); RedisDbconn.Instance.AddList("TmpMerchantInfo:" + merchant.UserId, merchants.ToArray()); } deletes.Add(sign); } } } } if (deletes.Count > 0) { foreach (MerchantSign delete in deletes) { signs.Remove(delete); } TendisDbconn.Instance.Clear("AliaySignList"); TendisDbconn.Instance.AddList("AliaySignList", signs.ToArray()); } jobInfo.Status = 1; jobInfo.Msg = "执行完成"; RabbitMQClient.Instance.SendMsg(Newtonsoft.Json.JsonConvert.SerializeObject(jobInfo), "PublicBack"); } catch (Exception ex) { TendisDbconn.Instance.AddList("public:merchant:signerr", DateTime.Now.ToString() + ":" + ex.ToString()); } } } }