BootstrapAdmin11/Bootstrap.DataAccess/CacheCleanUtility.cs

108 lines
4.6 KiB
C#
Raw Normal View History

using Bootstrap.Security;
2018-06-07 00:45:47 +08:00
using Longbow.Cache;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Bootstrap.DataAccess
{
internal static class CacheCleanUtility
{
2018-06-07 00:45:47 +08:00
const string RetrieveAllRolesDataKey = "BootstrapAdminRoleMiddleware-RetrieveRoles";
/// <summary>
///
/// </summary>
/// <param name="roleIds"></param>
/// <param name="userIds"></param>
/// <param name="groupIds"></param>
/// <param name="menuIds"></param>
/// <param name="dictIds"></param>
/// <param name="logIds"></param>
/// <param name="notifyIds"></param>
/// <param name="exceptionIds"></param>
internal static void ClearCache(string roleIds = null, string userIds = null, string groupIds = null, string menuIds = null, string dictIds = null, string logIds = null, string notifyIds = null, string exceptionIds = null)
{
var cacheKeys = new List<string>();
if (roleIds != null)
{
roleIds.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList().ForEach(id =>
{
cacheKeys.Add(string.Format("{0}-{1}", UserHelper.RetrieveUsersByRoleIdDataKey, id));
cacheKeys.Add(string.Format("{0}-{1}", GroupHelper.RetrieveGroupsByRoleIdDataKey, id));
cacheKeys.Add(string.Format("{0}-{1}", MenuHelper.RetrieveMenusByRoleIdDataKey, id));
});
2017-03-22 12:51:41 +08:00
cacheKeys.Add(RoleHelper.RetrieveRolesDataKey + "*");
cacheKeys.Add(BootstrapMenu.RetrieveMenusDataKey + "*");
2018-06-07 00:45:47 +08:00
cacheKeys.Add(RetrieveAllRolesDataKey + "*");
}
if (userIds != null)
{
userIds.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList().ForEach(id =>
{
cacheKeys.Add(string.Format("{0}-{1}", RoleHelper.RetrieveRolesByUserIdDataKey, id));
cacheKeys.Add(string.Format("{0}-{1}", GroupHelper.RetrieveGroupsByUserIdDataKey, id));
cacheKeys.Add(BootstrapMenu.RetrieveMenusDataKey + "*");
});
2017-03-22 12:51:41 +08:00
cacheKeys.Add(UserHelper.RetrieveNewUsersDataKey + "*");
cacheKeys.Add(BootstrapUser.RetrieveUsersDataKey + "*");
}
if (groupIds != null)
{
groupIds.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList().ForEach(id =>
{
cacheKeys.Add(string.Format("{0}-{1}", RoleHelper.RetrieveRolesByGroupIdDataKey, id));
cacheKeys.Add(string.Format("{0}-{1}", UserHelper.RetrieveUsersByGroupIdDataKey, id));
});
2017-03-22 12:51:41 +08:00
cacheKeys.Add(GroupHelper.RetrieveGroupsDataKey + "*");
cacheKeys.Add(BootstrapMenu.RetrieveMenusDataKey + "*");
2018-06-07 00:45:47 +08:00
cacheKeys.Add(RetrieveAllRolesDataKey + "*");
}
if (menuIds != null)
{
menuIds.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList().ForEach(id =>
{
cacheKeys.Add(string.Format("{0}-{1}", RoleHelper.RetrieveRolesByMenuIdDataKey, id));
});
cacheKeys.Add(MenuHelper.RetrieveMenusByRoleIdDataKey + "*");
cacheKeys.Add(BootstrapMenu.RetrieveMenusDataKey + "*");
}
if (dictIds != null)
{
cacheKeys.Add(BootstrapDict.RetrieveDictsDataKey + "*");
}
if (logIds != null)
{
2017-03-22 12:51:41 +08:00
cacheKeys.Add(LogHelper.RetrieveLogsDataKey + "*");
}
if (notifyIds != null)
{
2017-03-22 12:51:41 +08:00
cacheKeys.Add(NotificationHelper.RetrieveNotificationsDataKey + "*");
}
if (exceptionIds != null)
{
2017-03-22 12:51:41 +08:00
cacheKeys.Add(ExceptionHelper.RetrieveExceptionsDataKey + "*");
}
2017-03-22 12:51:41 +08:00
ClearCache(cacheKeys);
}
/// <summary>
///
/// </summary>
/// <param name="key"></param>
internal static void ClearCache(string key)
{
2018-06-07 00:45:47 +08:00
CacheManager.Clear(key);
CacheManager.CorsClear(new List<string> { key });
}
/// <summary>
///
/// </summary>
/// <param name="keys"></param>
internal static void ClearCache(IEnumerable<string> keys)
{
2018-06-07 12:25:03 +08:00
CacheManager.Clear(keys);
2018-06-07 00:45:47 +08:00
CacheManager.CorsClear(keys);
}
}
}