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 WxIlleGalerCodeZGNotice : IPopupMessage { private string url = @"../WeiXin/MyIllegalRecord/LookNotice?type=2&stime={0}&etime={1}"; private IWX_MyIllegalRecord _allocateRes; #region 单例 private static volatile WxIlleGalerCodeZGNotice instance = null; private WxIlleGalerCodeZGNotice() { _allocateRes = Infrastructure.NinjectControllerFactory.ninjectKernel.Get(); } // Lock对象,线程安全所用 private static object locked = new Object(); public static WxIlleGalerCodeZGNotice Instance { get { if (instance == null) { lock (locked) { if (instance == null) instance = new WxIlleGalerCodeZGNotice(); } } return instance; } } #endregion public string GetUrl() { return url;// 分配资源提醒 } private Boolean NeedRefresh = true; private DateTime LastLoadTime = DateTime.Now; Dictionary UserRes = new Dictionary(); public void SetNeedRefresh() { NeedRefresh = true; } public string GetMessage(decimal UserId) { if (((TimeSpan)(DateTime.Now - LastLoadTime)).TotalMinutes >= 1) SetNeedRefresh(); if (NeedRefresh) LoadResource(UserId); string messag = string.Empty; if (!UserRes.ContainsKey(UserId)) return string.Empty; WxIllegMsg ResInfo = UserRes[UserId]; url = string.Format(url, ResInfo.ctime.ToShortDateString(), DateTime.Now.ToShortDateString()); return string.Format(ResInfo.message); } private void LoadResource(decimal UserId) { lock (this) { if (!NeedRefresh) return; //重新加载未查看分配资源到UserRes UserRes.Clear(); //查数据库 var lists = _allocateRes.GetNotice(2); foreach (var model in lists) { WxIllegMsg resinfo = new WxIllegMsg(); resinfo.userid = model.inneruserid; resinfo.message = model.content; resinfo.ctime = model.ctime; if (!UserRes.ContainsKey(model.inneruserid)) { UserRes.Add(model.inneruserid, resinfo); } } //把NeedRefresh置为false NeedRefresh = false; LastLoadTime = DateTime.Now; } } } }