using System; using System.Collections.Generic; using CB.Cache; using CB.Entity; using CB.Interface.Infrastructure; namespace CB.Data { /// <summary> /// 基本权限导航配置 by JNswins /// </summary> public class SysAuthorityService { /// <summary> /// 移除缓存 /// </summary> protected static void RemoveCache() { CB.Cache.CBCache.GetCacheService().RemoveObject(CB.Cache.CacheKeys.SysAuthorityInfo); } /// <summary> /// 新增保存 /// </summary> /// <param name="entity"></param> /// <returns></returns> public static bool Save(SysAuthorityInfo entity) { bool yes = DatabaseProvider.GetDbProvider<ISysAuthorityService>().Save(entity); if (yes) { RemoveCache(); return true; } return false; } /// <summary> /// 更新信息 /// </summary> /// <param name="entity"></param> /// <returns></returns> public static bool Update(SysAuthorityInfo entity) { bool yes = DatabaseProvider.GetDbProvider<ISysAuthorityService>().Update(entity); if (yes) { RemoveCache(); return true; } return false; } /// <summary> /// 删除 /// </summary> /// <param name="id"></param> /// <returns></returns> public static bool Delete(int id) { bool yes = DatabaseProvider.GetDbProvider<ISysAuthorityService>().Delete(id); if (yes) { RemoveCache(); return true; } return false; } /// <summary> /// 获取详细 /// </summary> /// <param name="groupId">用户组ID</param> /// <returns></returns> public static SysAuthorityInfo Get(int id) { var list = ToList(); if (null == list || 0 >= list.Count) return null; SysAuthorityInfo entity = null; for (int i = list.Count - 1; i >= 0; i--) { if (id == list[i].AId) entity = list[i]; } return entity; } /// <summary> /// 所有数据列表 /// </summary> /// <returns></returns> public static IList<SysAuthorityInfo> ToList() { var list = CB.Cache.CBCache.GetCacheService().GetObject(CB.Cache.CacheKeys.SysAuthorityInfo) as IList<SysAuthorityInfo>; if (null == list || 0 >= list.Count) { list = DatabaseProvider.GetDbProvider<ISysAuthorityService>().ToList(); CB.Cache.CBCache.GetCacheService().AddObject(CB.Cache.CacheKeys.SysAuthorityInfo, list); } return list; } /// <summary> /// 数据列表 /// </summary> /// <param name="parentId"></param> /// <returns></returns> public static IList<SysAuthorityInfo> ToList(int parentId) { var list = ToList(); if (null == list || 0 >= list.Count) return null; IList<SysAuthorityInfo> rlist = new List<SysAuthorityInfo>(); foreach (var item in list) { if (parentId == item.ParentId) rlist.Add(item); } return rlist; } /// <summary> /// 查询所有数据 /// </summary> /// <param name="entity"></param> /// <returns></returns> public static IList<SysAuthorityInfo> ToList(SysAuthorityInfo entity) { var list = ToList(); if (null == list || 0 >= list.Count) return null; if (null == entity) return list; IList<SysAuthorityInfo> rlist = new List<SysAuthorityInfo>(); foreach (var item in list) { if (0 <= entity.ParentId && item.ParentId != entity.ParentId) continue; if (0 < entity.AuthorType && item.AuthorType != entity.AuthorType) continue; rlist.Add(item); } return rlist; } /// <summary> /// 翻页 /// </summary> /// <param name="entity"></param> /// <param name="pageSize"></param> /// <param name="pageIndex"></param> /// <param name="recordCount"></param> /// <returns></returns> public static IList<SysAuthorityInfo> ToPaging(SysAuthorityInfo entity, int pageSize, int pageIndex, out int recordCount) { recordCount = 0; var list = ToList(entity); if (null == list || 0 >= list.Count) return null; recordCount = list.Count; int end = (pageIndex - 1) * pageSize + pageSize; int start = pageIndex == 1 ? 0 : (pageIndex - 1) * pageSize; if (start > list.Count) return null; end = end > list.Count ? list.Count : end; IList<SysAuthorityInfo> rlist = new List<SysAuthorityInfo>(); for (int i = start; i < end; i++) { rlist.Add(list[i]); } return rlist; } /// <summary> /// 获取用户组对应的权限导航; /// 超级管理员直接获取所有权限导航 /// </summary> /// <param name="groupId">用户组ID</param> /// <param name="superAdmin">是否超级管理员</param> /// <returns></returns> public static IList<SysAuthorityInfo> GetUserGroupAuthorityList(int groupId, bool superAdmin) { if (superAdmin) return ToList(); var authorList = DatabaseProvider.GetDbProvider<ISysGroupAuthorityService>().GetUserGroupAuthorityList(groupId); if (null == authorList || 0 >= authorList.Count) return null; IList<SysAuthorityInfo> rlist = new List<SysAuthorityInfo>(); var list = ToList(); foreach (var item in list) { if (authorList.Contains(item.AId)) rlist.Add(item); } return rlist; } /// <summary> /// 获取用户组对应的权限导航; /// 超级管理员直接获取所有权限导航 /// </summary> /// <param name="groupId">用户组ID</param> /// <param name="superAdmin">是否超级管理员</param> /// <param name="parentId">父ID</param> /// <returns></returns> public static IList<SysAuthorityInfo> GetUserGroupAuthorityList(int groupId, bool superAdmin, int parentId) { if (superAdmin) return ToList(parentId); var authorList = DatabaseProvider.GetDbProvider<ISysGroupAuthorityService>().GetUserGroupAuthorityList(groupId); if (null == authorList || 0 >= authorList.Count) return null; IList<SysAuthorityInfo> rlist = new List<SysAuthorityInfo>(); var list = ToList(parentId); foreach (var item in list) { if (authorList.Contains(item.AId)) rlist.Add(item); } return rlist; } /// <summary> /// 更新用户组导航权限 /// </summary> /// <param name="groupId"></param> /// <param name="authority"></param> /// <returns></returns> public static bool UpdateUserGroupAuthority(int groupId, string authority) { return DatabaseProvider.GetDbProvider<ISysAuthorityService>().UpdateUserGroupAuthority(groupId, authority); } } }