Example #1
0
        /// <summary>
        /// 添加菜单
        /// </summary>
        /// <param name="dto">菜单模型</param>
        /// <returns></returns>
        public async Task <string> AddAsync(MenuDto dto)
        {
            var entity = _mapper.Map <MenuDto, MenuEntity>(dto);

            entity.Init();
            var dbSet         = _context.Menus;
            var pathCodeDbSet = _pathCodeService.GetPathCodes();

            var existsCode = await dbSet.Where(item => item.ParentId == dto.ParentId)
                             .Select(item => item.Code).ToListAsync();

            var pathCode = pathCodeDbSet.FirstOrDefault(item => !existsCode.Contains(item));

            entity.Code = pathCode.Trim();
            if (entity.ParentId.IsNotBlank())
            {
                var parent = await dbSet.FirstOrDefaultAsync(m => m.Id == entity.ParentId);

                entity.PathCode = string.Concat(parent.PathCode.Trim(), entity.Code.Trim());
                entity.Type     = parent.Type == 1 ? (byte)MenuType.Menu : (byte)MenuType.Action;
            }
            else
            {
                entity.PathCode = entity.Code.Trim();
                entity.Type     = (byte)MenuType.Module;
            }
            dbSet.Add(entity);

            return(await _context.SaveChangesAsync() > 0 ? entity.Id : string.Empty);
        }