using Ninject; using System; using System.Collections.Generic; using System.Linq; using WX.CRM.Common; using WX.CRM.IBLL.Base; using WX.CRM.IBLL.Csvr; namespace WX.CRM.WebHelper.DoItems { /// /// 分配资源提醒 /// public sealed class CsvrMessage : IPopupMessage { private ICSVR_MESSAGE _allocateRes; private IBAS_INNERUSER_Q _basuser; #region 单例 private static volatile CsvrMessage instance = null; private CsvrMessage() { _allocateRes = Infrastructure.NinjectControllerFactory.ninjectKernel.Get(); _basuser = Infrastructure.NinjectControllerFactory.ninjectKernel.Get(); } // Lock对象,线程安全所用 private static object locked = new Object(); public static CsvrMessage Instance { get { if (instance == null) { lock (locked) { if (instance == null) instance = new CsvrMessage(); } } return instance; } } #endregion #region 私有数据 private Boolean NeedRefresh = true; private DateTime LastLoadTime = DateTime.Now; private void LoadResource(decimal UserId) { lock (this) { if (!NeedRefresh) return; var entry = _basuser.GetModel(UserId); if (entry != null) { var count = _allocateRes.GetList(m => m.ISLOOK == 0 && m.EID == entry.EID).ToList().Count(); if (UserRes.ContainsKey(UserId)) UserRes[UserId] = count; else UserRes.Add(UserId, count); } NeedRefresh = false; LastLoadTime = DateTime.Now; } } #endregion public string GetUrl() { return @"../Cms/CmsUp/Index";// 分配资源提醒 } public void SetNeedRefresh() { NeedRefresh = true; } public void SetView(decimal UserId, string pkid) { } private Dictionary UserRes = new Dictionary(); public string GetMessage(decimal UserId) { SetNeedRefresh(); if (NeedRefresh) LoadResource(UserId); if (!UserRes.ContainsKey(UserId)) return string.Empty; var ResInfo = UserRes[UserId]; return string.Format("{0}", ResInfo); } } }