From 2a4f6461818ab200c0b96eaeabe52f3cfba46a7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=B7=B3?= Date: Thu, 15 Sep 2022 19:05:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Yi.Framework.Common/Enum/DataScopeEnum.cs | 10 +-- .../Yi.Framework.Core/DbFiterExtend.cs | 90 +++++++++++++++++++ 2 files changed, 95 insertions(+), 5 deletions(-) create mode 100644 Yi.Framework.Net6/Yi.Framework.Core/DbFiterExtend.cs diff --git a/Yi.Framework.Net6/Yi.Framework.Common/Enum/DataScopeEnum.cs b/Yi.Framework.Net6/Yi.Framework.Common/Enum/DataScopeEnum.cs index ce2bcb1d..12641d45 100644 --- a/Yi.Framework.Net6/Yi.Framework.Common/Enum/DataScopeEnum.cs +++ b/Yi.Framework.Net6/Yi.Framework.Common/Enum/DataScopeEnum.cs @@ -8,10 +8,10 @@ namespace Yi.Framework.Common.Enum { public enum DataScopeEnum { - All = 0, - Custom = 1, - Dept = 2, - DeptAndUnder = 3, - User = 4 + ALL = 0, + CUSTOM = 1, + DEPT = 2, + DEPT_FOLLOW = 3, + USER = 4 } } diff --git a/Yi.Framework.Net6/Yi.Framework.Core/DbFiterExtend.cs b/Yi.Framework.Net6/Yi.Framework.Core/DbFiterExtend.cs new file mode 100644 index 00000000..621ce4c9 --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Core/DbFiterExtend.cs @@ -0,0 +1,90 @@ +//using Brick.Common; +//using Brick.Common.Const; +//using Brick.Core; +//using Brick.Grpc; +//using Brick.WebCore.MiddlewareExtend; +//using ETX.Common.Enum; +//using ETX.Entity; +//using ETX.Interface.IService; +//using SqlSugar; +//using System.Linq; +//using Yi.Framework.Common.Enum; +//using Yi.Framework.Model.Models; + +//namespace Yi.Framework.Core +//{ +// public class DbFiterExtend +// { +// public static void Data(SqlSugarClient db) +// { +// //未登录情况 +// //if (!ServiceLocator.GetHttp(out var httpContext)) +// //{ +// // return; +// //} + +// //无需授权情况 +// //var account = httpContext.GetAccount(); +// //if (account.IsNull()) +// //{ +// // return; +// //} + +// //超级管理员直接放行 +// //if (ServiceLocator.Admin.Equals(account)) +// //{ +// // return; +// //} + +// //这里可以优化一下 +// //根据缓存获取全部用户信息 +// //var userRoleMenu = ServiceLocator.Instance.GetService().Get(RedisConst.GetStr(RedisConst.UserRoleMenu, account)); + + +// var roles = userRoleMenu.Roles; +// if (roles.IsNull()) +// { +// roles = new (); +// } +// //先测试部门就是LEBG +// long deptId= userRoleMenu.User.DeptId.TryToGuid(); +// long userId =httpContext.GetId(); +// //根据角色的数据范围,来添加相对于的数据权限 +// foreach (var role in roles) +// { +// DataScopeEnum dataScope =(DataScopeEnum)role.DataScope; +// switch (dataScope) +// { +// case DataScopeEnum.ALL: +// //直接放行 +// break; +// case DataScopeEnum.DEPT: +// //只能查询到自己的部门的数据 +// db.QueryFilter.Add(new TableFilterItem(it => it.DeptId== deptId, true)); +// break; +// case DataScopeEnum.USER: +// //只能查询到自己 +// db.QueryFilter.Add(new TableFilterItem(it => it.Id == userId,true)); +// break; +// case DataScopeEnum.CUSTOM: +// //自定义查询 +// var filter = new TableFilterItem(it => SqlFunc.Subqueryable().Where(f => f.DeptId == it.DeptId && f.RoleId == role.Id.TryToGuid()).Any(),true); +// db.QueryFilter.Add(filter); +// break; +// case DataScopeEnum.DEPT_FOLLOW: +// //放行自己部门及以下 +// var allChildDepts = db.Queryable().ToChildList(it => it.ParentId, deptId); + +// var filter1 = new TableFilterItem(it => allChildDepts.Select(f => f.Id).ToList().Contains((long)it.DeptId),true); +// db.QueryFilter.Add(filter1); + +// //var filter2 = new TableFilterItem(it => allChildDepts.Select(f => f.Id).ToList().Contains(it.Id),true); +// //db.QueryFilter.Add(filter2); +// break; +// default: +// break; +// } +// } +// } +// } +//}