using Newtonsoft.Json; using Newtonsoft.Json.Linq; using QYMessageCenter.Client.Models; using QYMessageCenter.Client.Models.Msg; using QYMessageCenter.Common.Extensions; using System.Runtime.InteropServices; using System.Windows; namespace QYMessageCenter.Client { [ClassInterface(ClassInterfaceType.AutoDual)] [ComVisible(true)] public class GlobalContext { public string Version { get; private set; } = "10003"; public GlobalContext() { messageHandleDic = new Dictionary>() { { "PJZS", OnReceiveMessageFromPJZS } }; popupManager = new PopupManager(); } public User User { get; set; } public string UserToken { get; set; } public string GetUserString() { return JsonConvert.SerializeObject(User); } private IDictionary> messageHandleDic; private PopupManager popupManager; public void OnError(string msg) { App.Current.Dispatcher.Invoke(() => { MessageBox.Show(msg, "齐越消息中心"); }); } public void OnReceiveMessage(string channel, string message) { try { var msg = JsonConvert.DeserializeObject(message); if (!string.IsNullOrEmpty(msg.RecevierId) && !msg.RecevierId.Contains(User.Id.ToString())) return; //忽略不是自己的消息 if (messageHandleDic.ContainsKey(msg.AppCode)) messageHandleDic[msg.AppCode](msg); else OnReceiveMessageFromUnknow(msg); } catch (Exception ex) { MessageBox.Show(ex.Message, "齐越消息中心"); } } private void OnReceiveMessageFromPJZS(Message msg) { if (msg.CustomTypeCode == "SHANGJIASHIBAI") { var smsg = msg.Map(); var j = JObject.Parse(msg.Content); smsg.ActivityName = j.Value("ActivityName"); smsg.SpuLogo = j.Value("SpuLogo"); smsg.MainProductSpu = j.Value("MainProductSpu"); smsg.ErrorMsg = j.Value("ErrorMsg"); App.Current.Dispatcher.BeginInvoke(() => popupManager.Show(smsg)); return; } App.Current.Dispatcher.BeginInvoke(() => popupManager.Show(msg)); } private void OnReceiveMessageFromUnknow(Message msg) { //ReceiveMessageList.Insert(0, msg); App.Current.Dispatcher.BeginInvoke(() => popupManager.Show(msg)); } public void Test() { App.Current.Dispatcher.BeginInvoke((Action)delegate { popupManager.Show(new Message_PJZS_SHANGJIASHIBAI() { AppCode = "PJZS", ShopId = "12899501", CustomTypeCode = "SHANGJIASHIBAI", Title = "信奉玩具专营店", Content = JsonConvert.SerializeObject(new { }), ActivityName = "小熊头枕腰靠", MainProductSpu = "10025305065298", SpuLogo = "https://img13.360buyimg.com/n9/s100x100_jfs/t1/235072/18/12198/94918/65b261a6F6de6ba33/23b803a34546427f.jpg", ErrorMsg = "上架sku失败-com,jd.bk,saf.exception.SafJosException:销售属性排序冲冲突,同一顺序下不能有两个相同别名,别名:[柿柿如意发财果串-乔迁吊坠]顺序:[3]#8d306b629bae458faa58e9f5f0c883fb(Solution reference: https://jos.jd.com/commondoc?listld=171)" }); }); App.Current.Dispatcher.BeginInvoke((Action)delegate { popupManager.Show(new Message() { AppCode = "PJZS", ShopId = "12899501", Title = "信奉玩具专营店", CustomTypeCode = "NOTASK", Content = "上架sku失败-com,jd.bk,saf.exception.SafJosException:这是一个普通模板消息", }); }); } } }