/// <summary> /// 获取到所有的角色和对应的api接口 /// </summary> /// <returns></returns> public List <PermissionItem> GetAllApiOfRole() { List <PermissionItem> permissionItems = new List <PermissionItem>(); List <sys_role> sysRoles = _baseSysRoleService.GetModels(a => a.status == false).ToList(); // 获取所有未禁用的角色 List <sys_api> sysApis = _baseService.GetModels(a => a.status == false).ToList(); // 获取所有未禁用的接口 List <sys_role_api> sysRoleApis = _baseSysRoleApiService.GetModels(null).ToList(); foreach (var sysRole in sysRoles) { foreach (var sysRoleApi in sysRoleApis) { if (sysRole.id == sysRoleApi.role_id) { sys_api sysApi = sysApis.SingleOrDefault(a => a.id == sysRoleApi.api_id); if (!string.IsNullOrEmpty(sysApi.url)) { PermissionItem permissionItem = new PermissionItem { Url = sysApi.url, Role = sysRole.role_code }; permissionItems.Add(permissionItem); } } } } return(permissionItems); }
public MsgModel GetApiTreeById(string apiNameLike, bool apiStatus) { MsgModel msg = new MsgModel { isok = true, message = "查询成功!" }; //查找level=1的API节点,即:根节点 sys_api rootSysApi = _baseService.GetModels(s => s.level == 1).Single(); if (rootSysApi != null) { int rootApiId = rootSysApi.id; List <sys_api> sysApis = _mySystemService.SelectApiTree(rootApiId, apiNameLike, apiStatus); List <SysApiNode> sysApiNodes = new List <SysApiNode>(); foreach (sys_api sys_Api in sysApis) { SysApiNode sysApiNode = sys_Api.BuildAdapter().AdaptToType <SysApiNode>(); sysApiNodes.Add(sysApiNode); } if (!string.IsNullOrEmpty(apiNameLike)) { //根据api名称等查询会破坏树形结构,返回平面列表 msg.data = sysApiNodes; return(msg); } //否则返回树型结构列表 msg.data = DataTreeUtil <SysApiNode, long> .BuildTree(sysApiNodes, rootApiId); return(msg); } return(msg); }
public MsgModel DeleteApi(sys_api sys_Api) { // 查找被删除节点的子节点 List <sys_api> myChild = _baseService.GetModels(s => s.api_pids.Contains("[" + sys_Api.id + "]")).ToList(); if (myChild.Count > 0) { // "不能删除含有下级API接口的节点" } //查找被删除节点的父节点 List <sys_api> myFatherChild = _baseService.GetModels(s => s.api_pids.Contains("[" + sys_Api.api_pid + "]")).ToList(); //我的父节点只有我这一个子节点,而我还要被删除,更新父节点为叶子节点。 if (myFatherChild.Count == 1) { sys_api parent = new sys_api { id = sys_Api.api_pid, is_leaf = true // //更新父节点为叶子节点。 }; _baseService.Update(parent); } // 删除节点 _baseService.Remove(sys_Api); return(MsgModel.Success("删除接口配置成功!")); }
/// <summary> /// 接口管理:更新接口的禁用状态 /// </summary> /// <param name="id"></param> /// <param name="status"></param> public MsgModel UpdateStatus(int id, bool status) { sys_api sys_Api = _baseService.GetModels(a => a.id == id).SingleOrDefault(); sys_Api.status = status; bool result = _baseService.Update(sys_Api); return(MsgModel.Success(result ? "接口禁用状态更新成功!" : "接口禁用状态更新失败!")); }
/// <summary> /// 设置某子节点的所有祖辈id /// </summary> /// <param name="child"></param> private void SetApiIdsAndLevel(sys_api child) { List <sys_api> allApis = _baseService.GetModels(null).ToList(); foreach (var sysApi in allApis) { // 从组织列表中找到自己的直接父亲 if (sysApi.id == child.api_pid) { //直接父亲的所有祖辈id + 直接父id = 当前子节点的所有祖辈id //爸爸的所有祖辈 + 爸爸 = 孩子的所有祖辈 child.api_pids = sysApi.api_pids + ",[" + child.api_pid + "]"; child.level = sysApi.level + 1; } } }
public MsgModel AddApi(sys_api sys_Api) { MsgModel msg = new MsgModel { isok = true, message = "新增接口配置成功!" }; SetApiIdsAndLevel(sys_Api); sys_Api.is_leaf = true;//新增的菜单节点都是子节点,没有下级 sys_api parent = new sys_api { id = sys_Api.api_pid, is_leaf = false//更新父节点为非子节点。 }; _baseService.Update(parent); sys_Api.status = false;//设置是否禁用,新增节点默认可用 _baseService.Add(sys_Api); return(msg); }
public MsgModel UpdateApi(sys_api sys_Api) { var result = _baseService.Update(sys_Api); return(result ? MsgModel.Success("修改接口配置成功!") : MsgModel.Fail("修改接口配置失败!")); }