Esempio n. 1
0
        public async Task <AppSrvResult <long> > Add(MenuSaveInputDto saveDto)
        {
            var isExistsCode = (await this.GetAllMenusFromCache()).Where(x => x.Code == saveDto.Code).Any();

            if (isExistsCode)
            {
                return(Problem(HttpStatusCode.Forbidden, "该菜单编码已经存在"));
            }

            var isExistsName = (await this.GetAllMenusFromCache()).Where(x => x.Name == saveDto.Name).Any();

            if (isExistsName)
            {
                return(Problem(HttpStatusCode.Forbidden, "该菜单名称已经存在"));
            }

            var parentMenu = (await this.GetAllMenusFromCache()).Where(x => x.Code == saveDto.PCode).FirstOrDefault();
            var addDto     = ProducePCodes(saveDto, parentMenu);
            var menu       = _mapper.Map <SysMenu>(addDto);

            menu.ID = IdGenerater.GetNextId();
            await _menuRepository.InsertAsync(menu);

            return(menu.ID);
        }
Esempio n. 2
0
        private MenuSaveInputDto ProducePCodes(MenuSaveInputDto saveDto, MenuDto parentMenuDto)
        {
            if (saveDto.PCode.IsNullOrWhiteSpace() || saveDto.PCode.EqualsIgnoreCase("0"))
            {
                saveDto.PCode  = "0";
                saveDto.PCodes = "[0],";
                saveDto.Levels = 1;
                return(saveDto);
            }

            saveDto.Levels = parentMenuDto.Levels + 1;
            saveDto.PCodes = $"{parentMenuDto.PCodes}[{parentMenuDto.Code}]";

            return(saveDto);
        }
Esempio n. 3
0
        public async Task Save(MenuSaveInputDto saveDto)
        {
            if (saveDto.ID < 1)
            {
                if (await _menuRepository.ExistAsync(x => x.Code == saveDto.Code))
                {
                    throw new BusinessException(new ErrorModel(ErrorCode.Forbidden, "同名菜单已存在"));
                }
                saveDto.Status = true;
            }

            if (string.IsNullOrWhiteSpace(saveDto.PCode) || string.Equals(saveDto.PCode, "0"))
            {
                saveDto.PCode  = "0";
                saveDto.PCodes = "[0],";
                saveDto.Levels = 1;
            }
            else
            {
                var parentMenu = await _menuRepository.FetchAsync(m => new { m.Code, m.PCodes, m.Levels }, x => x.Code == saveDto.PCode);

                saveDto.PCode = parentMenu.Code;
                if (string.Equals(saveDto.Code, saveDto.PCode))
                {
                    throw new BusinessException(new ErrorModel(ErrorCode.Forbidden, "菜单编码冲突"));
                }

                saveDto.Levels = parentMenu.Levels + 1;
                saveDto.PCodes = $"{parentMenu.PCodes}[{parentMenu.Code}]";
            }

            var menu = _mapper.Map <SysMenu>(saveDto);

            if (menu.ID == 0)
            {
                menu.ID = IdGenerater.GetNextId();
                await _menuRepository.InsertAsync(menu);
            }
            else
            {
                await _menuRepository.UpdateAsync(menu);
            }
        }
Esempio n. 4
0
        public async Task <AppSrvResult> Update(MenuSaveInputDto saveDto)
        {
            var isExistsCode = (await this.GetAllMenusFromCache()).Where(x => x.Code == saveDto.Code && x.ID != saveDto.ID).Any();

            if (isExistsCode)
            {
                return(Problem(HttpStatusCode.BadRequest, "该菜单编码已经存在"));
            }

            var isExistsName = (await this.GetAllMenusFromCache()).Where(x => x.Name == saveDto.Name && x.ID != saveDto.ID).Any();

            if (isExistsName)
            {
                return(Problem(HttpStatusCode.BadRequest, "该菜单名称已经存在"));
            }

            var parentMenu = (await this.GetAllMenusFromCache()).Where(x => x.Code == saveDto.PCode).FirstOrDefault();
            var updateDto  = ProducePCodes(saveDto, parentMenu);
            var menu       = _mapper.Map <SysMenu>(updateDto);
            await _menuRepository.UpdateAsync(menu);

            return(DefaultResult());
        }
Esempio n. 5
0
 public async Task SaveMenu([FromBody] MenuSaveInputDto menuDto)
 {
     await _menuService.Save(menuDto);
 }
Esempio n. 6
0
 public async Task <ActionResult> Update([FromBody] MenuSaveInputDto menuDto)
 {
     return(Result(await _menuService.Update(menuDto)));
 }
Esempio n. 7
0
 public async Task <ActionResult <long> > Add([FromBody] MenuSaveInputDto menuDto)
 {
     return(CreatedResult(await _menuService.Add(menuDto)));
 }
Esempio n. 8
0
        public async Task Save(MenuSaveInputDto saveDto)
        {
            //新增
            if (saveDto.ID < 1)
            {
                var isExistsCode = (await this.GetAllMenusFromCache()).Where(x => x.Code == saveDto.Code).Any();
                if (isExistsCode)
                {
                    throw new BusinessException(new ErrorModel(HttpStatusCode.Forbidden, "该菜单编码已经存在"));
                }

                var isExistsName = (await this.GetAllMenusFromCache()).Where(x => x.Name == saveDto.Name).Any();
                if (isExistsName)
                {
                    throw new BusinessException(new ErrorModel(HttpStatusCode.Forbidden, "该菜单名称已经存在"));
                }
            }
            //修改
            else
            {
                var isExistsCode = (await this.GetAllMenusFromCache()).Where(x => x.Code == saveDto.Code && x.ID != saveDto.ID).Any();
                if (isExistsCode)
                {
                    throw new BusinessException(new ErrorModel(HttpStatusCode.Forbidden, "该菜单编码已经存在"));
                }

                var isExistsName = (await this.GetAllMenusFromCache()).Where(x => x.Name == saveDto.Name && x.ID != saveDto.ID).Any();
                if (isExistsName)
                {
                    throw new BusinessException(new ErrorModel(HttpStatusCode.Forbidden, "该菜单名称已经存在"));
                }
            }

            //父节点处理
            if (saveDto.PCode.IsNullOrWhiteSpace() || saveDto.PCode.EqualsIgnoreCase("0"))
            {
                saveDto.PCode  = "0";
                saveDto.PCodes = "[0],";
                saveDto.Levels = 1;
            }
            else
            {
                var parentMenu = (await this.GetAllMenusFromCache()).Where(x => x.Code == saveDto.PCode).FirstOrDefault();
                saveDto.PCode = parentMenu.Code;
                if (saveDto.Code.EqualsIgnoreCase(parentMenu.Code))
                {
                    throw new BusinessException(new ErrorModel(HttpStatusCode.Forbidden, "菜单编码冲突"));
                }

                saveDto.Levels = parentMenu.Levels + 1;
                saveDto.PCodes = $"{parentMenu.PCodes}[{parentMenu.Code}]";
            }

            //保存
            var menu = _mapper.Map <SysMenu>(saveDto);

            if (saveDto.ID < 1)
            {
                menu.ID = IdGenerater.GetNextId();
                await _menuRepository.InsertAsync(menu);
            }
            else
            {
                await _menuRepository.UpdateAsync(menu);
            }
        }