using System; using System.Collections.Generic; using System.Linq; using MySystem.Models; using Library; using LitJson; namespace MySystem { public class CheckWeChatSignService { public readonly static CheckWeChatSignService Instance = new CheckWeChatSignService(); private CheckWeChatSignService() { } public void Start(JobMqMsg jobInfo) { try { WebCMSEntities db = new WebCMSEntities(); List deletes = new List(); List signs = TendisDbconn.Instance.GetList("WeChatSignList", 1, 10000000); foreach (MerchantSign sign in signs) { Dictionary dic = new WeChatFunction().QueryMerchant(sign.BusinessCode); if (dic["applyment_state"].ToString() == "APPLYMENT_STATE_TO_BE_SIGNED") { string sign_url = dic["sign_url"].ToString(); MerchantAddInfo merchantadd = db.MerchantAddInfo.FirstOrDefault(m => m.Id == sign.MerchantAddInfoId && m.Status == 0); if (merchantadd != null) { merchantadd.Status = 1; string SignUrlList = function.CheckNull(merchantadd.SeoKeyword); if (string.IsNullOrEmpty(SignUrlList)) { SignUrlList = "WeChat:" + sign_url + ";"; } else { SignUrlList += "WeChat:" + sign_url+ ";"; } merchantadd.SeoKeyword = SignUrlList; db.SaveChanges(); PxcModels.WebCMSEntities dbpxc = new PxcModels.WebCMSEntities(); PxcModels.MerchantAddInfo merchantadd2 = dbpxc.MerchantAddInfo.FirstOrDefault(m => m.Id == sign.MerchantAddInfoId && m.Status == 0); if (merchantadd2 != null) { merchantadd2.Status = 1; merchantadd2.SeoKeyword = SignUrlList; dbpxc.SaveChanges(); } dbpxc.Dispose(); BothdisDbconn.Instance.Set("MerchantAddInfo:" + sign.MerchantAddInfoId, merchantadd); } } else if (dic["applyment_state"].ToString() == "APPLYMENT_STATE_FINISHED") { MerchantAddInfo merchantadd = db.MerchantAddInfo.FirstOrDefault(m => m.Id == sign.MerchantAddInfoId && m.Status == 1); if (merchantadd != null) { merchantadd.Status = 2; db.SaveChanges(); PxcModels.WebCMSEntities dbpxc = new PxcModels.WebCMSEntities(); PxcModels.MerchantAddInfo merchantadd2 = dbpxc.MerchantAddInfo.FirstOrDefault(m => m.Id == sign.MerchantAddInfoId && m.Status == 1); if (merchantadd2 != null) { merchantadd2.Status = 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("WeChatSignList"); TendisDbconn.Instance.AddList("WeChatSignList", 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()); } } } }