TG.WXCRM.V4/WebHelper/DoItems/WxXinUnlineNotice.cs

90 lines
2.9 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Ninject;
using System;
using System.Collections.Generic;
using WX.CRM.IBLL.Wx;
using WX.CRM.WebHelper.UtilityModel;
namespace WX.CRM.WebHelper.DoItems
{
public class WxXinUnlineNotice : IPopupMessage
{
private IWX_ALIVEIMEI _allocateRes;
#region
private static volatile WxXinUnlineNotice instance = null;
private WxXinUnlineNotice()
{
_allocateRes = Infrastructure.NinjectControllerFactory.ninjectKernel.Get<IWX_ALIVEIMEI>();
}
// Lock对象线程安全所用
private static object locked = new Object();
public static WxXinUnlineNotice Instance
{
get
{
if (instance == null)
{
lock (locked)
{
if (instance == null)
instance = new WxXinUnlineNotice();
}
}
return instance;
}
}
#endregion
public string GetUrl()
{
return @"../WeiXin/WorkAccount/AliveIndex";// 分配资源提醒
}
private Boolean NeedRefresh = true;
private DateTime LastLoadTime = DateTime.Now;
Dictionary<decimal, UnlineMsg> UserRes = new Dictionary<decimal, UnlineMsg>();
public void SetNeedRefresh()
{
NeedRefresh = true;
}
public string GetMessage(decimal UserId)
{
if (((TimeSpan)(DateTime.Now - LastLoadTime)).TotalMinutes >= 1)
SetNeedRefresh();
if (NeedRefresh)
LoadResource(UserId);
if (!UserRes.ContainsKey(UserId))
return string.Empty;
UnlineMsg ResInfo = UserRes[UserId];
return string.Format(ResInfo.message);
}
private void LoadResource(decimal UserId)
{
lock (this)
{
if (!NeedRefresh)
return;
//重新加载未查看分配资源到UserRes
UserRes.Clear();
//查数据库
var lists = _allocateRes.UnlineNoticeGet();
foreach (var model in lists)
{
UnlineMsg resinfo = null;
if (!UserRes.ContainsKey(model.userid))
{
resinfo = new UnlineMsg();
resinfo.userid = model.userid;
resinfo.message = model.content;
UserRes.Add(model.userid, resinfo);
}
else
{
resinfo = UserRes[model.userid];
}
}
//把NeedRefresh置为false
NeedRefresh = false;
LastLoadTime = DateTime.Now;
}
}
}
}