From 0833b70dd9c601d9ad67a7c9853561d39bf3168f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com> Date: Sat, 9 Apr 2022 19:11:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=95=B0=E6=8D=AE=E8=BF=87?= =?UTF-8?q?=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ZR.Admin.WebApi/Extensions/DbExtension.cs | 60 ++++++++++------------- ZR.Admin.WebApi/Framework/JwtUtil.cs | 2 +- ZR.Admin.WebApi/NLog.config | 2 +- ZR.Admin.WebApi/Startup.cs | 2 +- ZR.Admin.WebApi/ZR.Admin.WebApi.csproj | 2 +- ZR.CodeGenerator/ZR.CodeGenerator.csproj | 2 +- ZR.Model/ZR.Model.csproj | 2 +- ZR.Repository/BaseRepository.cs | 24 +++++---- ZR.Repository/ZR.Repository.csproj | 2 +- ZR.Vue/src/views/system/role/index.vue | 8 +-- 10 files changed, 53 insertions(+), 53 deletions(-) diff --git a/ZR.Admin.WebApi/Extensions/DbExtension.cs b/ZR.Admin.WebApi/Extensions/DbExtension.cs index acf8bbc..cbffcb1 100644 --- a/ZR.Admin.WebApi/Extensions/DbExtension.cs +++ b/ZR.Admin.WebApi/Extensions/DbExtension.cs @@ -33,28 +33,26 @@ namespace ZR.Admin.WebApi.Extensions int dbType_bus = Convert.ToInt32(Configuration[OptionsSetting.ConnBusDbType]); SugarIocServices.AddSqlSugar(new List() { - new IocConfig() { - ConfigId = "0", - ConnectionString = connStr, - DbType = (IocDbType)dbType, - IsAutoCloseConnection = true - }, new IocConfig() { - ConfigId = "1", - ConnectionString = connStrBus, - DbType = (IocDbType)dbType_bus, - IsAutoCloseConnection = true - } - }); + new IocConfig() { + ConfigId = "0", + ConnectionString = connStr, + DbType = (IocDbType)dbType, + IsAutoCloseConnection = true + }, new IocConfig() { + ConfigId = "1", + ConnectionString = connStrBus, + DbType = (IocDbType)dbType_bus, + IsAutoCloseConnection = true + } + }); SugarIocServices.ConfigurationSugar(db => { #region db0 db.GetConnection(0).Aop.OnLogExecuting = (sql, pars) => { - var param = db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)); - - FilterData(db.GetConnection(0)); - - logger.Info($"【sql语句】{sql},{param}"); + var param = db.GetConnection(0).Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)); + FilterData(0); + logger.Info($"【sql语句】{sql},{param}\n"); }; db.GetConnection(0).Aop.OnError = (e) => @@ -72,8 +70,8 @@ namespace ZR.Admin.WebApi.Extensions //Db1 db.GetConnection(1).Aop.OnLogExecuting = (sql, pars) => { - var param = DbScoped.SugarScope.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)); - + var param = db.GetConnection(1).Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)); + FilterData(1); logger.Info($"【sql语句】{sql}, {param}"); }; //Db1错误日志 @@ -88,7 +86,8 @@ namespace ZR.Admin.WebApi.Extensions /// /// 分页获取count 不会追加sql /// - private static void FilterData(ISqlSugarClient sqlSugarClient) + /// 多库id + private static void FilterData(int configId) { var u = App.User; if (u == null) return; @@ -97,8 +96,8 @@ namespace ZR.Admin.WebApi.Extensions if (user == null) return; //管理员不过滤 if (user.RoleIds.Any(f => f.Equals("admin"))) return; - - foreach (var role in user.Roles) + var db = DbScoped.SugarScope.GetConnection(configId); + foreach (var role in user.Roles.OrderBy(f => f.DataScope)) { string dataScope = role.DataScope; if (DATA_SCOPE_ALL.Equals(dataScope))//所有权限 @@ -107,19 +106,14 @@ namespace ZR.Admin.WebApi.Extensions } else if (DATA_SCOPE_CUSTOM.Equals(dataScope))//自定数据权限 { - //有问题 - //var roleDepts = db0.Queryable() - //.Where(f => f.RoleId == role.RoleId).Select(f => f.DeptId).ToList(); - //var filter1 = new TableFilterItem(it => roleDepts.Contains(it.DeptId)); - //DbScoped.SugarScope.GetConnection(0).QueryFilter.Add(filter1); + //" OR {}.dept_id IN ( SELECT dept_id FROM sys_role_dept WHERE role_id = {} ) ", deptAlias, role.getRoleId())); + var filter1 = new TableFilterItem(it => SqlFunc.Subqueryable().Where(f => f.DeptId == it.DeptId && f.RoleId == role.RoleId).Any()); + db.QueryFilter.Add(filter1); } else if (DATA_SCOPE_DEPT.Equals(dataScope))//本部门数据 { - //有问题添加后的SQL 语句 是 AND deptId = @deptId - var exp = Expressionable.Create(); - exp.Or(it => it.DeptId == user.DeptId); - var filter1 = new TableFilterItem(exp.ToExpression()); - sqlSugarClient.QueryFilter.Add(filter1); + var filter1 = new TableFilterItem(it => it.DeptId == user.DeptId); + db.QueryFilter.Add(filter1); } else if (DATA_SCOPE_DEPT_AND_CHILD.Equals(dataScope))//本部门及以下数据 { @@ -128,7 +122,7 @@ namespace ZR.Admin.WebApi.Extensions else if (DATA_SCOPE_SELF.Equals(dataScope))//仅本人数据 { var filter1 = new TableFilterItem(it => it.UserId == user.UserId, true); - sqlSugarClient.QueryFilter.Add(filter1); + db.QueryFilter.Add(filter1); } } } diff --git a/ZR.Admin.WebApi/Framework/JwtUtil.cs b/ZR.Admin.WebApi/Framework/JwtUtil.cs index 3a52795..23dbcc5 100644 --- a/ZR.Admin.WebApi/Framework/JwtUtil.cs +++ b/ZR.Admin.WebApi/Framework/JwtUtil.cs @@ -131,7 +131,7 @@ namespace ZR.Admin.WebApi.Framework { var userData = jwtToken.FirstOrDefault(x => x.Type == ClaimTypes.UserData).Value; var loginUser = JsonConvert.DeserializeObject(userData); - var permissions = (List)CacheHelper.GetCache(GlobalConstant.UserPermKEY + loginUser?.UserId); + var permissions = loginUser.Permissions;//TODO (List)CacheHelper.GetCache(GlobalConstant.UserPermKEY + loginUser?.UserId); if (loginUser?.UserName == "admin") { permissions = new List() { GlobalConstant.AdminPerm }; diff --git a/ZR.Admin.WebApi/NLog.config b/ZR.Admin.WebApi/NLog.config index dc78b69..f96caf9 100644 --- a/ZR.Admin.WebApi/NLog.config +++ b/ZR.Admin.WebApi/NLog.config @@ -57,7 +57,7 @@ - + diff --git a/ZR.Admin.WebApi/Startup.cs b/ZR.Admin.WebApi/Startup.cs index e60e549..abae759 100644 --- a/ZR.Admin.WebApi/Startup.cs +++ b/ZR.Admin.WebApi/Startup.cs @@ -123,7 +123,7 @@ namespace ZR.Admin.WebApi //2.ٿȨ app.UseAuthorization(); //session - app.UseSession(); + //app.UseSession(); // app.UseResponseCaching(); //ָ/ diff --git a/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj b/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj index 46a0cd5..af5a88c 100644 --- a/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj +++ b/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj @@ -25,7 +25,7 @@ - + diff --git a/ZR.CodeGenerator/ZR.CodeGenerator.csproj b/ZR.CodeGenerator/ZR.CodeGenerator.csproj index 228c181..a458a3d 100644 --- a/ZR.CodeGenerator/ZR.CodeGenerator.csproj +++ b/ZR.CodeGenerator/ZR.CodeGenerator.csproj @@ -12,6 +12,6 @@ - + diff --git a/ZR.Model/ZR.Model.csproj b/ZR.Model/ZR.Model.csproj index 24b784b..9678f32 100644 --- a/ZR.Model/ZR.Model.csproj +++ b/ZR.Model/ZR.Model.csproj @@ -7,7 +7,7 @@ - + diff --git a/ZR.Repository/BaseRepository.cs b/ZR.Repository/BaseRepository.cs index 48a9f49..7ffe094 100644 --- a/ZR.Repository/BaseRepository.cs +++ b/ZR.Repository/BaseRepository.cs @@ -18,18 +18,24 @@ namespace ZR.Repository public class BaseRepository : SimpleClient where T : class, new() { public ITenant itenant = null;//多租户事务 - public BaseRepository(ISqlSugarClient client = null) : base(client) + public BaseRepository(ISqlSugarClient context = null) : base(context) { //通过特性拿到ConfigId - var configId = typeof(T).GetCustomAttribute()?.configId; - if (configId != null) + //var configId = typeof(T).GetCustomAttribute()?.configId; + //if (configId != null) + //{ + // itenant = DbScoped.SugarScope;//设置租户接口 + // Context = DbScoped.SugarScope.GetConnection(configId); + //} + //else + //{ + // Context = context ?? DbScoped.SugarScope.GetConnection(1);//根据类传入的ConfigId自动选择 + //} + Context = DbScoped.SugarScope.GetConnectionWithAttr(); + itenant = DbScoped.SugarScope;//设置租户接口 + if (Context == null) { - Context = DbScoped.SugarScope.GetConnection(configId); - itenant = DbScoped.SugarScope;//设置租户接口 - } - else - { - Context = client ?? DbScoped.SugarScope.GetConnection(1);//根据类传入的ConfigId自动选择 + Context = context ?? DbScoped.SugarScope.GetConnection(1);//根据类传入的ConfigId自动选择 } } diff --git a/ZR.Repository/ZR.Repository.csproj b/ZR.Repository/ZR.Repository.csproj index a75c968..81def63 100644 --- a/ZR.Repository/ZR.Repository.csproj +++ b/ZR.Repository/ZR.Repository.csproj @@ -14,7 +14,7 @@ - + diff --git a/ZR.Vue/src/views/system/role/index.vue b/ZR.Vue/src/views/system/role/index.vue index c6c1f79..18b0aee 100644 --- a/ZR.Vue/src/views/system/role/index.vue +++ b/ZR.Vue/src/views/system/role/index.vue @@ -203,10 +203,10 @@ export default { dictValue: '1', dictLabel: '全部' }, - // { - // dictValue: "2", - // dictLabel: "自定义", - // }, + { + dictValue: "2", + dictLabel: "自定义", + }, { dictValue: '3', dictLabel: '本部门'