import{_ as n,o as a,c as s,a as e}from"./app-4f4af2d5.js";const t="/docs/hzy-admin/permission/data-1.jpg",o="/docs/hzy-admin/permission/data-2.jpg",p={},c=e('
此方式适合多表查询时筛选。
我们需要关心以下几点
1、界面角色管理 点击数据权限,配置好对应角色需要的数据权限
2、编写linq组合查询时需要 select new { _CreatorUserId = w.CreatorUserId ,_OrganizationId = w.OrganizationId } 返回 数据所属人的 CreatorUserId ,和数据所属组织的 OrganizationId
3、通过 awaitthis._defaultRepository.AsPagingViewAsync(query, page, size, null, accountInfo, w=>w._CreatorUserId, w=>w._OrganizationId); 依次函数传入 参数5、 参数6、 参数7 即可实现权限筛选
此方式适合单表查询时筛选,CreatorUserId、CreationTime这两个字段是不需要自己手动填充,在插入数据时自动填充
这里举例有一个 Member 表 需要注意一下几点
1、界面角色管理 点击数据权限,配置好对应角色需要的数据权限
2、创建 Memeber 实体需要继承 CreateBaseEntity<TKey> 创建相关的父类 ,并且Member数据库表必须要有 CreatorUserId、CreationTime
3、我们可以在查询时调用 _defaultRepository.DataPermission(accountInfo,_sysUserRepository);
入参1:当前登录用户信息 可实现结果得筛选
入参2(_sysUserRepository):用户仓储注入
参数入口
IQueryable<TModel> DataPermission<TModel>(IQueryable<TModel> query, AccountInfo accountInfo, Expression<Func<TModel, object>> userIdFieldNameExpression = null, Expression<Func<TModel, object>> organizationIdFieldNameExpression = null);
query:查询表达式
accountInfo:当前登录用户信息
userIdFieldNameExpression:数据创建者Id
organizationIdFieldNameExpression:数据创建者所属组织Id