BootstrapAdmin/Bootstrap.DataAccess/Helper/RoleHelper.cs

122 lines
5.4 KiB
C#
Raw Normal View History

using Longbow.Cache;
using Longbow.Data;
2018-10-19 23:09:52 +08:00
using System.Collections.Generic;
namespace Bootstrap.DataAccess
{
/// <summary>
///
/// </summary>
public static class RoleHelper
{
public const string RetrieveRolesDataKey = "RoleHelper-RetrieveRoles";
public const string RetrieveRolesByUserIdDataKey = "RoleHelper-RetrieveRolesByUserId";
public const string RetrieveRolesByMenuIdDataKey = "RoleHelper-RetrieveRolesByMenuId";
public const string RetrieveRolesByGroupIdDataKey = "RoleHelper-RetrieveRolesByGroupId";
public const string RetrieveRolesByUserNameDataKey = "RoleHelper-RetrieveRolesByUserName";
public const string RetrieveRolesByUrlDataKey = "RoleHelper-RetrieveRolesByUrl";
2018-10-19 23:09:52 +08:00
/// <summary>
/// 查询所有角色
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public static IEnumerable<Role> Retrieves() => CacheManager.GetOrAdd(RetrieveRolesDataKey, key => DbContextManager.Create<Role>().Retrieves());
2018-10-19 23:09:52 +08:00
/// <summary>
/// 保存用户角色关系
/// </summary>
/// <param name="userId"></param>
2018-10-19 23:09:52 +08:00
/// <param name="roleIds"></param>
/// <returns></returns>
public static bool SaveByUserId(string userId, IEnumerable<string> roleIds)
{
var ret = DbContextManager.Create<Role>().SaveByUserId(userId, roleIds);
if (ret) CacheCleanUtility.ClearCache(userIds: new List<string>() { userId }, roleIds: roleIds);
return ret;
}
2018-10-19 23:09:52 +08:00
/// <summary>
/// 查询某个用户所拥有的角色
/// </summary>
/// <returns></returns>
public static IEnumerable<Role> RetrievesByUserId(string userId) => CacheManager.GetOrAdd($"{RetrieveRolesByUserIdDataKey}-{userId}", key => DbContextManager.Create<Role>().RetrievesByUserId(userId), RetrieveRolesByUserIdDataKey);
2018-10-19 23:09:52 +08:00
/// <summary>
/// 删除角色表
/// </summary>
/// <param name="value"></param>
public static bool Delete(IEnumerable<string> value)
{
var ret = DbContextManager.Create<Role>().Delete(value);
if (ret) CacheCleanUtility.ClearCache(roleIds: value);
return ret;
}
2018-10-19 23:09:52 +08:00
/// <summary>
/// 保存新建/更新的角色信息
/// </summary>
/// <param name="p"></param>
/// <returns></returns>
public static bool Save(Role p)
{
var ret = DbContextManager.Create<Role>().Save(p);
if (ret) CacheCleanUtility.ClearCache(roleIds: string.IsNullOrEmpty(p.Id) ? new List<string>() : new List<string> { p.Id });
return ret;
}
2018-10-19 23:09:52 +08:00
/// <summary>
/// 查询某个菜单所拥有的角色
/// </summary>
/// <param name="menuId"></param>
/// <returns></returns>
public static IEnumerable<Role> RetrievesByMenuId(string menuId) => CacheManager.GetOrAdd(string.Format("{0}-{1}", RetrieveRolesByMenuIdDataKey, menuId), key => DbContextManager.Create<Role>().RetrievesByMenuId(menuId), RetrieveRolesByMenuIdDataKey);
2018-10-19 23:09:52 +08:00
/// <summary>
///
/// </summary>
/// <param name="menuId"></param>
2018-10-19 23:09:52 +08:00
/// <param name="roleIds"></param>
/// <returns></returns>
public static bool SavaByMenuId(string menuId, IEnumerable<string> roleIds)
{
var ret = DbContextManager.Create<Role>().SavaByMenuId(menuId, roleIds);
if (ret) CacheCleanUtility.ClearCache(roleIds: roleIds, menuIds: new List<string>() { menuId });
return ret;
}
2018-10-19 23:09:52 +08:00
/// <summary>
/// 根据GroupId查询和该Group有关的所有Roles
/// </summary>
/// <param name="groupId"></param>
/// <returns></returns>
public static IEnumerable<Role> RetrievesByGroupId(string groupId) => CacheManager.GetOrAdd(string.Format("{0}-{1}", RetrieveRolesByGroupIdDataKey, groupId), key => DbContextManager.Create<Role>().RetrievesByGroupId(groupId), RetrieveRolesByGroupIdDataKey);
2018-10-19 23:09:52 +08:00
/// <summary>
/// 根据GroupId更新Roles信息删除旧的Roles信息插入新的Roles信息
/// </summary>
/// <param name="groupId"></param>
2018-10-19 23:09:52 +08:00
/// <param name="roleIds"></param>
/// <returns></returns>
public static bool SaveByGroupId(string groupId, IEnumerable<string> roleIds)
{
var ret = DbContextManager.Create<Role>().SaveByGroupId(groupId, roleIds);
if (ret) CacheCleanUtility.ClearCache(roleIds: roleIds, groupIds: new List<string>() { groupId });
return ret;
}
2018-10-19 23:09:52 +08:00
/// <summary>
///
/// </summary>
/// <param name="userName"></param>
/// <returns></returns>
public static IEnumerable<string> RetrieveRolesByUserName(string userName) => CacheManager.GetOrAdd(string.Format("{0}-{1}", RetrieveRolesByUserNameDataKey, userName), key => DbContextManager.Create<Role>().RetrieveRolesByUserName(userName), RetrieveRolesByUserNameDataKey);
2018-10-19 23:09:52 +08:00
/// <summary>
///
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static IEnumerable<string> RetrieveRolesByUrl(string url) => CacheManager.GetOrAdd(string.Format("{0}-{1}", RetrieveRolesByUrlDataKey, url), key => DbContextManager.Create<Role>().RetrieveRolesByUrl(url), RetrieveRolesByUrlDataKey);
2018-10-19 23:09:52 +08:00
}
}