public async Task <IActionResult> Put([FromBody] NavigationEditModel model)
        {
            var mapping = new Func <Navigation, Task <Navigation> >(async(entity) =>
            {
                entity.Title       = model.Title;
                entity.Name        = model.Name;
                entity.Description = model.Description;
                entity.Icon        = model.Icon;
                entity.Url         = model.Url;
                entity.Field       = model.Field;
                entity.Permission  = model.Permission;
                entity.PagedModel  = model.PagedModel;
                entity.Resource    = model.Resource;
                entity.NodeType    = model.NodeType;
                entity.QueryParams = model.QueryParams;
                return(await Task.FromResult(entity));
            });

            return(await _PutRequest(model.Id, mapping));
        }
Пример #2
0
        public ActionResult EditNavigation(NavigationEditModel model)
        {
            if (!ModelState.IsValid)
            {
                return(Json(new MessageData(false, "操作失败")));
            }
            Navigation navigation;

            if (model.Id > 0)
            {
                navigation = _navigationService.FindById(model.Id);
                if (navigation == null)
                {
                    return(Json(new MessageData(false, "导航不存在")));
                }
                var nameExists = _navigationService.Navigations.FirstOrDefault(n => n.Id != model.Id && n.Name == model.Name) != null;
                if (nameExists)
                {
                    return(Json(new MessageData(false, "导航名称已存在")));
                }
                var permissionExists = _navigationService.Navigations.FirstOrDefault(n => n.Id != model.Id && n.PermissionName == model.PermissionName) != null;
                if (permissionExists)
                {
                    return(Json(new MessageData(false, "权限名称已存在")));
                }
                navigation.ParentId       = model.ParentId;
                navigation.Name           = model.Name;
                navigation.RouteName      = model.RouteName;
                navigation.Url            = model.Url;
                navigation.PermissionName = model.PermissionName;
                navigation.IconName       = model.IconName;
                navigation.DisplayOrder   = model.DisplayOrder;
                navigation.IsEnabled      = model.IsEnabled;
                try
                {
                    _navigationService.Update(navigation);
                    //改变权限,保持一致
                    Permission permission = _adminService.FindPermissionByName(navigation.PermissionName);
                    if (permission == null)
                    {
                        return(Json(new MessageData(true, "编辑成功,角色权限修改失败")));
                    }
                    if (permission.ParentId.HasValue)
                    {
                        Navigation parentNavigation = _adminService.FindNavigationById(navigation.ParentId.Value);
                        Permission parentPermission = _adminService.FindPermissionByName(parentNavigation.PermissionName);
                        permission.ParentId = parentPermission.Id;
                        _adminService.UpdatePermission(permission);
                    }
                    return(Json(new MessageData(true, "编辑成功")));
                }
                catch (Exception ex)
                {
                    _logger.Error(ex);
                    return(Json(new MessageData(false, "编辑失败,请重新编辑")));
                }
            }
            else
            {
                if (_navigationService.IsExists(model.Name))
                {
                    return(Json(new MessageData(false, "导航名称已存在")));
                }
                var permissionExists = _navigationService.Navigations.FirstOrDefault(n => n.Id != model.Id && n.PermissionName == model.PermissionName) != null;
                if (permissionExists)
                {
                    return(Json(new MessageData(false, "权限名称已存在")));
                }
                //添加权限
                Permission permission = new Permission {
                    Name = model.PermissionName, ParentId = model.ParentId, Description = model.PermissionName, IsBuiltIn = true, IsButton = false, RolePermissonEnumType = RolePermissonEnum.Navigation
                };
                _adminService.InsertPermission(permission);
                //添加用户权限关联
                var userId = UserContext.CurrentUserId;
                _permissionService.AddPermissionToUser(userId, permission.Id);
                navigation = new Navigation()
                {
                    ParentId       = model.ParentId,
                    Name           = model.Name,
                    RouteName      = model.RouteName,
                    Url            = model.Url,
                    PermissionName = model.PermissionName,
                    IconName       = model.IconName,
                    DisplayOrder   = model.DisplayOrder,
                    IsEnabled      = model.IsEnabled,
                };
                try
                {
                    _navigationService.Create(navigation);
                    return(Json(new MessageData(true, "添加成功")));
                }
                catch (Exception ex)
                {
                    _logger.Error(ex);
                    return(Json(new MessageData(false, "添加失败")));
                }
            }
        }