public ActionResult Manage(int RoleKey, string RoleMenusJsonString) { if (!CanUpdated || !CanCreated) { ViewBag.Message = CannotUpateText + " 并且 " + CannotAddText; return(View("Error")); } var rolemenuList = Newtonsoft.Json.JsonConvert.DeserializeObject <List <RoleMenu> >(RoleMenusJsonString); var service = Container.GetService <IRoleMenuService>(); var list = new List <tbl_Role_Menu>(); foreach (var item in rolemenuList) { var trm = new tbl_Role_Menu(); trm.C_RoleId = RoleKey; trm.C_MenuId = item.Key; trm.C_CanCreated = item.CanCreated; trm.C_CanDelted = item.CanDeleted; trm.C_CanRead = item.CanReaded; trm.C_CanUpdated = item.CanUpdated; trm.C_CreatedDate = DateTime.Now; list.Add(trm); } var rm_deleteds = service.GetModels(rm => rm.C_RoleId == RoleKey); foreach (var rm in rm_deleteds) { service.Delete(rm); } var added = service.AddRange(list); var ajaxresult = new AjaxResult() { State = added }; if (added) { ajaxresult.Message = "修改成功"; } else { ajaxresult.Message = "修改失败"; } return(Json(ajaxresult)); }
/// <summary> /// /// </summary> /// <param name="user"></param> /// <returns></returns> public static UserDto ConvertUserDto(tbl_User user) { if (user == null) { return(null); } var userDto = new UserDto(); userDto.User = user; var uroleservice = new UserRoleService(); var roleservice = new RoleService(); /*查找角色*/ var roleIds = uroleservice.GetModels(r => r.UserId == userDto.User.keyid).Select(ur => ur.RoleId); var roles = roleservice.GetModels(r => roleIds.Contains(r.keyid)); userDto.Roles = roles.ToList(); /*搜索菜单*/ var menuservice = new MenuService(); var rmenuservice = new RoleMenuService(); //角色菜单,每个角色与对应菜单的 权限 var roleMenus = rmenuservice.GetModels(rm => roleIds.Contains(rm.C_RoleId)); var menuIds = roleMenus.Select(rm => rm.C_MenuId).Distinct().ToList(); var menus = menuservice.GetModels(m => menuIds.Contains(m.keyid)).ToList(); if (menus != null) { userDto.Menus = menus.ToList(); } /* * 查找权限 * 如果一个用户有两个角色,一个对a菜单有 read,一个对a菜单write,那用户权限应该为 合并后的 read+write */ foreach (var menu in menus) { var rolemenu = new tbl_Role_Menu() { C_MenuId = menu.keyid }; rolemenu.C_CanCreated = rolemenu.C_CanDelted = rolemenu.C_CanRead = rolemenu.C_CanUpdated = false; //通过菜单id 把不同角色的权限设置分到同一组 var powers = roleMenus.Where(rm => rm.C_MenuId == menu.keyid); foreach (var p in powers) { if (p.C_CanCreated) { rolemenu.C_CanCreated = p.C_CanCreated; } if (p.C_CanDelted) { rolemenu.C_CanDelted = p.C_CanDelted; } if (p.C_CanRead) { rolemenu.C_CanRead = p.C_CanRead; } if (p.C_CanUpdated) { rolemenu.C_CanUpdated = p.C_CanUpdated; } } userDto.MenuPowers.Add(rolemenu); } return(userDto); }