/// <summary>
/// Get Message List From Cache
/// </summary>
/// <param name="MsgCache">IDictionary</param>
/// <returns>IList</returns>
public static IList GetMessageListFromCache(PaginationGoPageObject pgpo)
{
IList messageDataObjects = CachePO["MessageList"] as IList;
int FirstPageInAboutArea = GetFirstPageInAboutArea(pgpo.CachePageCount, pgpo.CurrentPage);//取得范围内的首页号
IList messageBusinessObjects = null;
if (messageDataObjects != null && messageDataObjects.Count != 0)//判断数据是否存在
{
if ((pgpo.CurrentPage >= ((int)CachePO.Msg["currentPage"])) && (pgpo.CurrentPage < ((int)CachePO.Msg["currentPage"] + pgpo.CachePageCount)))//判断当前页的有效性
{
messageBusinessObjects = new ArrayList(messageDataObjects.Count);
foreach (MessageDataObject MessageDO in messageDataObjects)
{
messageBusinessObjects.Add(new MessageBusinessObject(MessageDO));
}
}
else//缓存中的数据不在请求范围内
{
messageDataObjects = MessageDataAccessObject.GetMessageListFromCacheBySqlTopIn(pgpo, FirstPageInAboutArea);
messageBusinessObjects = null;
if (messageDataObjects == null || messageDataObjects.Count == 0)
{
messageBusinessObjects = null;
}
else
{
messageBusinessObjects = new ArrayList(messageDataObjects.Count);
foreach (MessageDataObject MessageDO in messageDataObjects)
{
messageBusinessObjects.Add(new MessageBusinessObject(MessageDO));
}
CachePO["MessageList"] = messageDataObjects;//写入缓存
IDictionary pageMsg = new SortedList();
pageMsg["currentPage"] = FirstPageInAboutArea;
CachePO.Msg = pageMsg;//写入附加信息
}
}
}
else
{
messageDataObjects = MessageDataAccessObject.GetMessageListFromCacheBySqlTopIn(pgpo,FirstPageInAboutArea);
messageBusinessObjects = null;
if (messageDataObjects == null || messageDataObjects.Count == 0)
{
messageBusinessObjects = null;
}
else
{
messageBusinessObjects = new ArrayList(messageDataObjects.Count);
foreach (MessageDataObject MessageDO in messageDataObjects)
{
messageBusinessObjects.Add(new MessageBusinessObject(MessageDO));
}
CachePO["MessageList"] = messageDataObjects;//写入缓存
IDictionary pageMsg = new SortedList();
pageMsg["currentPage"] = GetFirstPageInAboutArea(pgpo.CachePageCount, pgpo.CurrentPage);
CachePO.Msg = pageMsg;//写入附加信息
}
}
return messageBusinessObjects;
}
