齐越消息中心
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

127 lines
4.3 KiB

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<string, Action<Message>>()
{
{ "PJZS", OnReceiveMessageFromPJZS }
};
popupManager = new PopupManager();
}
public User User { get; set; }
public string UserToken { get; set; }
public string GetUserString()
{
return JsonConvert.SerializeObject(User);
}
private IDictionary<string, Action<Message>> 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>(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<Message_PJZS_SHANGJIASHIBAI>();
var j = JObject.Parse(msg.Content);
smsg.ActivityName = j.Value<string>("ActivityName");
smsg.SpuLogo = j.Value<string>("SpuLogo");
smsg.MainProductSpu = j.Value<string>("MainProductSpu");
smsg.ErrorMsg = j.Value<string>("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:这是一个普通模板消息",
});
});
}
}
}