Ejemplo n.º 1
0
        public async Task Create(CreateMenuInput input)
        {
            var menu = input.MapTo <Menu>();
            var thisLevelMenuCount = await _menuRepository.GetCountAsync(p => p.ParentId == input.ParentId);

            if (menu.Mold == MenuMold.Top)
            {
                menu.Code  = (thisLevelMenuCount + 1).ToString().PadRight(HeroConstants.CodeRuleRestrain.CodeCoverBit, HeroConstants.CodeRuleRestrain.CodeCoverSymbol);
                menu.Level = 1;
            }
            else
            {
                var parentMenu = await _menuRepository.SingleOrDefaultAsync(p => p.Id == input.ParentId);

                if (parentMenu == null)
                {
                    throw new BusinessException($"不存在Id为{input.ParentId}的菜单信息");
                }
                menu.Code  = parentMenu.Code + HeroConstants.CodeRuleRestrain.CodeSeparator + (thisLevelMenuCount + 1).ToString().PadLeft(HeroConstants.CodeRuleRestrain.CodeCoverBit, HeroConstants.CodeRuleRestrain.CodeCoverSymbol);
                menu.Level = parentMenu.Level + 1;
            }
            var permission = input.MapTo <Permission>();

            await UnitOfWorkAsync(async (conn, trans) => {
                var permissionId  = await _permissionRepository.InsertAndGetIdAsync(permission, conn, trans);
                menu.PermissionId = permissionId;
                await _menuRepository.InsertAsync(menu, conn, trans);
            }, Connection);
        }
Ejemplo n.º 2
0
        public async Task <string> CreateMenu(CreateMenuInput input)
        {
            input.CheckDataAnnotations().CheckValidResult();
            var exsitMenu = await _menuRepository.SingleOrDefaultAsync(p => p.Code == input.Code);

            if (exsitMenu != null)
            {
                throw new BusinessException($"系统中已经存在Code为{input.Code}的菜单信息");
            }
            var exsitPermission = await _permissionRepository.SingleOrDefaultAsync(p => p.Code == input.Code);

            if (exsitPermission != null)
            {
                throw new BusinessException($"系统中已经存在Code为{input.Code}的权限信息");
            }
            var menu       = input.MapTo <Menu>();
            var permission = new Permission()
            {
                Code = input.Code,
                Name = input.Name,
                Memo = input.Memo,
                Mold = PermissionMold.Menu
            };
            await _menuManager.CreateMenu(menu, permission);

            return("新增菜单成功");
        }
Ejemplo n.º 3
0
        public async Task <CreateMenuOutput> Create(CreateMenuInput input)
        {
            var  menu         = input.MapTo <Menu>();
            long menuParentId = 0;
            var  exsitMenu    = await _menuRepository.FirstOrDefaultAsync(p => p.Name == input.Name);

            if (exsitMenu != null)
            {
                throw new BusinessException($"系统中已经存在{input.Name}的菜单,请勿重复添加");
            }
            if (menu.Mold == MenuMold.Top)
            {
                var thisLevelMenuCount = await _menuRepository.GetCountAsync(p => p.Mold == MenuMold.Top);

                menu.Code  = (thisLevelMenuCount + 1).ToString().PadRight(HeroConstants.CodeRuleRestrain.CodeCoverBit, HeroConstants.CodeRuleRestrain.CodeCoverSymbol);
                menu.Level = 1;
            }
            else
            {
                var parentMenu = await _menuRepository.SingleOrDefaultAsync(p => p.PermissionId == input.ParentPermissionId);

                if (parentMenu == null)
                {
                    throw new BusinessException($"不存在PermissionId为{input.ParentPermissionId}的菜单信息");
                }
                menuParentId = parentMenu.Id;
                var thisLevelMenuCount = await _menuRepository.GetCountAsync(p => p.Mold == MenuMold.SubMenu && p.ParentId == parentMenu.Id);

                menu.Code  = parentMenu.Code + HeroConstants.CodeRuleRestrain.CodeSeparator + (thisLevelMenuCount + 1).ToString().PadLeft(HeroConstants.CodeRuleRestrain.CodeCoverBit, HeroConstants.CodeRuleRestrain.CodeCoverSymbol);
                menu.Level = parentMenu.Level + 1;
            }
            var permission = input.MapTo <Permission>();

            await UnitOfWorkAsync(async (conn, trans) => {
                var permissionId  = await _permissionRepository.InsertAndGetIdAsync(permission, conn, trans);
                menu.PermissionId = permissionId;
                menu.ParentId     = menuParentId;
                await _menuRepository.InsertAsync(menu, conn, trans);
            }, Connection);

            return(new CreateMenuOutput()
            {
                Id = menu.Id, PermissionId = menu.PermissionId, Tips = "新增菜单成功"
            });
        }
Ejemplo n.º 4
0
        public async Task <MenuDto> CreateSystemMenu(CreateMenuInput input)
        {
            var menu = input.MapTo <Menu>();

            menu.IsSystem = true;
            menu.Target   = "_self";
            _menuRepository.Insert(menu);
            await CurrentUnitOfWork.SaveChangesAsync();

            await RebuildMenu();

            return(menu.MapTo <MenuDto>());
        }
Ejemplo n.º 5
0
        public async Task <MenuDto> CreateCustomMenu(CreateMenuInput input)
        {
            await  CheckNameRepeat(input.DisplayName);

            var menu = input.MapTo <Menu>();

            menu.IsSystem = false;
            menu.Target   = "_blank";
            _menuRepository.Insert(menu);
            await CurrentUnitOfWork.SaveChangesAsync();

            await RebuildMenu();

            return(menu.MapTo <MenuDto>());
        }