/// <summary> /// 删除角色和角色对应的中间表数据 /// Esmart_Sys_Roles /// Esmart_Sys_RolesInDeparent /// Esmart_Sys_Role_App /// Esmart_Sys_Role_Navigations /// Esmart_Sys_Role_Navigation_Function /// Esmart_Sys_User_Roles /// </summary> /// <param name="request">角色Id</param> /// <returns></returns> public bool Del(RoleModel request) { RoleDbAction.Delete(request.Id); RoleNavigationsDbAction.Del(request.Id); RoleNavigationFunctionDbAction.Del(request.Id); UserRolesDbAction.Delete(request.Id); DepartmentRolesDbAction.DeleteByRoleId(request.Id); if (LogHelper <RoleModel> .LogAction("Esmart.Permission.Application.Data.DepartmentRolesDbAction") != null) { LogHelper <RoleModel> .LogAction("Esmart.Permission.Application.Data.DepartmentRolesDbAction")(new UserLiteDto { UserID = request.CreatorId == null?1:request.CreatorId.Value }, request); LogHelper <RoleModel> .RemoveAction("Esmart.Permission.Application.Data.DepartmentRolesDbAction"); } var remark = string.Format("用户:{0} 删除角色:{1}", request.CreatorId ?? 0, request.Id); LogManagerDb.Log(request.CreatorId ?? 0, DateTime.Now, remark, "RoleManager.DelByDepartmentId"); return(true); }
/// <summary> /// 获取用户或部门的可分配角色列表 /// </summary> public List <RoleResponse> GetAssignRoles(int managerUserId, int deparentmentId, int targetUserId) { //------------------------------------- // 根据管理人获取可分配角色列表 //------------------------------------- var assignableRoles = CommonAction.IsSysAdmin(managerUserId) ? RoleDbAction.GetAllRols() : UserRolesDbAction.GetUserRolses(managerUserId).Where(n => !BuiltinRoles.Admins.Contains(n.RoleName)).ToList(); //------------------------------------- // 检索目标用户的已分配角色列表 //------------------------------------- var assignedRoles = targetUserId > 0 ? UserRolesDbAction.GetUserRolses(targetUserId) : DepartmentRolesDbAction.GetAssignedRolesOfDepartment(deparentmentId); //------------------------------------- // 已分配角色列表和可分配角色列表交叉运算 //------------------------------------- var response = assignableRoles.ConvertAll(a => { var resp = new RoleResponse() { RoleId = a.RoleId, RoleName = a.RoleName, Remark = a.Remark }; if (a.StartTime != null) { resp.StartTime = a.StartTime.Value.ToString("yyyy-MM-dd"); } if (a.EndTime != null) { resp.EndTime = a.EndTime.Value.ToString("yyyy-MM-dd"); } var index = assignedRoles.FindIndex(n => n.RoleId == resp.RoleId); if (index >= 0) { resp.IsChoice = true; assignedRoles.RemoveAt(index); } return(resp); }); if (assignedRoles.Count > 0) { response.InsertRange(0, assignedRoles.ConvertAll(a => { var resp = new RoleResponse() { RoleId = a.RoleId, RoleName = a.RoleName, Remark = a.Remark, IsChoice = true }; if (a.StartTime != null) { resp.StartTime = a.StartTime.Value.ToString("yyyy-MM-dd"); } if (a.EndTime != null) { resp.EndTime = a.EndTime.Value.ToString("yyyy-MM-dd"); } return(resp); })); } return(response.OrderBy(n => n.RoleName).ToList()); }