Эх сурвалжийг харах

😁添加根节点机构时,删除具有全部数据角色的用户机构缓存

zuohuaijun 2 жил өмнө
parent
commit
4d4df41a29

+ 1 - 1
Admin.NET/Admin.NET.Core/Service/Enum/SysEnumService.cs

@@ -30,7 +30,7 @@ public class SysEnumService : IDynamicApiController, ITransient
     [DisplayName("获取所有枚举类型")]
     public List<EnumTypeOutput> GetEnumTypeList()
     {
-        var enumTypeList = App.EffectiveTypes.Where(u => u.IsEnum && _enumOptions.EntityAssemblyNames.Contains(u.Assembly.GetName().Name)).OrderBy( u => u.Name).ToList();
+        var enumTypeList = App.EffectiveTypes.Where(u => u.IsEnum && _enumOptions.EntityAssemblyNames.Contains(u.Assembly.GetName().Name)).OrderBy(u => u.Name).ToList();
 
         var result = new List<EnumTypeOutput>();
         foreach (var item in enumTypeList)

+ 1 - 1
Admin.NET/Admin.NET.Core/Service/Message/SysEmailService.cs

@@ -50,5 +50,5 @@ public class SysEmailService : IDynamicApiController, ITransient
         client.Disconnect(true);
 
         await Task.CompletedTask;
-    }    
+    }
 }

+ 16 - 6
Admin.NET/Admin.NET.Core/Service/Org/SysOrgService.cs

@@ -122,7 +122,9 @@ public class SysOrgService : IDynamicApiController, ITransient
         // 删除与此父机构有关的用户机构缓存
         var pOrg = await _sysOrgRep.GetFirstAsync(u => u.Id == input.Pid);
         if (pOrg != null)
-            DeleteUserOrgCache(pOrg.Id, pOrg.Pid);
+            DeleteAllUserOrgCache(pOrg.Id, pOrg.Pid);
+        else
+            DeleteAllUserOrgCache(0, 0);
 
         var newOrg = await _sysOrgRep.AsInsertable(input.Adapt<SysOrg>()).ExecuteReturnEntityAsync();
         return newOrg.Id;
@@ -151,7 +153,7 @@ public class SysOrgService : IDynamicApiController, ITransient
             if (sysOrg != null && sysOrg.Pid != input.Pid)
             {
                 // 删除与此机构、新父机构有关的用户机构缓存
-                DeleteUserOrgCache(sysOrg.Id, input.Pid);
+                DeleteAllUserOrgCache(sysOrg.Id, input.Pid);
             }
         }
         if (input.Id == input.Pid)
@@ -224,7 +226,7 @@ public class SysOrgService : IDynamicApiController, ITransient
             throw Oops.Oh(ErrorCodeEnum.D2007);
 
         // 删除与此机构、父机构有关的用户机构缓存
-        DeleteUserOrgCache(sysOrg.Id, sysOrg.Pid);
+        DeleteAllUserOrgCache(sysOrg.Id, sysOrg.Pid);
 
         // 级联删除机构子节点
         await _sysOrgRep.DeleteAsync(u => childOrgIdList.Contains(u.Id));
@@ -241,7 +243,7 @@ public class SysOrgService : IDynamicApiController, ITransient
     /// </summary>
     /// <param name="orgId"></param>
     /// <param name="orgPid"></param>
-    private void DeleteUserOrgCache(long orgId, long orgPid)
+    private void DeleteAllUserOrgCache(long orgId, long orgPid)
     {
         var userOrgKeyList = _sysCacheService.GetKeysByPrefixKey(CacheConst.KeyUserOrg);
         if (userOrgKeyList != null && userOrgKeyList.Count > 0)
@@ -249,11 +251,19 @@ public class SysOrgService : IDynamicApiController, ITransient
             foreach (var userOrgKey in userOrgKeyList)
             {
                 var userOrgs = _sysCacheService.Get<List<long>>(userOrgKey);
+                var userId = long.Parse(userOrgKey.Substring(CacheConst.KeyUserOrg));
                 if (userOrgs.Contains(orgId) || userOrgs.Contains(orgPid))
                 {
-                    var userId = long.Parse(userOrgKey.Substring(CacheConst.KeyUserOrg));
                     SqlSugarFilter.DeleteUserOrgCache(userId, _sysOrgRep.Context.CurrentConnectionConfig.ConfigId.ToString());
                 }
+                if (orgPid == 0)
+                {
+                    var dataScope = _sysCacheService.Get<int>($"{CacheConst.KeyRoleMaxDataScope}{userId}");
+                    if (dataScope == (int)DataScopeEnum.All)
+                    {
+                        SqlSugarFilter.DeleteUserOrgCache(userId, _sysOrgRep.Context.CurrentConnectionConfig.ConfigId.ToString());
+                    }
+                }
             }
         }
     }
@@ -272,7 +282,7 @@ public class SysOrgService : IDynamicApiController, ITransient
         var orgIdList = _sysCacheService.Get<List<long>>($"{CacheConst.KeyUserOrg}{userId}"); // 取缓存
         if (orgIdList == null || orgIdList.Count < 1)
         {
-            // 本人建机构集合
+            // 本人建机构集合
             var orgList0 = await _sysOrgRep.AsQueryable().Where(u => u.CreateUserId == userId).Select(u => u.Id).ToListAsync();
             // 扩展机构集合
             var orgList1 = await _sysUserExtOrgService.GetUserExtOrgList(userId);

+ 2 - 2
Web/src/views/system/org/index.vue

@@ -33,7 +33,7 @@
 
 				<el-card class="full-table" shadow="hover" style="margin-top: 8px">
 					<el-table :data="state.orgData" style="width: 100%" v-loading="state.loading" row-key="id" default-expand-all :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" border>
-						<el-table-column prop="name" label="机构名称" header-align="center" show-overflow-tooltip />
+						<el-table-column prop="name" label="机构名称" minWidth="160" header-align="center" show-overflow-tooltip />
 						<el-table-column prop="code" label="机构编码" align="center" show-overflow-tooltip />
 						<el-table-column prop="level" label="级别" width="70" align="center" show-overflow-tooltip />
 						<el-table-column prop="type" label="机构类型" align="center" :formatter="dictFormatter" show-overflow-tooltip />
@@ -44,7 +44,7 @@
 								<el-tag type="danger" v-else>禁用</el-tag>
 							</template>
 						</el-table-column>
-						<el-table-column prop="createTime" label="修改时间" align="center" show-overflow-tooltip />
+						<el-table-column prop="createTime" label="修改时间" minWidth="120" align="center" show-overflow-tooltip />
 						<el-table-column prop="remark" label="备注" header-align="center" show-overflow-tooltip />
 						<el-table-column label="操作" width="140" fixed="right" align="center" show-overflow-tooltip>
 							<template #default="scope">