示例#1
0
        public async Task <IResultModel> BindPermission(MenuBindPermissionModel model)
        {
            _uow.BeginTransaction();

            //删除旧数据
            if (await _menuPermissionRepository.DeleteByMenuId(model.Id))
            {
                if (model.PermissionList == null || !model.PermissionList.Any())
                {
                    _uow.Commit();
                    await ClearAccountPermissionCache(model.Id);

                    return(ResultModel.Success());
                }

                //添加新数据
                var entityList = new List <MenuPermissionEntity>();
                model.PermissionList.ForEach(p =>
                {
                    entityList.Add(new MenuPermissionEntity {
                        MenuId = model.Id, PermissionId = p
                    });
                });
                if (await _menuPermissionRepository.AddAsync(entityList))
                {
                    _uow.Commit();
                    await ClearAccountPermissionCache(model.Id);

                    return(ResultModel.Success());
                }
            }

            _uow.Rollback();
            return(ResultModel.Failed());
        }
示例#2
0
        /// <summary>
        /// 同步权限
        /// </summary>
        /// <returns></returns>
        private async Task <bool> SyncPermission(MenuEntity menu, List <string> permissions, IDbTransaction transaction)
        {
            if (menu.Type != MenuType.Route)
            {
                return(true);
            }

            //删除旧数据
            if (await _menuPermissionRepository.DeleteByMenu(menu.RouteName, transaction))
            {
                if (permissions == null || !permissions.Any())
                {
                    await ClearAccountPermissionCache(menu);

                    return(true);
                }

                //添加新数据
                var entityList = new List <MenuPermissionEntity>();
                permissions.ForEach(code =>
                {
                    entityList.Add(new MenuPermissionEntity {
                        MenuCode = menu.RouteName, PermissionCode = code.ToLower()
                    });
                });

                return(await _menuPermissionRepository.AddAsync(entityList, transaction));
            }

            return(false);
        }