示例#1
0
        /// <summary>
        /// 获取员工菜单权限
        /// </summary>
        /// <param name="staffId"></param>
        /// <returns></returns>
        public IEnumerable <SystemMenuRoleViewModel> FindStaffMenuRole(int staffId)
        {
            var query = (from a in _systemStaffRoleRepository.Find()
                         join b in _systemRoleRepository.Find() on a.RoleId equals b.Id into temp
                         from bb in temp.DefaultIfEmpty()
                         join c in _systemRoleRulesRepository.Find() on bb.Id equals c.RoleId into temp2
                         from cc in temp2.DefaultIfEmpty()
                         join d in _systemMenuRepository.Find() on cc.MenuId equals d.Id into temp3
                         from dd in temp3.DefaultIfEmpty()
                         where a.StaffId == staffId && cc.Id != null && dd.Id != null
                         orderby dd.MenuSort ascending
                         select new SystemMenuRoleViewModel
            {
                Id = dd.Id,
                Level = dd.Level,
                MenuButtonId = dd.MenuButtonId,
                MenuIcon = dd.MenuIcon,
                MenuName = dd.MenuName,
                MenuSort = dd.MenuSort,
                MenuUrl = dd.MenuUrl,
                ParentId = dd.ParentId,
                PageTitle = dd.PageTitle
            }).Distinct();

            var list = query.ToList();

            return(list);
        }
        public BusinessBaseViewModel <string> Insert(AddSystemMenuRequestModel requestModel)
        {
            var res = new BusinessBaseViewModel <string>()
            {
                Status = ResponseStatus.Fail
            };

            if (requestModel == null)
            {
                res.ErrorMessage = "参数错误";
                return(res);
            }
            if (requestModel.MenuName.IsNullOrWhiteSpace())
            {
                res.ErrorMessage = "菜单名称不能为空";
                return(res);
            }
            if (requestModel.Level <= 0)
            {
                res.ErrorMessage = "菜单层级不能为空";
                return(res);
            }
            var menuCode = 1001;

            var query = _systemMenuRepository.Find(x => x.ParentCode == requestModel.ParentCode);

            if (query.Any())
            {
                var maxCode = query.Max(x => x.MenuCode);

                menuCode = maxCode + 1;
            }
            else
            {
                menuCode = requestModel.ParentCode * 100 + 1;
            }
            //菜单导行
            var pageTitle = "";

            if (!requestModel.MenuUrl.IsNullOrWhiteSpace() && requestModel.Level != 1)
            {
                var len  = requestModel.Level - 2;
                var code = new int[len + 1];
                code[len] = requestModel.ParentCode;

                var num = 1;
                for (var i = 0; i < len; i++)
                {
                    num     = num * 100;
                    code[i] = requestModel.ParentCode / num;
                }

                var queryMenuName = _systemMenuRepository.Find(x => code.Contains(x.MenuCode)).OrderBy(x => x.Level).Select(x => x.MenuName).ToList();

                if (queryMenuName.Any())
                {
                    pageTitle = string.Join("-", queryMenuName) + "-" + requestModel.MenuName;
                }
            }

            var model = new SystemMenu()
            {
                MenuCode     = menuCode,
                Level        = requestModel.Level,
                MenuDesc     = requestModel.MenuDesc,
                MenuIcon     = requestModel.MenuIcon,
                MenuName     = requestModel.MenuName,
                MenuSort     = requestModel.MenuSort,
                MenuUrl      = requestModel.MenuUrl,
                PageTitle    = pageTitle,
                ParentId     = requestModel.ParentId,
                ParentCode   = requestModel.ParentCode,
                MenuButtonId = requestModel.MenuButtonId,
                Enabled      = requestModel.Enabled,
                CreateTime   = DateTime.Now,
                ModifyTime   = DateTime.Now
            };

            _systemMenuRepository.Insert(model);
            _systemMenuRepository.SaveChanges();

            res.Status = ResponseStatus.Success;
            return(res);
        }