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));
        }
Exemple #2
0
        /// <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);
        }